3D CNN架构基于上述的3D卷积,可以设计出各种CNN架构。在上下文中,我们描述了为了描述了为TRECVID数据集中的人为动作识别开发的3D CNN架构,如图所示:文中的3D CNN架构包含一个硬连线hardwired层、3个卷积层、2个下采样层和一个全连接层。每个3D卷积核卷积的立方体是连续7帧,没帧patch大小是60x40;在第一层,我们应用了一个固定的hardwired的核去对原始的帧进行处理,产生多个通道的信息,然后对多个通道分别处理。最后再将所有通道的信息组合起来得到最终的特征描述。这个hardwired层实际上是编码了我们对特征的先验知识,这比随机初始化性能要好。每帧提取五个通道的信息,分别是:灰度、x和y方向的梯度,x和y方向的光流。其中,前面三个都可以每帧都计算。然后水平和垂直方向的光流场需要两个连续帧才确定。所以是7x3 + (7-1)x2=33个特征maps。然后我们用一个7x7x3的3D卷积核(7x7在空间,3是时间维)在五个通道的每一个通道分别进行卷积。为了增加feature 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=(54/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。所以本文中,空间维度上卷积后的尺寸变化可以通过下图很直观的表现出来:到这个阶段,时间维上帧的个数已经很小了,在这一层,我们只在空间维度上面卷积,这时候我们使用的核是7x4,然后输出的特征maps就被减小到1x1的大小。而C6层就包含有128个feature map,每个特征map与S5层中所有78(13x6)个特征maps全连接,这样每个特征map就是1x1,也就是一个值了,而这个就是最终的特征向量了,共128维。经过多层的卷积和下采样后,每连续7帧的输入图像都被转化为一个128维的特征向量,这个特征向量捕捉了输入帧的运动信息。输出层的节点数与行为的类型数目一致,而且每个节点与C6中这128个节点是全连接的。如下图:在这里,我们采用一个线性分类器来对这128维的特征向量进行分类,实现行为识别。模型中所有可训练的参数都是随机初始化的,然后通过在线BP算法进行训练。
05
Model Regularization(模型规范化)3D CNN模型的输入被限制为一个少的连续视频帧(论文中取的是7帧),因为随着输入窗口大小的增加,模型需要训练的参数也会增加。但是呢,很多人的行为是跨越很多帧的。因此,在3D CNN模型中,有必要捕捉这种高层的运动信息。为了达到这个目的,我们用大量的帧来计算运动特征,然后把这些运动特征作为辅助输出去规则化3D CNN模型。对于每一个需要训练的行为,我们提取其长时间的行为信息,作为其高级行为特征。这个运动信息因为时间够长,所以要比CNN的输入帧的立方体包含的信息要丰富很多。然后我们就迫使CNN学习一个非常接近这个特征的特征向量。这可以通过在CNN的最后一个隐层再连接一系列的辅助输出节点,然后训练过程中,使提取的特征更好的逼近这个计算好的高层的行为运动特征向量。如下图所示:高级行为辅助特征的提取过程是先在原始的灰度图像上计算稠密sift描述子,然后通过这些sift描述子和运动边缘历史图像(MEHI)组合构造bag-of-words特征作为高级行为辅助特征(我也还不太懂bag-of-words特征,可以自己查一下)。如下图:因为灰度图保留了外观信息,运动边缘历史图像(MEHI)只关心形状和运动模式,所以可以提取这两个互补的信息作为两个连续帧的局部特征bag。MEHI 的计算见上图右,先简单的计算两帧间的差分,这样就可以保留运动信息,然后对其执行一次Canny边缘检测,这样可以使得观测图像更加清楚简洁。最终的运动边缘图像就是将历史的这些图像乘以一个遗忘因子再累加起来得到。具体的构造需要参考更多的论文了。
06
Model Combination(模型组合)不同的3D CNN模型在不同的应用环境下性能不一样,一种自适应的方法就是构造多个不同模型,然后对一个特定的输入,每个模型都做出预测,然后组合这些模型的预测得到最后的决策。本文中,我们构造多个不同的3D CNN模型,因此它可以从输入捕捉潜在的互补信息,然后在预测阶段,每个模型都针对一个输入得到对应的输出,然后再组合这些输出得到最终的结果。
07
Model Implementation(模型实现)在本实验中,所有的子采样层都是最大子采样,用于训练规范化模型的整体代价函数是有真实的行为类的误差和高层特征的辅助输入代价项的线性加权得到,,权值分别是1和0.005,模型的所有参数都是随机初始化,然后通过diagonal Levenberg-Marquardt方法来优化训练。