您的位置:首页 > 其它

《3D Convolutional Neural Networks for Human Action Recognition》论文阅读笔记

2018-03-08 15:06 676 查看

前言

行为识别是目前非常火的一个方向,3D CNN算是基于视频的行为识别的一分奠基性的工作。目前行为识别的应用相当的广泛。但由于背景混乱、闭塞和视觉变化等原因(cluttered backgrounds,occlusions &viewpoing variations),对行动的准确识别是一项非常具有挑战性的任务。目前的大多数方法对视频采取了想当然的假设,例如,小规模和观点变化;但这样的假设在现实环境中很少存在。

传统方法

1)计算原始视频帧的特征

2)第二步基于获得的特征学习分类器。

存在问题

在现实场景下,因为特征高度依赖于问题,我们很少知道什么特征对于手头的任务是重要的;特别是对于人类行为的识别,不同的动作类别在外观和运动模式方面可能会显得不同。利用手工提取特征可能提取不到是和当前运动场景的特征。基于深度学习的CNN可以有效提取特征,但是输入的图像受限于2D场景,无法同时提取时间和空间维特征。

论文贡献

1)提出通过3D卷积操作核去提取视频数据的时间和空间特征。这些3D特征提取器在空间和时间维度上操作,因此可以捕捉视频流的运动信息。

2)基于3D卷积特征提取器构造了一个3D卷积神经网络。这个架构可以从连续视频帧中产生多通道的信息,然后在每一个通道都分离地进行卷积和下采样操作。最后将所有通道的信息组合起来得到最终的特征描述。

3)提出通过计算高层运动特征得到的辅助输出来增强模型。为了应对不同环境的使用,还综合多个不同的CNN架构去综合判断识别结果。

4)在TRECVID数据集中测试,并和一些基准方法进行比较。其实验证明文中方法outperforms二维CNNs方法和其他的基准方法。

3D 卷积神经网络

3D卷积

在video中应用CNN一个简单的方法就是对每一帧运用CNN来识别,但是这种方法并没有考虑到连续帧间的运动信息。为了有效的综合运动信息,文中提出了一种3D卷积的方法。通过在CNNs的卷积层进行3D卷积,以捕捉在时间和空间维度都具有区分性的特征。



2D卷积



3D卷积

3D卷积是通过堆叠多个连续的帧组成一个立方体,然后在立方体中运用3D卷积核。在这个结构中,卷积层中每一个特征map都会与上一层中多个邻近的连续帧相连,因此捕捉运动信息。

需要注意的是:3D卷积核只能从cube中提取一种类型的特征,因为在整个cube中卷积核的权值都是一样的,也就是共享权值,都是同一个卷积核(图中同一个颜色的连接线表示相同的权值)。我们可以采用多种卷积核,以提取多种特征。

对于CNNs,有一个通用的设计规则就是:在后面的层(离输出层近的)特征map的个数应该增加,这样就可以从低级的特征maps组合产生更多类型的特征。

3D CNN构架

文中的3D CNN架构包含一个硬连线hardwired层、3个卷积层、2个下采样层和一个全连接层。每个3D卷积核卷积的立方体是连续7帧,每帧patch大小是60x40;



3D CNN构架图

在第一层,我们应用了一个固定的hardwired的核去对原始的帧进行处理,产生多个通道的信息,然后对多个通道分别处理。最后再将所有通道的信息组合起来得到最终的特征描述。这个实线层实际上是编码了我们对特征的先验知识,这比随机初始化性能要好。



每帧提取五个通道的信息,分别是:灰度、x和y方向的梯度,x和y方向的光流。其中,前面三个都可以每帧都计算。然后水平和垂直方向的光流场需要两个连续帧才确定。所以是7x3 + (7-1)x2=33个特征maps。

然后我们用一个7x7x3的3D卷积核(7x7在空间,3是时间维)在五个通道的每一个通道分别进行卷积。为了增加特征map的个数(实际上就是提取不同的特征),我们在每一个位置都采用两个不同的卷积核,这样在C2层的两个特征maps组中,每组都包含23个特征maps。23是(7-3+1)x3+(6-3+1)x2前面那个是:七个连续帧,其灰度、x和y方向的梯度这三个通道都分别有7帧,然后水平和垂直方向的光流场都只有6帧。54x34是(60-7+1)x(40-7+1)。

在紧接着的下采样层S3层max pooling,我们在C2层的特征maps中用2x2窗口进行下采样,这样就会得到相同数目但是空间分辨率降低的特征maps。下采样后,就是27x17=(52/2)*(34/2)。

C4是在5个通道中分别采用7x6x3的3D卷积核。为了增加特征maps个数,我们在每个位置都采用3个不同的卷积核,这样就可以得到6组不同的特征maps,每组有13个特征maps。13是((7-3+1)-3+1)x3+((6-3+1)-3+1)x2前面那个是:七个连续帧,其灰度、x和y方向的梯度这三个通道都分别有7帧,然后水平和垂直方向的光流场都只有6帧。21x12是(27-7+1)x(17-6+1)。

S5层用的是3x3的下采样窗口,所以得到7x4。



到这个阶段,时间维上帧的个数已经很小了, (3 for gray, gradient-x, gradient-y, and 2 for optflow-x and optflow-y)。在这一层,我们只在空间维度上面卷积,这时候我们使用的核是7x4,然后输出的特征maps就被减小到1x1的大小。而C6层就包含有128个特征map,每个特征map与S5层中所有78(13x6)个特征maps全连接,这样每个特征map就是1x1,也就是一个值了,而这个就是最终的特征向量了。共128维。

经过多层的卷积和下采样后,每连续7帧的输入图像都被转化为一个128维的特征向量,这个特征向量捕捉了输入帧的运动信息。输出层的节点数与行为的类型数目一致,而且每个节点与C6中这128个节点是全连接的。

在这里,我们采用一个线性分类器来对这128维的特征向量进行分类,实现行为识别。

模型中所有可训练的参数都是随机初始化的,然后通过在线BP算法进行训练。

模型规则化Model Regularization

3D CNN模型的输入被限制为一个少的连续视频帧(这里我们取的是7帧),因为随着输入窗口大小的增加,模型需要训练的参数也会增加。但是呢,很多人的行为是跨越很多帧的。例如下面这个小伙子摆个手,跨越的帧数就有10帧以上了。



因此,在3D CNN模型中,有必要捕捉这种高层的运动信息。为了达到这个目的,我们用大量的帧来计算运动特征,然后把这些运动特征作为辅助输出去规则化3D CNN模型。

对于每一个需要训练的行为,我们提取其长时间的行为信息,作为其高级行为特征。这个运动信息因为时间够长,所以要比CNN的输入帧的立方体包含的信息要丰富很多。然后我们就迫使CNN学习一个非常接近这个特征的特征向量。这可以通过在CNN的最后一个隐层再连接一系列的辅助输出节点,然后训练过程中,使提取的特征更好的逼近这个计算好的高层的行为运动特征向量。



试验中,我们在原始的灰度图像中计算稠密sift描述子,然后通过这些sift描述子和运动边缘历史图像(MEHI)组合构造bag-of-words特征作为辅助特征。

因为灰度图保留了外观信息,运动边缘历史图像只关心形状和运动模式,所以可以提取这两个互补的信息作为两个连续帧的局部特征bag。MEHI 的计算见上图右,先简单的计算两帧间的差分,这样就可以保留运动信息,然后对其执行一次Canny边缘检测,这样可以使得观测图像更加清楚简洁。最总的运动边缘图像就是将历史的这些图像乘以一个遗忘因子再累加起来得到。具体的构造需要参考更多的论文了。

实验结果

论文,有详细介绍,略过。

实验结论

在这篇文章中,提出3DCNN模型处理动作识别。并且我们在TRECVI和KTH数据集上验证了3DCNN模型。结果表明,3DCNN模型在TRECVID数据集上的性能比其他方法都要好,在KTH数据集上也展示出了有竞争力的性能,这些证实了其在真实世界环境中的优越性能。

参考文献

[1].http://blog.csdn.net/liuxiao214/article/details/78066243

[2].http://blog.csdn.net/karen17/article/details/77678236?locationNum=8&fps=1

[3].http://blog.csdn.net/liuxiao214/article/details/78066243

[4].http://blog.csdn.net/zouxy09/article/details/9002508
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐