【免费下载链接】InternVideo2-Stage2_6B
🎬 想复现 InternVideo2-Stage2_6B 在 MSRVTT、DiDeMo、ANET 等视频理解下游基准上的训练与评测,却不知道从哪下手?这个仓库把论文中 Stage 2 阶段的 6B 参数模型权重与 15+ 份下游训练配置 全部开源在 configs/ 目录下。本文将带你逐份解读这些训练配置的核心差异,帮你快速搭建自己的视频检索、视频问答(VQA)复现实验。
一、项目速览:仓库里有什么?
| 文件/目录 | 作用 |
|---|---|
| modeling_internvideo2.py | 模型主体:视觉编码器、时间建模、跨模态注意力,以及 retrieve_text、vid2tensor 等推理工具函数 |
| config.json | Hugging 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.safetensors | 6B 模型权重分片(共 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.py | MSRVTT-QA | msrvtt_2fps_224 | 2fps 抽帧、224 分辨率 |
| configs/qa_anet.py | ANET-QA | activity_net_2fps_360 | 360p 短片段 |
| configs/tvqa.py | TVQA | tvqa_trimmed_3fps | 3fps 抽帧、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 | ✅ | 64 | didemo_2fps_360_trimed30 | 文本是完整段落,按 val 指标选优 |
| configs/ret_anet.py | ✅ | 64 | activity_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_frames | batch_size | max_txt_l | lr | epochs | 段落检索 |
|---|---|---|---|---|---|---|
| pretrain(基础) | 4 | 64 | 32 | 1e-4 | 10 | - |
| qa(MSRVTT/ANET) | 12 | 32 | 32 | 1e-5 | 10 | - |
| tvqa | 12 | 32 | 150 | 1e-5 | 10 | - |
| ret_msrvtt | 12 | 32 | 32 | 1e-5 | 5 | ❌ |
| ret_didemo / ret_anet | 12 | 32 | 64 | 1e-5 | 10 | ✅ |
| ret_coco / ret_flickr | 1 | 128 | 22/32 | 1e-5 | 10 | ❌ |
| ret_ssv2_label/template | 12 | 32 | 25/22 | 1e-4 | 10 | ❌ |
规律总结:帧数决定时间建模负担,文本长度跟随描述粒度,学习率随"微调/预训练"性质二选一——轻量微调用 1e-5,SSV2 这类大规模任务回到 1e-4。
六、跑通推理:3 步验证模型可用
在开始昂贵训练前,建议先用 demo.py 验证权重加载正常。核心流程(详见 README.md):
- 用
AutoModel.from_pretrained(..., trust_remote_code=True)加载 6B 模型 - 调用
vid2tensor把视频转成 4 帧张量,再经model.get_vid_feat提取视频特征 - 调用
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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



