关于论文Learning Spatiotemporal Features with 3D Convolutional Networks的介绍
这篇论文提出了一个比较高效的C3D网络来提取视频的空间时间特征。相比于2D网络,3D网络能够
更好的提取特征,而且只需配合简单分类器就能够比当前多数已有算法取得更好的表现。
引言部分与相关研究就不提了,大概就是这个视频的动作识别在现在未来很有用,然后其他人的工作虽
然方法途径各式各样,但都没这个文章的新,没这个文章的好。
文章的主要贡献则体现在:
提出了C3D网络结构并得到很好的实验效果
初步发现3*3*3的卷积核在实验的有限几个结构中表现最好
提出的结构特征可以通过简单线性分类器几乎达到当前最好的精度
接下来进入正题,具体介绍一下这个C3D网络结构及其实现,并通过实验分析不同结构和训练方法。
1. 3D卷积与池化
3D卷积网络更适合于提取时间空间特征,通过3D卷积与池化,它能够更好地提取时间序列信息。图1很好地展现了2D网络与3D网络的对比:
如图所示,2D卷积无论应用于单张图片还是多张图片,输出都是二维结果,因此用于视频识别时就会丢失时间序列的信息;3D卷积刚好很好地解决了这个问题,它同时保留了时间信息与空间信息;于此类似,3D池化也采用了类似的操作。考虑到3*3卷积核在2D网络中表现很好,我们在此只调整3D卷积核的时间维度的长度,保持空间接受域为3*3不变。
网络设置:网络以剪辑的视频片段为输入,所有视频都被调整大小为128*171。视频还被分开成为互不重叠的16片段并被作为网络输入。随后我们添加了小幅噪声。网络共有5个卷积层与5个池化层,另有两个全连接层及一个softmax损失函数层来预测动作标签。5个卷积层的滤波器数量分别为64,128,256,256,256. 所有卷积层都有合适的padding与stride,以保证卷积层的输入到输出没有大小变化。池化层由2*2*2的核处理来减小8倍的输出。不过第一个池化层的核只有1*2*2的规模,为了不要过早合并时间信号,也使得视频片段长度为16帧。两个全连接层有2048个输出,随后我们从零开始训练网络,这里使用了最小梯度算法,起始学习率为0.003.学习率会每循环4周期而衰减是被,训练在16周期后终止。
变化的网络结构:本文主要希望通过深度网络增加提取的时间信息,因此,为了找到一个好的3D卷积网络结构,只改变了核的时间维度的长度并保持其他参数如上所述不变。此外,我们分别对训练过程中始终不变的时间维度长度与变化的时间维度长度分别训练。不变的长度为别为1,3,5,7,变化的时间核长度则分为递增3-3-5-5-7与递减7-5-5-3-3。另外,尽管各个网络的待学习参数稍有不同,但相比于总量1.75千万个参数,这些都只占很小的部分,因此各个网络的学习结果是具有可比性的。
2. 探索时间核长度
我们基于UCF101的分支1对这些网络进行训练。下图展示了不同结构下的训练精度。左图是关于相同时间核长度的,右边则是变化时间核长度的结果。可见长度为3时效果最好,然而区别并不明显。我们还对其他的网络结构做了测试,3*3*3仍然是最好的。
3. 时间空间特征的学习
数据库:UCF101
分类模型:简单线性SVM。同时试验了3个不同的网络。
比较基准:IDT,ImageNet
结果:如下表所示。中间部分是只使用RGB的,下面则是所有当前最好的识别数据。结果表明,C3D不仅有最高的精度,而且能很好地提取外部特征与时间特征(没有明显提升当同特征数据库结合的时候)。另一方面,C3D同IDT的结合是十分互补的。IDT是主要基于光溜追踪与低梯度的直方图特征,而C3D则捕捉了高度抽象综合的信息。
带有3个网络的C3D能够实现更高的精度相比于IDT与ImageNet,而且C3D特征是语义分离的,也就是说可以更好地作为视频的特征,如下图所示
然后原文提到在各种“劣势”比较中C3D仍然有更好地表现,不过我个人感觉这种自己设定所谓的劣势比较条件的比较并没有太多意义,比如调参数条件。
4. 动作相似性标定
相似性标定要比之前的单纯动作识别更难,因为会出现未在数据库出现过的动作。至于实验结果嘛,自然是C3D完胜啦。毫无悬念的数据贴出如下:
5. 感知与物体识别
C3D最牛逼啦,略过。
6. 运行过程分析
我们比较了C3D与IDT还有时间流网络的运行过程。C3D运行超快的。
7. 结论
我们在本文中尝试解决了在大范围数据库中学习视频的时间空间特征的问题。我们通过系的学习找到了最好的时间核,并展示了它在视频识别中的优秀表现。
相关的C3D源码与训练好的模型可以在这儿找到:
http://vlg.cs.dartmouth.edu/c3d.