[论文笔记] InternVideo

InternVideo 论文笔记

Author: Sijin Yu

在这里插入图片描述

1. Information

标题: InternVideo: General Video Foundation Models via Generative and Discriminative Learning

arXiv URL: https://arxiv.org/abs/2212.03191

code: https://github.com/OpenGVLab/InternVideo

发布时间: 2022 年 12 月

2. Abstract

  • 基础模型最近在计算机视觉的各种下游任务中表现出优异的性能.
  • 但是, 大部分现存的视觉基础模型都只是简单地关注于图像水平的预训练, 它们缺乏在动态且复杂的视频水平上的预训练.
  • 为了填补这一空白, 我们利用生成式、判别式自监督视频模型, 提出一种通用的视觉模型, InternVideo.
  • 具体地, InternVideo 使用了 Masked Video ModelingVideo-language Contrasive Learning 为预训练目标, 并以可学习的方式有选择地协调这两个完整框架的视频表示, 以增强各种视频下游应用.
  • InternVideo 在 39 个视频数据集上达到了 SOTA, 包括视频动作识别/检测, 视频语言对齐, 开放世界视频应用. 我们的模型在 K400 和 SSV2 上分别达到了 91.1% 和 77.2% 的 top-1 准确率. 这些结果展现了 InternVideo 在视频理解上的泛化能力.

3. Model

3.1 Overview

在这里插入图片描述

  • 使用两种自监督模型, 学习视频的表达: Masked Video Reconstruction 和 Multimodal Contrastive Learning.
  • 使用 Cross Model Attention, 综合两个自监督模型的优点, 获取更好的视频表达.
  • 在下游任务中针对性有监督学习.

3.2 Masked Video Encoder

在这里插入图片描述

  • 使用 VideoMAE 作为 Encoder, ViT 作为 Decoder.

  • Decoder 的通道数是 Encoder 的一半, 默认有四个 blocks.

  • 对于一个被 masked 的视频输入:

    • 在时间上下采样, 降低帧数.

    • 将视频在时间上分组, 分成不重叠的 3D patches 块.

    • 每个 3D patch 被线性映射到一个 cube embedding (立方体嵌入). [⚠️注: cube embedding 是一个拥有三个维度的 embedding.]

    • 对这些 cube embedding, 使用 tube masking, [⚠️注: 这是一种掩盖或遮挡部分嵌入值的方法, 只保留其中的一部分信息.] 使用高 masked 率 (如 90%).

3.3 Multimodal Video Encoder

在这里插入图片描述

  • 使用 UniFormerV2 做 Video Encoder. [⚠️注: UniFormerV2 可见我的博客: 点击访问 UniFormer & UniFormerV2 论文笔记.]
  • 使用 align-before-fuse 范式:
    • 视频和文本分别编码.
    • align (对齐) 阶段, 使用对比学习损失去对齐视频和文本的嵌入空间.
    • fuse (融合) 阶段, 使用一个 caption decoder (字幕解码器) 作为跨模态融合器.

3.4 Cross Model Attention

在这里插入图片描述

  • 只有红色部分是可训练的. 其余部分为 frozen.
  • KV 表示 key 和 value, Q 表示 query.

3.5 预训练超参数设置

下图: 预训练的超参数设置.
在这里插入图片描述

下图: 预训练使用的数据集和采样设置.

在这里插入图片描述

4. Experiment & Result

4.1 与 SOTA 的对比

下图: [Action Recongition 动作识别] 在 K400/600/700 上的对比.

在这里插入图片描述

下图: [Action Recongition 动作识别] 在 SSV1/V2, ActivityNet, HACS, HMDB51 上的对比.

在这里插入图片描述

下图: [Temporal Action Localization 时间动作定位] 在 THUMOS-14, Activitynet-v1.3, HACS, FineAction 上的对比.

在这里插入图片描述

下图: [Spatiotemporal Action Localization 时空动作定位] 在 AVA2.2, AVA-Kinetics 上的对比.

在这里插入图片描述

下图: [Video Retrieval 视频检索] 在 MSR-VTT, MSVD, LSMDC, ActivityNet, DiDeMo, VATEX 上的对比.

在这里插入图片描述

下图: [Video Question Answering 视频问答] 在 MSRVTT, MSVD, TGIF 上的对比.
在这里插入图片描述

原文还做了不少其它的下游任务, 此处略.

下图: InternVideo 在多个下游任务、多个数据集上均达到了 SOTA.

在这里插入图片描述

5. Conclusion

主要贡献:

  • 将此前的 UniFormerV2 和 VideoMAE 相结合, 设计了 Video Masked Model 和 Video-Language 对比学习.
  • 在各种下游任务取得了非常好的成绩.
<think>好的,我现在要处理用户关于InternVideo的安装、配置和使用的问题。首先,我需要确定用户的需求是什么。他们可能是一个研究人员或者开发者,想要利用InternVideo进行视频理解相关的任务,比如动作识别或视频分类。用户可能对安装过程、环境配置、基本用法以及常见问题解决感兴趣。 接下来,我需要回忆InternVideo的相关信息。InternVideo是一个基于深度学习的视频理解框架,可能依赖于PyTorch等库。安装步骤通常包括克隆代码库、安装依赖项、配置环境等。配置方面可能涉及数据集的准备、模型权重的下载以及参数调整。使用部分可能包括训练和推理的脚本运行。 考虑到用户可能遇到的问题,比如依赖项冲突、CUDA版本不匹配、数据集路径错误等,我需要提前准备这些常见问题的解决方法。此外,用户可能希望了解如何自定义模型或数据集,所以这部分也需要涵盖。 现在,我需要按照用户的要求组织回答。首先分点说明安装、配置和使用方法,确保每个步骤清晰,代码示例正确。然后生成相关问题,帮助用户进一步探索。同时,要使用中文,数学公式用$...$,独立公式用$$...$$,但根据用户的问题,可能数学公式不多,但如果有性能指标或参数,可能需要用LaTeX表示。 还要检查是否有需要引用的地方,比如引用官方文档或相关论文,但用户提供的引用标识示例中没有具体来源,所以可能不需要添加。最后,确保回答结构清晰,语言简洁,符合用户要求。</think>### InternVideo 使用指南 #### 1. 安装步骤 **环境要求**: - Python ≥ 3.7 - PyTorch ≥ 1.8.0(需与CUDA版本匹配,例如CUDA 11.1) - 其他依赖:FFmpeg、Decord、OpenCV等 **安装流程**: ```bash # 克隆代码库 git clone https://github.com/OpenGVLab/InternVideo.git cd InternVideo # 创建虚拟环境(可选) conda create -n internvideo python=3.8 conda activate internvideo # 安装依赖 pip install -r requirements.txt # 安装PyTorch(根据CUDA版本选择) pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html # 编译自定义算子(部分模型需要) cd ops && sh make.sh ``` --- #### 2. 配置说明 **数据集配置**: - 数据集需按特定结构存放,例如Kinetics-400: ``` datasets/ kinetics400/ videos_train/ videos_val/ annotations/ ``` - 修改配置文件(如 `configs/recognition/internvideo.yaml`),指定数据集路径和超参数。 **预训练模型下载**: - 从官方仓库下载模型权重(如 `internvideo_kinetics400.pth`),并放入 `checkpoints/` 目录。 --- #### 3. 基础使用 **视频特征提取**: ```python import torch from models import build_model # 加载模型 model = build_model(config_path="configs/feature_extraction.yaml", checkpoint="checkpoints/internvideo.pth") model.eval() # 输入视频帧(示例输入为16帧) video_frames = torch.randn(1, 3, 16, 224, 224) # (batch, channel, time, H, W) features = model(video_frames) print(features.shape) # 输出特征维度 ``` **训练与推理**: ```bash # 训练命令(以动作为例) python tools/train.py configs/recognition/internvideo.yaml --work-dir output/ # 测试命令 python tools/test.py configs/recognition/internvideo.py checkpoints/internvideo.pth --eval top_k_accuracy ``` --- #### 4. 常见问题解决 - **CUDA版本不兼容**:根据PyTorch版本安装对应的CUDA驱动[^1]。 - **自定义数据集支持**:修改数据集加载器代码(参考 `datasets/` 下的示例)。 - **显存不足**:减小 `batch_size` 或使用梯度累积。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sijin_Yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值