← 返回论文库
奠基 Groundwork CVPR 2017 · 2017 arXiv:1705.07750 ↗

Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset动作识别何去何从?新模型与 Kinetics 数据集(I3D)

把 2D 卷积膨胀成 3D 并用 ImageNet 权重引导,同时发布大规模 Kinetics 数据集,奠定视频动作识别的数据与模型基础。

作者:Joao Carreira, Andrew Zisserman
机构:DeepMind / Oxford
发布:CVPR 2017
时间:2017-05
视频理解架构3D卷积数据集
原文摘要 · English Abstract

We re-evaluate state-of-the-art architectures in light of the new Kinetics Human Action Video dataset (400 classes, over 400 clips per class). We also introduce a new Two-Stream Inflated 3D ConvNet (I3D) based on 2D ConvNet inflation: filters and pooling kernels of very deep image classification ConvNets are expanded into 3D, leveraging ImageNet designs and even their parameters.

概要

此前动作识别受制于数据规模:UCF-101、HMDB-51 仅万级视频,各架构成绩接近,难分优劣。本文用大两个数量级的 Kinetics 重新体检五类主流架构,并提出双流膨胀 3D 卷积网络 I3D:把 ImageNet 训好的 Inception-v1 卷积与池化核沿时间维膨胀成 3D,再按「无聊视频不动点」把 2D 权重复制 N 份并除以 N 作初始化,使深层 3D 网络首次能继承图像预训练。双流 I3D 经 Kinetics 预训练后 UCF-101 达 98.0%、HMDB-51 达 80.9%。

在 I3D 之前,视频架构分成三条并行路线:逐帧提特征再用 LSTM 聚合时序;用 RGB 帧加 10 帧光流栈的双流网络分别预测再平均;以及 C3D 那样直接堆时空卷积。第三条路线理论上最自然,却因多出时间维使参数量暴涨,又无法利用 ImageNet 预训练,只能做到 8 层左右且从零训练,成绩始终落后。评测端也一样棘手:万级规模的 UCF-101 与 HMDB-51 上几乎所有方法精度相近,架构优劣无从判别。

关键贡献

  • 提出「卷积核膨胀」:把成熟的 2D 图像分类架构整体转成 3D 时空网络,无需重新试错设计视频骨架。
  • 提出「无聊视频不动点」这一自举规则,把 ImageNet 预训练的 2D 权重无损地搬进 3D 卷积核。
  • 指出时间维感受野不应与空间维同步增长,前两个最大池化层不做时间下采样,末端平均池化用 2×7×7。
  • 在同一 Inception-v1 骨架下统一复现并横向对比五类视频架构,把架构差异从实现差异中剥离出来。
  • 系统验证 Kinetics 预训练的迁移价值,证明视频域也存在类似 ImageNet 的大规模预训练红利。
  • 把 UCF-101 与 HMDB-51 的三折平均精度分别推到 98.0% 与 80.9%,大幅超越当时所有已发表结果。

方法详解(完整做法)

总体思路

I3D 的做法可以概括成「不重新设计视频网络,而是把图像网络整体拉进时间维」。输入是 64 帧连续视频片段(RGB 或 TV-L1 光流两种模态),骨架直接取 ImageNet 上训好的 Inception-v1,把其中每一个 N×NN\times N 卷积核与池化核膨胀成 N×N×NN\times N\times N 的时空核,权重则按「无聊视频不动点」从 2D 参数自举得到;再按帧率调整时间维的池化节奏,让感受野在空间与时间上以合适速度增长。RGB 与光流两个 I3D 网络各自独立训练,测试时把整段视频过网并对预测取平均,最后融合两路输出得到动作类别。

把 2D 卷积核膨胀成 3D

膨胀(inflation)是最朴素的一步:图像网络里的卷积核几乎都是方形的,直接把它变成立方体即可,N×NN\times N 变 N×N×NN\times N\times N,池化核同理。这样得到的网络在结构上与原图像网络逐层对应,Inception 的多分支、批归一化、深度都被完整继承,唯一变化是每层现在沿时间维也做卷积,因此从第一层起就在提取时空特征,而不是先提空间特征、再靠 LSTM 或求平均补时序。

y(t,x,y)=∑τ=1N∑i=1N∑j=1NW3D(τ,i,j) X(t+τ, x+i, y+j)y(t,x,y)=\sum_{\tau=1}^{N}\sum_{i=1}^{N}\sum_{j=1}^{N} W^{3D}(\tau,i,j)\,X(t+\tau,\,x+i,\,y+j)

无聊视频不动点与权重自举

光有结构没用,关键是把 ImageNet 学到的参数也搬过来。作者的构造很巧:把一张静态图沿时间维重复 NN 遍,得到一段「无聊视频」(boring video),要求 3D 网络在这段视频上的池化响应与 2D 网络在原图上的响应完全相同。由卷积的线性性,只要把 2D 权重沿时间复制 NN 份并整体除以 NN 就能满足这个不动点条件:

W3D(τ,i,j)=1N W2D(i,j),τ=1,…,NW^{3D}(\tau,i,j)=\frac{1}{N}\,W^{2D}(i,j),\qquad \tau=1,\dots,N

∑τ=1N∑i,jW3D(τ,i,j) X(i,j)=N⋅1N∑i,jW2D(i,j) X(i,j)=∑i,jW2D(i,j) X(i,j)\sum_{\tau=1}^{N}\sum_{i,j}W^{3D}(\tau,i,j)\,X(i,j)=N\cdot\frac{1}{N}\sum_{i,j}W^{2D}(i,j)\,X(i,j)=\sum_{i,j}W^{2D}(i,j)\,X(i,j)

由于无聊视频经过卷积层后逐时刻取值恒定,逐点非线性、平均池化与最大池化的输出也都与 2D 情形一致,于是整个网络的响应都被保持。这等价于让 3D 网络隐式地在 ImageNet 上预训练过一遍。

为什么要放慢时间维感受野的增长

不动点条件只约束了权重,没规定时间维该怎么池化,而这恰恰决定感受野的形状。图像网络对横纵两个空间维一视同仁,这很自然;但时间维的「一个单位」由帧率决定,与像素并不同质。作者的判断是:时间感受野若涨得太快,深层特征会把不同物体的边缘混在一起,破坏早期特征检测;涨得太慢又抓不住场景动态。因此在 25 fps 输入下,前两个最大池化层刻意不做时间下采样(核 1×3×31\times 3\times 3、时间步长 1),其余池化层保持时空对称,末端平均池化用 2×7×72\times 7\times 7。这是全文最能体现设计直觉的一处:膨胀给出结构,节奏调整才让结构匹配数据的物理尺度。

双流配置与预测平均

理论上 3D 卷积能从 RGB 里直接学到运动,但它是纯前馈的,而光流算法本身包含迭代优化、带有某种「递归」性质,这类信息前馈网络难以自行学出。实验也证实保留双流仍有明显收益:一路 I3D 吃 RGB,一路吃 64 帧光流,两者分别独立训练,测试时对类别概率取平均:

p(c)=12(pRGB(c)+pflow(c))p(c)=\frac{1}{2}\big(p_{\mathrm{RGB}}(c)+p_{\mathrm{flow}}(c)\big)

值得注意的是,在 Kinetics 上光流单流反而弱于 RGB(63.4% 对 71.1%),作者归因于 Kinetics 镜头运动多、干扰了运动流,但 I3D 因时间感受野长(训练时 64 帧对双流法的 10 帧),仍比其他架构更能榨出光流的价值。

训练用片段、测试用整段

训练与测试的时间尺度是刻意不对称的:训练喂 64 帧片段(约 2.56 秒),既保证批量可控,又让时间维随机裁剪成为一种数据增强;测试则把整段约 10 秒的视频全部过网,对沿时间滑出的 KK 个片段预测取平均:

p^(c)=1K∑k=1Kp(c∣sk)\hat{p}(c)=\frac{1}{K}\sum_{k=1}^{K}p\big(c\mid s_k\big)

空间上训练把短边缩到 256 再随机裁 224×224224\times 224 并做一致的左右翻转,测试只取中心裁剪。这种「密集看完整段」的测试方式是 I3D 迁移性远好于稀疏采样方法的重要原因——对每 25 帧只看 1 帧的模型来说,视频与 ImageNet 图片差别不大,自然也就吃不到大规模视频预训练的红利。

小结

I3D 真正的关键不是 3D 卷积本身,而是找到了一条把图像域十年架构与参数积累无损搬进时空域的通路:膨胀继承结构、不动点继承权重、时间池化节奏补上时间维的物理差异,剩下的交给 Kinetics 的数据量。

实验与关键数据

五类架构以 ImageNet 预训练的 Inception-v1 为骨架复现,在 Kinetics 上用 SGD 跨 32 块 GPU 训练 11 万步;再在 UCF-101 与 HMDB-51 的 split 1 上做定特征与微调两种迁移。结论:I3D 在所有模态下都最好,Kinetics 预训练获益最多。

关键数据

Kinetics top-1(RGB+Flow,ImageNet+Kinetics 预训练)
74.2%
vs 3D-Fused 67.2%(+7.0)
UCF-101 三折平均精度
98.0%
vs ST-ResNet + IDT 94.6%(+3.4)
HMDB-51 三折平均精度
80.9%
vs ST-ResNet + IDT 70.3%(+10.6)
Kinetics 光流单流 top-1
63.4%
vs Two-Stream 光流流 52.4%(+11.0)
双流 I3D 参数量
25M
vs 3D-ConvNet(C3D 变体)79M(−54M)
Kinetics 训练规模
400 类 / 24 万段 10 秒片段

影响与局限

I3D 是视频理解从「2D 骨架加时序后处理」转向「原生时空卷积」的分水岭:它证明 3D 网络此前落后是缺数据与预训练,而非结构有错。Kinetics 预训练的 I3D 成为动作识别与时序动作定位的默认特征提取器,膨胀思想被 S3D、R(2+1)D 乃至视频 Transformer 沿用,Kinetics 则成为视频领域的 ImageNet。

局限与不足

论文自己承认架构探索并不完备:没有引入 action tube、注意力机制或对演员的显式定位,也没能纳入帧排序函数、动作即变换等一批思路做对比。方法层面,双流仍依赖外部 TV-L1 光流,预处理开销大且无法端到端优化;膨胀后的模型虽比 C3D 参数少,但 64 帧输入使训练需要 32 至 64 块 GPU,成本很高。时间维池化节奏是在 25 fps 下手工调出来的经验值,换帧率或分辨率未必成立。此外 Kinetics 预训练对动作分类的价值已被验证,但对语义视频分割、视频目标检测、光流估计等其他视频任务是否同样有效,文中明确留作未解问题。