Skip to content

cattidea/VinVL-Paddle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VinVL-Paddle

基于paddle框架的VinVL: Revisiting Visual Representations in Vision-Language Models实现

一、简介

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

注:

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

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

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

论文:

  • [1] P. Zhang, X. Yin, X. Hu, and et. al, "VinVL: Revisiting Visual Representations in Vision-Language Models", CVPR, 2021.

参考项目:

二、复现精度

本项目验证其在图文检索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.6 98.0
复现精度 90.2 99.1 99.8 77.9 95.8 98.1

三、数据集

本项目所使用的数据集为COCO2014。该数据集共包含123287张图像,每张图像对应5个标题。训练集、验证集和测试集分别为113287、5000、5000张图像及其对应的标题。本项目使用预提取的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/cattidea/VinVL-Paddle.git
cd VinVL-Paddle

step2: 安装环境及依赖

pip install -r requirements.txt

step3: 挂载数据

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

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

# 下载或挂载数据集和预训练权重之后
# 需要修改配置文件(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/train_retrieval.py --cfg_file configs/retrieval_train.yaml

step5: 测试

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

使用预训练模型进行预测

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

六、 推理程序

我们提供了两种推理程序样例。两种样例都使用10张图像以及它们对应的50个标题(每张图像对应5个标题)作为检索数据库。不同的是,第一种推理程序使用了.ipynb进行展示,可以将检索结果进行可视化,详情见demo.ipynb。第二种推理程序可以指定查询的图像和文本(但需要的注意的是,查询的图像和文本必须在检索数据库中,见data/minitest_imagesdata/minitest_captions),如下所示

python tools/inference_retrieval.py --query_img 'data/minitest_images/COCO_val2014_000000028675.jpg' --query_txt 'This messy pizza is covered in cheese and mushrooms'

输出结果如下:

查询图像: data/minitest_images/COCO_val2014_000000028675.jpg
检索结果:
Top1: The motorcycle rider is cruising the street at night.
Top2: It's a cloudy night for a ride on the motorcycle.
Top3: the bike is coming down the street with his lights on
Top4: Two people ride the motorcycle on the city street.
Top5: Police on a motorcycle drive down a city street.

查询文本:
This messy pizza is covered in cheese and mushrooms
检索结果:
Top[1]: data/minitest_images/COCO_val2014_000000045057.jpg
Top[2]: data/minitest_images/COCO_val2014_000000028675.jpg
Top[3]: data/minitest_images/COCO_val2014_000000458755.jpg
Top[4]: data/minitest_images/COCO_val2014_000000213008.jpg
Top[5]: data/minitest_images/COCO_val2014_000000415746.jpg

七、代码结构与详细说明

├── 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.02
框架版本 Paddle 2.2.1
应用场景 多模态
支持硬件 GPU、CPU
下载链接 预训练模型 | 训练日志

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published