这是一篇2017CVPR的论文,我感觉这篇论文最大的贡献就是提出了kinetics数据集,这个数据集与之前的行为识别数据集相比有质的飞跃。同时文章也提出一种将2D卷积网络扩张成3D卷积网络的思想,使3D卷积网络可以收益于2D卷积网络的发展。感觉以后行为识别越来越玩不起了,面对这么大的数据,想起我那一张破显卡,不禁流下了贫穷的泪水。
论文地址:下载链接
代码地址(pytorch):下载链接
Kinetics数据集包含了400类人体行为,每一类至少有400个视频,这些视频全都来源于YouTube,每个视频时长大约为10s,一共有30多万个视频。视频中的行为可以被分为三类:单一的人体动作、人与人的交互、人与物的交互。这些行为都被分的非常细,有些需要通过时间推理来区分(例如不同类型的游泳),还有一些动作需要通过物体的视觉特征来区分(例如弹奏不同的乐器)。
文章复现了经典的模型,如CNN+LSTM的网络、3D卷积网络、基础双流网络,双流卷积融合网络。各种经典网络模型的结构如下图所示:
首先顾名思义,”Inflated“就说明这是一种将2DCNN扩充为3DCNN的网络,2DCNN网络使用的也是InceptionV1网络,其扩充为3D后的结果如下图所示:
在将2DCNN扩张成3DCNN时,有以下几点需要考虑:
文章中使用的方法是直接将尺寸为 N × N N\times N N×N 的2D卷积核扩充为尺寸为 N × N × N N\times N\times N N×N×N 的3D卷积核。
因为该3D网络是由2D网络扩充而来,所以如何才能将2D网络ImageNet预训练的参数应用于3D网络呢?文章认为如果将一张图片沿着时间复制,可以得到一段”boring video“,即”boring video“每个时刻的视频帧都是这张图片。所以3D卷积核在这段”boring video“上的响应应该和2D卷积核在这张图片上的响应是数值相同的。所以3D卷积核使用ImageNet预训练参数的方法是对2D卷积核的参数沿着时间复制,最后除以3D卷积核的时间维度的大小即可。
将所有的 N × N N\times N N×N 2D核扩充为 N × N × N N\times N\times N N×N×N 3D核可能并不合适,因为时间维度的最优值可能受到帧率等的影响,所以文章通过实验确定了最优的3D核时间维度的尺寸。
为了进一步提升网络的性能,文章在网络中加入了光流的输入,RGB视频和堆叠的光流分别输入到3D卷积网络中得到输出结果,最终的结果为这两个流的结果的融合。
所以最终的I3D网络的结构如下图所示:
其输入输出的视频时间长度如下图:
训练阶段:除了C3D网络,所有的网络都使用了Imagenet预训练的Inception-v1,Inception-v1网络也做了一些改进,在每一个卷积层后边都添加了batch normalization 和relu。优化方法为动量SGD,动量设为0.9,3D网络使用64个GPU而其他网络使用32个GPU并行训练(土豪!!),模型在ucf101,hmdb51,minikinetics和kinetics数据集上大约分别训练了35k,110k,5k,5k步。同时使用了空间随机裁剪,水平翻转等数据增强的方法。如果视频的时长比要求的输入长度还要短,则对视频进行循环。
测试阶段:输入的视频帧直接裁剪成224x224,整个视频的结果是各个视频段的平均,同时也使用了水平翻转的数据增强的方法,增强的数据的结果与原始结果的平均作为最终的结果。
所有模型在ucf101,hmdb51,mini-kinetics数据集上的实验结果如下表所示:
从表中可以看出
为了验证使用kinetics预训练的参数是否更优,文章设计了3种实验:
其实验结果如下表所示:
可以看到所有的方法基本都会受益于mini-kinetics的预训练,只是不同的方法提升的效果不同。
I3D最终的实验结果如下表所示,可以看到有了kinetics的预训练,其结果是相当的nice。
文章对I3D的第一层卷积核进行了可视化,如下图所示:
上图中,列表示时间,第一行为光流输入的卷积核,第二行为RGB输入的卷积核,第三行是ImageNet预训练的Inception-V1的卷积核,可以看到光流核和原始2D核相似,所以从光流提取运动信息就是直接提取光流的空间信息。RGB核与原始2D核相差很大,因为其要同时提取时间运动信息。
[1] Simonyan, Karen, and Andrew Zisserman. “Two-stream convolutional networks for action recognition in videos.” In Advances in neural information processing systems, pp. 568-576. 2014.
[2] Feichtenhofer, Christoph, Axel Pinz, and Andrew Zisserman. “Convolutional two-stream network fusion for video action recognition.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1933-1941. 2016.