★★★ 本文源自AlStudio社区精品项目,【点击此处】查看更多精品内容 >>>
一、赛题背景
交通场景中高性能的图像检索能力对于交通执法、治安治理具有十分重要的作用,传统的图像检索方式通常使用先对图像进行属性识别再通过与期望属性的对比实现检索能力。随着多模态大模型技术的发展,文本与图像的表征统一和模态转换已有广泛应用,使用该能力可以进一步提升图像检索的精度和灵活性。
二、数据分析
本次比赛的数据集可分为两类,车和人。且每个数据对除了文本和图像外,还提供了label标签可以帮助训练。其中车的label仍然是文本,而人的label为多标签分类的标签。
三、模型设计
选用预训练模型vit_huge_patch14_224_clip_laion2b用作图片的Embeddings,选用预训练模型all-mpnet-base-v2用作文本的Embeddings,添加全连接Head, 微调模型。
模型:
四、训练细节
为了获得更好的精度且更加稳定的训练,对不同的预训练模型和Head采用不同的学习率。
为了不丢失大模型预训练权重本身重要的信息,它的学习率将设置的更小。而head学习率将设置的更大。
本次调参主要采用手动调整的方式。
训练大致分为两阶段:
第一阶段对全部数据进行训练,
第一步:head_lr = 1e-3,image_encoder_lr = 5e-6,text_encoder_lr = 1e-6,weight_decay = 1e-3,dropout = 0.1,训练epochs = 15。
第二步:head_lr = 1e-4,image_encoder_lr = 1e-7,text_encoder_lr = 1e-7,weight_decay = 1e-2,dropout = 0.2,训练epochs = 3。
第三步:head_lr = 1e-5,image_encoder_lr = 1e-8,text_encoder_lr = 1e-8,weight_decay = 1e-1,dropout = 0.2,训练epochs = 1。
此时测试精度达到0.72。
第二阶段添加多标签分类Head,仅对person数据进行训练,
第一步:head_lr = 1e-4,cls_lr = 1e-3, image_encoder_lr = 1e-7,text_encoder_lr = 1e-7,weight_decay = 1e-1,dropout = 0.2,训练epochs = 5。
第二步:head_lr = 5e-5,cls_lr = 1e-4, image_encoder_lr = 5e-8,text_encoder_lr = 5e-8,weight_decay = 1,dropout = 0.9,训练epochs = 1。
此时测试精度达到0.727。
五、测试细节
测试同demo。
六、文件
work/train1.py:第一阶段训练代码
work/train2.py:第二阶段训练代码
work/infer_json.py:测试代码
work/infer_json_final.json:最终生成结果文件
work/nohup_log/*:不同阶段训练过程的log文件。
data/data218629/model_best1_only.pt: 第一阶段训练的最优权重(仅权重)。
data/data218629/model_best2_only.pt:第二阶段最终的最优权重(仅权重)。
data/data218629/model_best2.pt:第二阶段最终的最优模型(权重+模型结构)。
七、总结:
据了解数据集有较多的噪声,对数据集做一些清洗处理应该可以进一步提升分数。
另外最开始没有使用label数据,使用label时已经有点晚了,且还没有能有效地利用car的label数据,算是一个小小的遗憾。
八、代码运行:
# 查看当前挂载的数据集目录, 该目录下的变更重启环境后会自动还原
# View dataset directory.
# This directory will be recovered automatically after resetting environment.
!ls /home/aistudio/data
!ls /home/aistudio/data/data203278
# 解压数据
!cd /home/aistudio/data/data203278 && pwd && tar xf train.tar && tar xf val.tar && tar xf test.tar
!ls /home/aistudio/data/data203278
# 配置环境
#!cd /home/aistudio/CVPR2023_foundation_model_Track2-main/OneForAll && pwd && pip install -r requirements.txt
!pip install /home/aistudio/data/data218629/torch-1.11.0-cp37-cp37m-manylinux1_x86_64.whl
!cd /home/aistudio/work && pwd && pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# Track2 生成结果文件
!cd /home/aistudio/work && pwd && python infer_json.py
# Track2 模型训练 step1 所有数据训练。 由于下载预训练模型较慢,故从本地数据集上加载初始的预训练权重。
!cd /home/aistudio/work && pwd && python train1.py
# Track2 模型训练 step2 加上person多标签分类损失训练
!cd /home/aistudio/work && pwd && python train2.py
请点击此处查看本环境基本用法.
Please click here for more detailed instructions.
此文章为搬运
原项目链接