InternVideo下游任务部署指南:视频检索、时序定位与视觉语言导航六大场景
【免费下载链接】InternVideo[ECCV2024] Video Foundation Models & Data for Multimodal Understanding项目地址: https://gitcode.com/OpenGVLab/InternVideo
InternVideo 是上海 AI Lab 开源的视频基础模型(ECCV 2024),除了强大的预训练能力,仓库中还内置了6 大下游任务部署方案:视频-文本检索、时序动作定位、时空动作定位、视觉语言导航、开放集动作识别与多模态问答。本文将手把手带你了解每个场景的用途、数据准备与一键运行脚本,帮助新手快速上手 InternVideo 视频检索与时序定位实战。
一、部署前准备:环境与仓库获取
所有下游代码位于InternVideo1/Downstream/目录下,共 6 个子项目。先克隆仓库:
git clone https://gitcode.com/OpenGVLab/InternVideo通用环境要点(各子项目略有差异):
| 项目 | Python | PyTorch | 其他依赖 |
|---|---|---|---|
| 视频-文本检索 | 3.6.9 | 1.8.1 + CUDA 11.1 | 基于 CLIP4Clip |
| 时序动作定位 | 3.7+ | 1.8.0 + CUDA 11.1 | 编译 C++ 扩展,见 INSTALL.md |
| 时空动作定位 | 3.6+ | 1.8.0 / 1.11.0 | timm、deepspeed、decord |
| 视觉语言导航 | 3.6 | - | Habitat Simulator、Habitat-lab、CLIP |
💡 建议用 Conda 为每个任务单独建环境,避免依赖冲突。
二、视频-文本检索:MSRVTT 上 37.5% R@1 的零样本部署
📁 代码位置:Video-Text-Retrieval/
这是 InternVideo 最经典的下游任务:给定一段文字描述找到对应视频(或反向)。仓库提供6 个数据集(MSRVTT、MSVD、LSMDC、ActivityNet、DiDeMo、VATEX)的零样本评测与全量微调两套脚本。
部署三步走:
- 准备数据:下载数据集与标注文件,解压到
data/目录; - 可选预处理:用 compress_video.py 将视频压缩到 3fps、宽 224,大幅节省磁盘;
- 一键评测/微调:
# 零样本评测(以 MSRVTT 为例) ./zeroshot_scripts/eval_msrvtt.sh # 微调 InternVideo 检索模型 ./finetune_scripts/train_msrvtt.sh微调后的模型在 MSRVTT 视频到文本检索上R@1 达到 57.9,远超零样本的 37.5。评测入口为 main_task_retrieval.py,指标计算见 metrics.py。
三、时序动作定位:找到视频里"动作发生的时间段"
📁 代码位置:Temporal-Action-Localization/
时序动作定位(TAL)要回答的问题是:"这个人什么时候在游泳?"InternVideo 使用 ViT-H 主干 + ActionFormer 头部,在 4 个基准上全面领先:
| 数据集 | THUMOS-14 | ActivityNet | HACS | FineAction |
|---|---|---|---|---|
| 之前最佳方法 | 66.80 | 36.60 | 38.71 | 13.24 |
| InternVideo | 71.58 | 39.00 | 41.32 | 17.57 |
部署步骤:
- 按 INSTALL.md 安装依赖并编译代码;
- 下载各数据集特征(含预提取特征与标注),解压到
./data; - 训练与评测只需一行命令,配置文件在 configs/ 目录:
bash th14_run.sh # THUMOS-14 bash anet_run.sh # ActivityNet-v1.3 bash hacs_run.sh # HACS bash fa_run.sh # FineAction训练入口为 train_eval.py,实验配置与权重会保存在./ckpt目录。
四、时空动作定位:AVA 数据集上同时定位"哪里 + 何时"
📁 代码位置:Spatial-Temporal-Action-Localization/
如果说时序定位只关心"何时",那么时空动作定位(STAL)还要同时框出"哪里"——即在视频帧中定位正在执行动作的人物。该项目整合了 VideoMAE 与 AlphAction 两套代码:
环境搭建推荐使用 Anaconda:
conda create -n VideoMAE_ava python=3.7 conda activate VideoMAE_ava pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 conda install av -c conda-forge训练/评测:数据准备遵循 AlphAction 的 AVA2.2 规范,训练入口为 run_class_finetuning.py,使用--data_set "ava-kinetics" --enable_deepspeed参数启动 8 卡分布式训练。模型定义见 modeling_finetune.py。
五、视觉语言导航:让机器人听懂"往左走进厨房"
📁 代码位置:Visual-Language-Navigation/
视觉语言导航(VLN-CE)要求智能体在 Matterport3D 三维家居场景中,根据自然语言指令(如 R2R、RxR 数据集)行走到目标位置,是具身智能的核心任务。
部署四步:
- 安装 Habitat Simulator 与 Habitat-lab(Python 3.6),并安装 CLIP;
- 下载 Matterport3D 场景数据,放到
data/scene_datasets/mp3d/; - 下载预处理后的 VLN-CE 数据集到
data/datasets,权重文件放到pretrained/(含 6 个子目录); - 运行脚本:
bash eval_cma_r2r.bash # 评测(脚本见 run/ 目录) bash train.bash # 训练(6 卡)各数据集的超参配置在 exp/ 目录(如 cma_r2r.yaml),模型实现位于vlnce_baselines/models/。
六、开放集动作识别:识别没见过的动作类别
📁 代码位置:Open-Set-Action-Recognition/
传统动作识别只认识训练时见过的类别,而开放集识别(OSAR)要求模型能察觉"这是训练集外的未知动作"并正确拒绝。该项目基于 MMAction2 开发,从证据深度学习(EDL)视角在 UCF-101 上微调 VideoMAE 主干,以 HMDB-51 / MiT-v2 为未知类。
测试结果(HMDB / MiT 未知集 AUC):
| 模型 | Open Set AUC | Closed Set ACC |
|---|---|---|
| SlowFast + DEAR | 82.94 / 86.99 | 96.48 |
| InternVideo-H + EDL | 85.48 / 91.85 | 97.89 |
评测流程分三步:先用run_get_mae_threshold.sh获取不确定性阈值,再跑 OOD 检测,最后计算 AUROC。训练入口脚本在 experiments/mae/ 目录,配置示例见 finetune_ucf101_mae_edlnokl.py。
七、多模态下游:零样本动作识别与视频问答
📁 代码位置:multi-modalities-downstream/
最后这个子项目基于 All-In-One 框架,覆盖三类多模态任务:
| 任务 | 数据/模型 | 入口脚本 | 代表结果 |
|---|---|---|---|
| 零样本动作识别 | K400 | scripts/zs_classify.sh | K400 56.65(B/16) |
| 零样本多选题 | MSRVTT / LSMDC | scripts/zs_choice_msrvtt.sh | MSRVTT 91.31 |
| 视频问答 | MSRVTT / MSVD / TGIF | scripts/finetune_msrvttqa.sh | MSRVTT 44.58 |
只需下载 InternVideo-MM-B-16 检查点与原始 CLIP ViT-B-16 权重,修改脚本中的模型路径即可运行。数据加载器在 datasets/ 目录,入口为 run.py。
八、总结与常见问题
六大场景速查表:
| 场景 | 一句话定位 | 核心脚本/配置 |
|---|---|---|
| 视频-文本检索 | 以文搜视频、以视频搜文 | zeroshot_scripts/、finetune_scripts/ |
| 时序动作定位 | 找动作发生的时间段 | th14_run.sh等 4 个脚本 |
| 时空动作定位 | 同时定位时间与空间框 | run_class_finetuning.py |
| 视觉语言导航 | 3D 场景中按指令行走 | train.bash、eval_*.bash |
| 开放集动作识别 | 识别并拒绝未知类别 | experiments/mae/ |
| 多模态下游 | 零样本识别与视频问答 | scripts/zs_*.sh |
新手常见坑:
- 🐢磁盘不足:视频任务请先用压缩脚本预处理视频,或只下载所需的单个数据集;
- ⚡版本敏感:PyTorch/torchvision 版本对复现结果影响很大,严格按各项目 README 版本安装;
- 📦权重下载:各任务预训练权重在对应 README 中给出下载入口,注意解压目录结构需与文档一致。
InternVideo 的下游代码组织清晰、脚本化程度高,只要数据与权重就位,几乎每个任务都能"一条命令"跑通。建议新手从视频-文本检索的零样本评测入手,再逐步尝试时序定位等更复杂的场景。
【免费下载链接】InternVideo[ECCV2024] Video Foundation Models & Data for Multimodal Understanding项目地址: https://gitcode.com/OpenGVLab/InternVideo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考