复现InternVideo2-Stage2_6B下游基准:MSRVTT/DiDeMo/ANET等15+训练配置完整解读

【免费下载链接】InternVideo2-Stage2_6B

项目地址: https://ai.gitcode.com/OpenGVLab/InternVideo2-Stage2_6B
点击查看 免费下载

🎬 想复现 InternVideo2-Stage2_6B 在 MSRVTT、DiDeMo、ANET 等视频理解下游基准上的训练与评测,却不知道从哪下手?这个仓库把论文中 Stage 2 阶段的 6B 参数模型权重与 15+ 份下游训练配置 全部开源在 configs/ 目录下。本文将带你逐份解读这些训练配置的核心差异,帮你快速搭建自己的视频检索、视频问答(VQA)复现实验。

一、项目速览:仓库里有什么?

文件/目录作用
modeling_internvideo2.py模型主体:视觉编码器、时间建模、跨模态注意力,以及 retrieve_text、vid2tensor 等推理工具函数
config.jsonHugging Face 风格的模型配置,定义了 auto_map,支持 trust_remote_code=True 加载
demo.py官方推理示例:给一段视频和 5 条候选文本,输出文本检索结果与视频特征
configs/pretrain.py所有下游配置的公共基础:模型结构、优化器、调度器、评估设置
configs/model.py视觉/文本编码器注册表:BEiT 系列 + BERT/MED-BERT 系列
model-00001~00013-of-00013.safetensors6B 模型权重分片(共 13 个)
README.md安装说明与最简推理示例

模型代码中,PretrainInternVideo2 类(modeling_internvideo2.py)负责前向与预训练逻辑,InternVideo2_Stage2 类(modeling_internvideo2.py)则是面向 Hugging Face AutoModel 的封装入口。

二、配置体系总览:先读懂 pretrain.py 基础模板

所有下游配置都遵循同一个套路:from .pretrain import * 继承全部基础设置,再局部覆写少量关键参数。因此读懂 configs/pretrain.py 就掌握了 80% 的内容:

  • 模型结构(configs/pretrain.py):
    • 视觉编码器:beit(BEiT-base,d_model=768),可切换 beit_large
    • 文本编码器:bert(bert-base-uncased,融合层 fusion_layer=9)
    • 时间建模:timesformer 结构,temporal_model_position="last",即在视觉 Transformer 尾部堆叠时间注意力块
    • 多模态投影维度 embed_dim=256,对比学习温度 temp=0.07
  • 损失权重(configs/pretrain.py):vtc(视频-文本对比)、mlm(掩码语言建模)、vtm(视频-文本匹配)、mvm,权重为 0 即关闭
  • 优化与训练:AdamW(lr=1e-4)、cosine 调度 10 个 epoch、fp16 + gradient_checkpointing 省显存
  • 评估设置:eval_frame_ensemble="concat"、k_test=128、eval_offload=True 将 GPU 张量卸载到 CPU 以节省显存

💡 复现小技巧:下游微调时几乎都会把 optimizer["lr"] 从 1e-4 降到 1e-5,这是 6B 大模型微调的标准做法,避免大学习率破坏预训练权重。

三、VQA 基准配置:MSRVTT-QA / ANET-QA / TVQA

视频问答类配置共享同一个中间模板 configs/qa.py:

  • 关闭 mlm 损失(loss_weight["mlm"] = 0.0),因为问答任务不需要掩码重建
  • num_frames = 12(比预训练的 4 帧更密)、batch_size = 32、max_txt_l = 32
  • 问答专用参数:eos = "[SEP]"、max_q_len = 25、max_a_len = 5(答案最长 5 个 token)

在此之上,各数据集只改写数据路径与答案词表:

配置文件数据集数据目录特点
configs/qa_msrvtt.pyMSRVTT-QAmsrvtt_2fps_2242fps 抽帧、224 分辨率
configs/qa_anet.pyANET-QAactivity_net_2fps_360360p 短片段
configs/tvqa.pyTVQAtvqa_trimmed_3fps3fps 抽帧、max_txt_l=150(选项较长)、单独跑 10 个 epoch

三个配置都用 stop_key = "val" 在验证集上挑选最优 checkpoint(见 configs/qa_msrvtt.py)。

四、检索基准配置:MSRVTT / DiDeMo / ANET / COCO / Flickr / SSV2

检索任务是 InternVideo2 的主战场,共 9 份配置。核心变量只有三个:是否段落检索(is_paragraph_retrieval)、最大文本长度(max_txt_l)、帧数与批大小。

4.1 短视频检索:MSRVTT 家族

  • configs/ret_msrvtt.py:7k 训练 / 1k 测试,单句检索(is_paragraph_retrieval=False),max_txt_l=32,仅训 5 个 epoch 且 warmup=0
  • configs/ret_msrvtt_9k.py:只改了一行——把训练集换成 msrvtt_ret_train9k.json,其余全部继承,非常适合做消融实验模板
  • configs/ret_msrvtt_mc.py:把测试集换成 mc_test(多选评测协议),stop_key=None 表示不挑最优、直接保存最后一个 checkpoint

4.2 长视频/段落检索:DiDeMo 与 ANET

配置段落检索max_txt_l数据规模说明
configs/ret_didemo.py✅64didemo_2fps_360_trimed30文本是完整段落,按 val 指标选优
configs/ret_anet.py✅64activity_net_2fps_360同上,测试集为 anet_ret_val_1.json

两者相比 MSRVTT,max_txt_l 从 32 提到 64,正是为了容纳段落级描述;num_frames=12 与 VQA 保持一致。

4.3 图像检索:COCO / Flickr30k

configs/ret_coco.py 和 configs/ret_flickr.py 是"视频模型做图像检索"的极简配置,关键差异一目了然:

  • num_frames = 1(单帧当图像)、batch_size = 128(图像数据便宜,可大批量)
  • max_txt_l 仅 22 / 32,warmup=0,训练代价非常低,适合先跑通全流程

4.4 SSV2 大规模检索预训练

configs/ret_ssv2_label.py 与 configs/ret_ssv2_template.py 分别对应标签式和模板式两种文本构造方式:

  • 均启用 has_multi_vision_gt = True(一条文本可对应多个正确视频)
  • 学习率回调到 1e-4、epochs=10,说明它属于"大规模继续预训练"而非轻量微调
  • 验证集特意使用 *_val_small.json 小验证集,避免长视频全量评估拖慢训练

五、关键参数速查表

配置num_framesbatch_sizemax_txt_llrepochs段落检索
pretrain(基础)464321e-410-
qa(MSRVTT/ANET)1232321e-510-
tvqa12321501e-510-
ret_msrvtt1232321e-55❌
ret_didemo / ret_anet1232641e-510✅
ret_coco / ret_flickr112822/321e-510❌
ret_ssv2_label/template123225/221e-410❌

规律总结:帧数决定时间建模负担,文本长度跟随描述粒度,学习率随"微调/预训练"性质二选一——轻量微调用 1e-5,SSV2 这类大规模任务回到 1e-4。

六、跑通推理:3 步验证模型可用

在开始昂贵训练前,建议先用 demo.py 验证权重加载正常。核心流程(详见 README.md):

  1. 用 AutoModel.from_pretrained(..., trust_remote_code=True) 加载 6B 模型
  2. 调用 vid2tensor 把视频转成 4 帧张量,再经 model.get_vid_feat 提取视频特征
  3. 调用 retrieve_text 在候选文本中做 Top-K 检索,输出概率排序

该示例基于仓库自带的 example1.mp4,无需任何外部数据即可端到端验证视觉、文本两个编码器与时间建模模块。

七、总结

  • 一套模板走天下:15+ 配置共享 configs/pretrain.py 基础,逐份 diff 只需关注 lr、num_frames、max_txt_l、is_paragraph_retrieval 与数据路径 5 个变量
  • 先图像后视频:推荐用代价最低的 configs/ret_coco.py 跑通流水线,再上 MSRVTT/DiDeMo 等视频基准
  • 微调学习率 1e-5 是默认值,只有 SSV2 这类大规模任务才回到 1e-4
  • 视觉与文本编码器可随时在 configs/model.py 中切换(如 beit_large、med_bert_fusion* 系列),无需改动训练代码

吃透这些配置后,无论是复现论文指标还是替换自有数据集做视频检索 / VQA,都能在这套配置体系里找到最接近的模板,直接继承修改即可开工。🚀

【免费下载链接】InternVideo2-Stage2_6B

项目地址: https://ai.gitcode.com/OpenGVLab/InternVideo2-Stage2_6B
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值