基于paddle框架的ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks实现
本项目使用paddle框架复现ViLBERT模型。该模型包含两个并行的流,分别用于编码visual和language,并且加入了 co-attention transformer layer 来增强两者之间的交互,得到 pretrained model。作者在多个 vision-language 任务上得到了多个点的提升。
注: AI Studio项目地址: https://aistudio.baidu.com/aistudio/projectdetail/2609611.
您可以使用AI Studio平台在线运行该项目!
论文:
- [1] J. Lu, D. Batra, D. Parikh, S. Lee, "ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks", NIPS, 2019.
参考项目:
- vilbert-multi-task [官方实现]
所有指标均为模型在RefCOCO+的验证集评估而得
指标 | 原论文 | 复现精度 |
---|---|---|
Acc | 72.34 | 72.71 |
本项目所使用的数据集为RefCOCO+。该数据集共包含来自19,992张图像的49,856个目标对象,共计141,565条指代表达。本项目使用作者提供的预提取的bottom-up
特征,可以从这里下载得到(我们提供了脚本下载该数据集以及图像特征,见download_dataset.sh)。
-
硬件:CPU、GPU
-
软件:
- Python 3.8
- PaddlePaddle == 2.1.0
# clone this repo
git clone https://github.com/fuqianya/ViLBERT-Paddle.git
cd ViLBERT-Paddle
pip install -r requirements.txt
# 下载数据集
bash ./download_dataset.sh
# 下载paddle格式的预训练模型
# 放于checkpoints/bert_base_6_layer_6_connect_freeze_0下
# 下载链接: https://drive.google.com/file/d/1QMJz5anz_git8NFThUgacOBgYti_of4g/view?usp=sharing
# 编译REFER
cd pyutils/refer && make
cd ..
python train.py --gradient_accumulation_steps 1
Change gradient_accumulation_steps
to adapt your GPU memory.
python eval.py --from_pretrained ./checkpoints/refcoco+_bert_base_6layer_6conect-pretrained/paddle_model_19.pdparams
模型下载: 谷歌云盘
将下载的模型权重以及训练信息放到checkpoints/refcoco+_bert_base_6layer_6conect-pretrained
目录下, 运行step5
的指令进行测试。
├── checkpoints # 存储训练的模型
├── config # 配置文件
├── data # 预处理的数据
├── model
│ └── vilbert.py # 模型
│ └── rec_dataset.py # 加载数据集
│ └── optimization.py # 定义优化器
├── result # 存放预测结果
├── pyutils
│ └── refer # REFER
├── utils
│ └── io.py # io工具
│ └── eval_utils.py # 测试工具
│ └── utils.py # 其他工具
├── download_dataset.sh # 数据集下载脚本
├── train.py # 训练主函数
├── eval.py # 测试主函数
└── requirement.txt # 依赖包
关于模型的其他信息,可以参考下表:
信息 | 说明 |
---|---|
发布者 | fuqianya |
时间 | 2021.08 |
框架版本 | Paddle 2.1.0 |
应用场景 | 多模态 |
支持硬件 | GPU、CPU |
下载链接 | 预训练模型 | 训练日志 |