*
起因
之前有看过 Standford 最早的一篇关于处理视频序列的文章 A. Karpathy, G. Toderici, S. Shetty, T.
Leung, R. Sukthankar, and F. F. Li. Large-scale video classification with
convolutional neural networks. In CVPR, 2014. 2, 5, 8。
这篇文章的思想很朴素也很直接暴力(这类方法取名“暴力3D卷积
”),直接拓展传统的图像空间域的2D卷积网络到时空域也就是所谓的3D卷积网络(虽然其中也有一些很花哨的early fusion、late
fusion和slow
fusion方法),但是其本质上就是首先将不同帧的图像stack之后放入网络中学习得到时空域特征。有意思的是,Karpathy在文章中也表明这种方式并不是很高效的方法,效果其实和直接对于单独的帧进行处理相差无几。所以这样的
直接暴力的3D网络并不能高效地利用并学习时空域特征,因此如果要得到有效的时空域特征,往往需要大量大量的视频数据。—— 这个数据量的问题即使在 Sport 1M
数据下也是不够的。直观来说,暴力3D卷积训练的数据量比传统2D卷积多出一个数量级。
那么引出一个问题 —— 如何进行高效的时空域卷积?(这类方法我们戏称为优雅3D卷积)

*
如何优雅地3D时空域卷积?
其实这样的卷积方式并不能完全等价于最普通的3D卷积,这种方式仅仅是通过 低复杂度 的卷积核去模拟 高复杂度
的暴力3D卷积核。这种近似方式能够估计的卷积核能够满足克罗内克积的性质,即:。多嘴一句,这样的等价是有效的并不会对于3D核的表达性能造成很大损失。
在理解克罗内克积的基础上,我们可以将暴力3D卷积核转化为分解的2D空间域卷积核和1D时间域卷积核,即:


*
网络构架 —— 级联的空间卷积层+时间卷积层

这里有两种输入video clips,分别是差值图和图像帧。然后通过4组空间卷积层 Spatial Conv
Layer,这些层的操作都是图像域的2D卷积操作。SCLs针对单帧图像进行操作提取视觉特征。后续的操作有两条路径:

* 差值图(并不是相邻帧之间的关系)得到的特征后面经过Transformation & Permuation
操作,再进行时间域的multi-scale卷积操作。具体来说,就是对每个像素位置的所有feature
channel的时间维度进行卷积操作,通过不同时间域的卷积核来捕获不同速度的运动物体的运动特征。
* 图像帧得到的特征通过平行于上述操作的SCL层,进一步提高视觉特征的捕获精细程度,在 appearance feature 的方面得到更好的结果。
最后再将这两条路径得到的特征融合在一起得到对应于输入 video clip {差值图、图像帧}的结果。
*
video clips 的形成 —— 可以认为是 data argument 的一种
自然来说,不太可能直接输入完整的一帧图像(?),因此我们采用时间上等间隔采样的,空间上等位置采样的策略,得到不同的视频片段。这样的操作是为了解决
misalignment 的问题。

通过同样的方式采集得到。注意的一点: 能够捕获 short-term 和 long-term 时间域的特征,而 主要捕获视觉特征
,因此才会有第三节所讨论的两种不同的路径,处理不同的时间 - 空间特征。

*
总结
在现在来看,这样的优雅3D卷积整体框架实际上很类似于 two-stream 的框架:都是采用不同的路径处理不同的时间域 -
空间域特征。只不过相比之下,处理时间域特征的路径的输入是差值图像,而不是广泛采用的光流场。不过这样的方式能够引入 long-term
时间域信息,而不限制于光流场的逐帧的 short-term 信息。
不过~ hiahiahia,这个算法的效果其实并不能达到 state-of-art,姑且作为优雅3D卷积的小文章看看也是不错的。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信