基于paddle框架的Oscar: Object-Semantics Aligned Pre-training for Vision-Language Tasks实现
本项目使用paddle框架复现Oscar模型。该模型借助目标类别Object Tags
来实现更好的视觉和文本的跨模态对齐。作者引入Object Tags
并基于此提出了两个损失函数进行大规模的预训练,使得能够学习到文本和图像区域的语义对齐表征。实验表明,作者在多个 vision-language 任务上得到了有效的提升。
**注: **
AI Studio多卡项目地址: https://aistudio.baidu.com/aistudio/clusterprojectdetail/3377920.
AI Studio单卡项目地址: https://aistudio.baidu.com/aistudio/projectdetail/3395242.
您可以使用AI Studio平台在线运行该项目!
论文:
- [1] X. Li, X. Yin, C. Li, and et. al, "Oscar: Object-Semantics Aligned Pre-training for Vision-Language Tasks", ECCV, 2020.
参考项目:
- Oscar [官方实现]
本项目验证其在图文检索
Image-Text Retrieval
下游任务中的性能,所使用的数据集为COCO2014,复现精度如下(参考原论文Table 2)。
Text Retrieval | Image Retrieval | |||||
R@1 | R@5 | R@10 | R@1 | R@5 | R@10 | |
原论文 | 89.8 | 98.8 | 99.7 | 78.2 | 95.8 | 98.3 |
复现精度 | 90.4 | 98.5 | 99.8 | 78.1 | 96.2 | 98.2 |
本项目所使用的数据集为COCO2014。该数据集共包含123287张图像,每张图像对应5个标题。训练集、验证集和测试集分别为113287、5000、5000张图像及其对应的标题。本项目使用预提取的bottom-up
特征,可以从这里下载得到。
-
硬件:CPU、GPU
-
软件:
- Python 3.7
- PaddlePaddle-GPU == 2.2.1
- PaddleNLP==2.2.1
# clone this repo
git clone https://github.com/cattidea/Oscar-Paddle.git
cd Oscar-Paddle
pip install -r requirements.txt
# 相关数据集已上传至Aistudio
# 详情见: https://aistudio.baidu.com/aistudio/datasetdetail/124153
# paddle格式的预训练权重也已上传至Aistudio
# 详情见: https://aistudio.baidu.com/aistudio/datasetdetail/124186
# 下载或挂载数据集和预训练权重之后
# 需要修改配置文件(configs/retrieval_train.yaml和configs/retrieval_test.yaml)
# 的一些参数: DATA_DIR (数据集目录), PRETRAINED-DIR (预训练权重路径)
export PYTHONPATH=$PWD:$PYTHONPATH
CUDA_VISIBLE_DEVICES='0, 1, 2, 3' python -m paddle.distributed.launch tools/train_retrieval.py --cfg_file configs/retrieval_train.yaml
# 测试之前,需要在configs/retrieval_test.yaml中指定测试的模型 (即修改EVAL-CHECKPOINT_DIR参数).
python tools/eval_retrieval.py --cfg_file configs/retrieval_test.yaml
# 下载训练好的模型权重
# https://aistudio.baidu.com/aistudio/datasetdetail/124760
# 执行Step5进行测试
├── config # 默认配置文件夹
│ └── default.py # 默认配置参数
├── configs # 指定配置文件夹
│ └── retrieval_train.yaml # 训练配置文件
│ └── retrieval_test.yaml # 测试配置文件
├── datasets
│ └── retrieval_dataset.py # 数据加载
├── models
│ └── bert.py # bert模型
│ └── oscar.py # oscar模型
├── solvers
│ └── optimizer.py # 优化器
│ └── scheduler.py # 学习率策略
├── tests # 测试文件
├── tools
│ └── train_retrieval.py # 训练脚本
│ └── eval_retrieval.py # 测试脚本
└── requirement.txt # 依赖包
关于模型的其他信息,可以参考下表:
信息 | 说明 |
---|---|
发布者 | fuqianya |
时间 | 2022.01 |
框架版本 | Paddle 2.2.1 |
应用场景 | 多模态 |
支持硬件 | GPU、CPU |
下载链接 | 预训练模型 | 训练日志 |