Skip to content

Mixture-of-Rookie/UNITER-Paddle

Repository files navigation

UNITER-Paddle

基于paddle框架的UNITER: UNiversal Image-TExt Representation Learning实现

一、简介

本项目使用paddle框架复现UNITER模型。该模型借助目标类别Object Tags来实现更好的视觉和文本的跨模态对齐。作者引入Object Tags并基于此提出了两个损失函数进行大规模的预训练,使得能够学习到文本和图像区域的语义对齐表征。实验表明,作者在多个 vision-language 任务上得到了有效的提升。

注:

AI Studio多卡项目地址: https://aistudio.baidu.com/aistudio/clusterprojectdetail/3496916.

AI Studio单卡项目地址: https://aistudio.baidu.com/aistudio/projectdetail/3496946.

您可以使用AI Studio平台在线运行该项目!

论文:

  • [1] Y. Chen, L. Li, L. Yu, and et. al, "UNITER: UNiversal Image-TExt Representation Learning", ECCV, 2020.

参考项目:

二、复现精度

本项目验证其在图文检索Image-Text Retrieval下游任务中的性能,所使用的数据集为Flickr30K,复现精度如下。

指标 原论文 复现精度
IR-flickr30K-R1 73.66 74.02

三、数据集

本项目所使用的数据集为Flickr30k。该数据集共包含31783张图像,每张图像对应5个标题。训练集、验证集和测试集分别为29783、1000、1000张图像及其对应的标题。本项目使用预提取的bottom-up特征,可以从这里下载得到。

四、环境依赖

  • 硬件:CPU、GPU

  • 软件:

    • Python 3.7
    • PaddlePaddle-GPU == 2.2.1
    • PaddleNLP==2.2.1

五、快速开始

step1: clone

# clone this repo
git clone https://github.com/Mixture-of-Rookie/UNITER-Paddle.git
cd UNITER-Paddle

step2: 安装环境及依赖

pip install -r requirements.txt

step3: 挂载数据

# 相关数据集已上传至Aistudio
# 详情见: https://aistudio.baidu.com/aistudio/datasetdetail/128538

# paddle格式的预训练权重也已上传至Aistudio
# 详情见: https://aistudio.baidu.com/aistudio/datasetdetail/128538

# 下载或挂载数据集和预训练权重之后
# 需要修改配置文件(configs/retrieval_train.yaml和configs/retrieval_test.yaml的一些参数:
# DATA_DIR (数据集目录), FEAT_FILE (特征文件), PRETRAINED-DIR (预训练权重路径)

step4: 训练

export PYTHONPATH=$PWD:$PYTHONPATH
CUDA_VISIBLE_DEVICES='0, 1, 2, 3' python -m paddle.distributed.launch tools/finetune_retrieval.py --cfg_file configs/retrieval_train.yaml

step5: 测试

# 测试之前,需要在configs/retrieval_test.yaml中指定测试的模型 (即修改EVAL-CHECKPOINT_DIR参数).
python tools/evaluate_retrieval.py --cfg_file configs/retrieval_test.yaml

使用预训练模型进行预测

# 下载训练好的模型权重
# https://aistudio.baidu.com/aistudio/datasetdetail/129717
# 执行Step5进行测试

模型动转静导出

python tools/export_model.py --cfg_file configs/retrieval_train_lite.yaml

最终在./static/文件夹下会生成下面的3个文件:

inference_output
  |----model.pdiparams     : 模型参数文件
  |----model.pdmodel       : 模型结构文件
  |----model.pdiparams.info: 模型参数信息文件

模型推理

python deploy/inference_python/infer.py

六、TIPC

# 准备数据和环境
bash test_tipc/prepare.sh test_tipc/configs/uniter/train_infer_python.txt lite_train_lite_infer
# test tipc
bash test_tipc/test_train_inference_python.sh test_tipc/configs/uniter/train_infer_python.txt lite_train_lite_infer

Tips:

  • TIPC需安装AutoLog

  • TIPC需使用develop分支的paddlepaddle,详情见issue

七、代码结构与详细说明

├── config                    # 默认配置文件夹
│   └── default.py            # 默认配置参数
├── configs                   # 指定配置文件夹
│   └── retrieval_train.yaml  # 训练配置文件
│   └── retrieval_test.yaml   # 测试配置文件
├── datasets
│   └── retrieval_dataset.py  # 数据加载
├── models
│   └── bert.py               # bert模型
│   └── uniter.py             # uniter模型
│   └── uniter_retrieval.py   # uniter模型
├── solvers
│   └── optimizer.py          # 优化器
│   └── scheduler.py          # 学习率策略
├── tools
│   └── finetune_retrieval.py # 训练脚本
│   └── evaluate_retrieval.py # 测试脚本
└── requirement.txt           # 依赖包

八、模型信息

关于模型的其他信息,可以参考下表:

信息 说明
发布者 fuqianya
时间 2022.05
框架版本 Paddle 2.2.1
应用场景 多模态
支持硬件 GPU、CPU
下载链接 预训练模型 | 训练日志

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published