项目简介
本项目基于PaddlePaddle深度学习框架实现ERNIE-ViL模型,用于处理视觉-语言联合任务。ERNIE-ViL是融合场景图知识的视觉-语言预训练模型,通过引入结构化知识,能更精细刻画视觉-语言模态间细粒度语义的对齐,获得更好的视觉-语言联合表示。
项目的主要特性和功能
- 模型架构:采用ERNIE-ViL模型架构,通过场景图预训练任务(物体预测、属性预测、关系预测)提升视觉-语言模态的表示能力。
- 多任务学习:支持PMR(Premise-based Multimodal Reasoning)等多任务学习,可在多个任务上共享模型参数,提高模型泛化能力。
- 数据读取器:提供针对Flickr、RefCOCO+、VQA等多种数据集的数据读取器,方便处理不同格式的数据。
- 模型微调:支持对ERNIE-ViL模型进行微调,以适应不同的下游任务,如PMR任务。
- 评估工具:提供评估工具,用于计算图像检索和文本检索的召回率和平均排名,评估模型性能。
安装使用步骤
环境准备
- 安装PaddlePaddle深度学习框架。
- 安装项目依赖的其他库,如
nltk
、numpy
、scipy
、opencv-python
、paddlepaddle-gpu
等。
数据准备
- 下载PMR数据集并解压到
./data
文件夹下。 - 下载
ernie_large
文件夹并放置在项目根目录下。 - 创建必要的文件夹结构:
bash mkdir -pv PMR/output_pmr_tv mkdir -pv PMR/result_pmr_tv
模型训练
使用Bottom-Up-Attention生成图片特征后,执行以下命令进行PMR任务的训练:
bash
python finetune.py
--use_cuda True --is_distributed False --use_fast_executor true --nccl_comm_num 1 --batch_size 48 --do_train True --do_test False --task_name pmr --vocab_path ernie-large/vocab.txt --task_group_json ./conf/pmr/task_pmr.json --lr_scheduler manual_warmup_decay --decay_steps 13308;19962 --lr_decay_ratio 0.1
--layer_decay_rate 0.0 --text_init_layers 18 --n_layers 30 --margin 0.3 --num_train_steps 26640 --checkpoints ./PMR/output_pmr_ot --save_steps 3330 --init_checkpoint ernie-large/params --ernie_config_path ernie-large/ernie_vil.large.json --learning_rate 2e-5 --warmup_steps 6654 --weight_decay 0.01 --max_seq_len 50
模型预测
- 基于已经训练的模型,执行以下命令测试PMR的效果:
bash python finetune.py --use_cuda True --use_fast_executor true --batch_size 48 --do_train False --do_test True --task_name pmr --test_split test --vocab_path ernie-large/vocab.txt --task_group_json ./conf/pmr/test_pmr.json --init_checkpoint ./PMR/output_pmr_tv/step_13320 --ernie_config_path ernie-large/ernie_vil.large.json --max_seq_len 50 --skip_steps 10 --result_file ./PMR/result_pmr_test/13320.txt
- 运行
read_txt.py
生成规范格式预测文件test_ori_without_label_result.jsonl
。
通过以上步骤,可成功使用本项目进行ERNIE-ViL模型的训练和预测。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】