原文链接
摘要
我们考虑的是在不受控制的环境下全自动动作识别。大多数现存的工作依赖于其专业知识从输入中构建复杂的人工特征。而且环境通常假定为可控的。卷积神经网络是一种深度模型,它可以直接作用在原始输入上,因此其特征构建是自动的。然而,这种模型目前仅限制于处理2D模型。在这篇文章中,我们提出一种新的3DCNN来处理动作识别。这个模型通过3D卷积同时提取了时间和空间上的维度,从而捕捉了编码在多个连续帧之间的动作信息。这个模型从输入帧之间生成多通道信息,并且最终的特征信息是由所有通道的信息结合而成的。我们利用这个模型在实际环境中是识别人体动作,并且它在不依赖于手工特征的基础上实现了较好的性能。
在真实环境下识别人体动作在各种各样的领域下获得了应用,包括智能视频监控、消费者属性、购物行为分析。然而,由于杂乱的背景、遮挡、观测点的变化等,准确的动作识别是一项较高的任务。因此,大多数已存的方法是对于任何环境下拍摄的视频有一个确定的假设(例如,小范围和观测点变化)。然而这种假设很少在实际环境中出现。此外,大多数这些方法遵循一个模式识别的传统模式,包含两步,第一步是从原始视频帧中计算复杂的手工特征,第二步是依赖于这些获得的特征学习分类。在真实世界的情景下,很难知道对于目前这个任务,哪个特征是重要的,而特征的选择与这个问题高度相关。特别是对于人体动作识别,不同的动作类别可能会因为其外表和运动模式,出现戏剧性的差异。
深度学习模型是机器学习的一个类别,它可以通过从低级别特征中建立高级别特征,从而学习到层级特征,因此特征的构建是一个自动的过程。这种学习机器可以通过任何一个监督或者非监督方法进行训练,并且在视觉目标识别、自然语言处理、自动分类任务上,这个结果系统展示出竞争性的性能。卷积神经网络是一种深度模型,可训练的滤波器和与之相邻的pooling操作,交替地应用在原始输入图像上,产生一个越来越复杂的层级特征。已经证明,当使用合适的正则化训练时,CNN在视觉目标识别任务中,不依赖于手工特征,可以实现极好的性能。此外,CNN已经被证实,对于输入的特征变化相对来说不太敏感。
在自动特征构建上,作为一个有吸引力的深度模型,CNN主要应用于2D图像上。在这篇文章中,我们将CNN用于视频中的人体动作识别。在这个方向上的一个简单的方法就是,直接将视频帧作为静止图像,在独立的帧层级上用CNN进行动作识别。事实上,这种方法已经应用于胚胎发育的视频分析中。然而,这种方法并不能考虑编码在连续多帧之间的运动信息。为了有效的在视频分析中结合运动信息,我们提出,将3D卷积应用在CNN的卷积层中,因此可以捕捉时间和空间维度上有辨识的特征。我们展示出,通过在输入的同一位置上,采用多个不同的卷积操作,可以提取多种类别的特征。依赖于3D卷积,不同的3DCNN架构可以用来设计分析视频数据。我们提出一种3DCNN架构,从相邻视频帧之间产生多通道信息,并且分别在每一个通道上执行卷积和下采样操作。最终的特征表示是通过多通道信息的结合获得的。CNN模型一个额外的优点是,由于其前向反馈的特性,识别阶段特别有效率。
我们在TREC Video Retrieval Evaluation (TRECVID)数据集上验证3DCNN模型。这个数据包含了在伦敦机场记录的有监督视频数据。我们构建了一个多模块事件检测系统,其中包括3DCNN作为一个模块,并且参与了监督事件检测的TRECVID 2009验证的三个任务。我们的系统在这个三个任务上都取得了最好的性能。为了对3DCNN模型提供独立的验证,我们在这篇文章中,在TRECVID 2008 development数据集上记录其性能。我们也提出了在KTH数据集上的结果作为发表,表示这个数据也是可用的。我们的实验展示出,在TRECVID数据集上,3DCNN模型比其他基线处理方法要做得好,并且在KTH数据上,没有依赖于手工特征,也实现了较好的性能,这些表明,和在TRECVID数据集上获得的一样,3DCNN模型在真实世界环境时更有效的。这个实验也提出了,对于大多数任务,3DCNN模型比基于帧的2DCNN明显做得更好。我们也观察了3DCNN和其他方法性能上的差异,当正训练样本的数量比较小时,这个差异更大。
在2DCNN中,在卷积层上,2D卷积操作是在上一层特征图的局部邻域中抽取特征。然后应用一个添加的偏置值,将结果传给一个sigmoid函数。正式上,在位置(x,y),在第i层,第j个特征图上,其单位值表示为,并且由以下公式给定。
其中,tanh是一个双曲正切函数,bij是对于这个特征图的一个偏置值,m是一个i-1层特征图连接到当前特征图的集合的坐标,w(pqijm)是连接第m个特征图,在核位置(p,q)出的权值,Pi和Qi是核的高度和宽度。在下采样层,在前一层的特征图上,通过局部邻域的池化,减少特征图的分辨率,从而增加输入扭曲的不变性。一个CNN架构可以这样构建,通过一种交替的方式,堆叠多层卷积操作和下采样操作。CNN的参数,例如偏置值bij,核权重w(pqijm),通常采用监督或非监督的方法来训练。
在2DCNN中,卷积操作只是从空间维度上将其应用在2D特征图上计算特征。当处理视频分析问题时,需要捕捉编码在连续帧之间的动作信息。为了这个目的,我们提出,在CNN的卷积操作阶段,执行3D卷积操作来同时从时间和空间维度上捕捉特征。3D卷积操作是这样实现的:通过同时堆叠多个连续帧形成的立方体与一个3D核进行卷积。通过这个构建,卷积层上的特征图连接到了前一层的多个连续帧,从而捕捉动作信息。形式上,在第i层、第j个特征图的(x,y,z)位置上,值由以下公式给定:
其中,Ri表示3D核在时间维度上的大小,w(pqrijm)是连接到在前一层中,第m个特征图的核的第(p,q,r)的值。2D和3D卷积操作的对比可以见图1。
图1: 2D(a)和3D(b)卷积操作的对比。在b中,卷积核在时间维度上的大小是3。连接设置是颜色编码,因此共享权重是相同颜色。在3D卷积操作中,同样的3D核应用于输入视频中重叠的3D立方体中,来提取动作特征。
注意,一个3D卷积核只能从帧立方体中提取一个特征,因此核权重可以重复地应用于整个立方体。CNN的总体设计原理是,通过从相同的低层特征图集合中生成多种类型的特征,增加特征图的数量。类似于2D卷积操作的情况,可以通过这样来实现,在前一层的相同位置,与不同的核,采用多个3D卷积操作(图2)。
图2: 从连续帧中提取多个特征。多个3D卷积可以应用于连续帧中提取多个特征。在图1中,连接集合是以颜色编码的,因此共享权重是相同的颜色。注意,所有连接的6个集合没有共享权重,结果导致右边两个不同的特征图。
基于前面描述的3D卷积操作,可以设计不同的CNN架构。在下文中,我们描述一个3DCNN架构,用来处理TRECVID数据集上的人体动作识别。如图3展示的架构中,我们将以当前帧为中心的、大小为60x40的7帧图像作为3DCNN的输入。我们第一次采用一个硬连线核的集合,从输入帧中产生多个通道的信息。结果是在第二层中,有33个特征图,有5个不同的通道,包括灰度、横坐标梯度x、纵坐标梯度y、光流x、光流y。灰度通道包含了7个输入帧的灰度值。在梯度x和梯度y通道,是通过沿着水平方向和垂直方向,分别计算7个帧得到的。光流x和光流y通道,是光流场分别通过沿着水平方向和垂直方向,从相邻输入帧之间计算得到的。硬线层用来编码我们已知的特征上的内容,并且与随机初始化相比,这种形式与可以带来更好的性能。
图3: 关于人体动作识别的3DCNN架构。这个架构包含了1个硬线层、3个卷积层、2个下采样层、1个全连接层。详细描述在文本中给出。
接着,我们将3D卷积操作分别用在5个通道上。卷积核大小为7x7x3,7x7是空间维度,3是时间维度。为了提高特征图的数量,两个不同的卷积集用在每个位置上。这导致2个特征图在C2层上,会各自产生23个特征图。这个层包含了1480个训练参数。在最后的下采样层S3,我们采用2X2大小的滑动窗口应用于C2层的每一个特征图上。这导致了相同的特征图数量,但减少了空间上的分辨率。训练参数在这一层上是92个。下一个卷积层是C4,通过卷积核大小为7x7x6,分别在两个特征图的5个通道上做3D卷积操作。为了提高特征图的数量,我们在每一个位置分别采用3个不同的卷积核操作,这导致了C4层上6个不同特征图集合,每一个集合都包含13个特征图。这一层包含了3810个训练参数。下一层是S5,在C4层的每个特征图上。采用3x3的窗口进行下采样,这将导致相同的特征图数量,但其分辨率下降。这一层的训练参数是156。现在阶段,时间维度的大小相对来说较小(灰度、梯度x、梯度y共3个,光流x、光流y共2个),因此在这一层,我们只将卷积作用在空间维度上。卷积核的大小为7x4,因此输出特征图的大小减为1x1,其中的每一个都连接了S5层的所有的78个特征图,这将有289536个训练参数。
通过多层的卷积、下采样操作,7帧输入图像转换为捕捉了输入帧中的动作信息的128D特征向量。输出层包含了与动作数量相同单元数,每一个单元都连接了C6层的128个神经元。在这个设计中,本质上我们在128D特征向量上线性分类来进行动作识别。对于一个3个类别的动作识别问题,在输出层的训练参数有384个。在这个3DCNN模型上总的训练参数有295458个,所有这些参数都随机初始化,并且使用在线误差后向传播算法进行训练。我们设计并且验证了其他3DCNN架构,并且在不同阶段结合了多通道的信息,我们的结果表示出,这个架构给出了最好的性能。
CNN关于视觉识别,是属于生物学上启发的一个模型,其他变形也在这个家族中有所发展。受到视觉皮层组织的启发,一个简单的模型,称为HMAX,发展为视觉目标识别。在HMAX模型中,通过模板匹配和最大池化的交替应用,越来越复杂的特征层级被构建出来。特别地,在S1层,一个静止的输入图像,被一系列Gabor滤波器从多个方向和和缩放上首次分析。C1层,通过池化S1层maps的局部邻域,增加对输入扭曲的不变性。S2层,用一系列模板(在训练阶段随机的由C1的maps生成)比较C1层maps,来获得该层的maps。最终C2层上的特征表示是,在每个S2maps上,执行全局最大池化得到的。
经典的HMAX模型用来分析2D图像的。在(Jhuang et al., 2007)这个模型中,被延伸来识别视频数据中的动作。特别的,在HMAX模型中,S1层的Gabor滤波器被一些梯度和时空模块来替代,来捕捉动作信息。此外,(Mutch & Lowe, 2008)提出的对HMAX的一些修改,也并入到这个模型中。CNN和基于HMAX模型的一个主要差别是,CNN是一个完全可训练的系统,所有的参数都是基于训练数据可调整的,但是HMAX的所有模块包含了手工的连接和参数。
在文本和手写识别中,时滞的神经网络已经可以抽取时间特征。在(Kim et al.,2007)中,一个改进的CNN架构可以从视频数据中提取特征。此外除了识别任务,CNN也可用于3D图像修复问题上。
我们在TRECVID 2008数据集和KTH数据集上验证了3DCNN对于人体动作识别的实验。
TRECVID 2008开发数据集包含了从伦敦Gatwick机场,从5个不同的摄像头,采集的49小时的视频,规格为720×57,25 fps。摄像头4拍摄的视频因为几乎没有事件发生在这个场景中而排除在外。在这个实验中,我们关注于3个动作类别(CellToEar, ObjectPut, and Pointing)。每个动作都采用一对多的方式分类,动作中产生的大量负样本不属于这3个类别。这个数据集收集了五天(20071101, 20071106, 20071107, 20071108, and 20071112)的数据,我们实验中统计的数据汇总在表1中。这个实验中使用的3DCNN模型在文章第二部分和图3中都有描述,训练迭代的次数是以单独的验证数据集调整的。
表1: 从TRECVID 2008 development数据集上抽取的每个类别样本的数量。展示了每个日期下样本中每个类别的的总体样本数目。
由于是在真实世界环境中记录的视频,并且每帧图像包含了多个人物,我们采用了人体检测器和检测驱动的跟踪器来定位人的头部。一些人体检测和跟踪的样本展示在图4中。基于检测和跟踪的结果,每个人都有一个边界框来执行动作的计算。3DCNN模型所需要的多帧图像的获取,是在当前帧以及相邻的前后帧,相同的位置下的边界框中提取得到的,这会得到一个包含动作的立方体。在我们的实验中,这个立方体的时间维度设置为7,已经证实(Schindler & Van Gool, 2008),5-7帧能够实现一个,与从整个视频序列中获得类似的性能。帧提取的步长为2步。假定当前帧是数字0,我们从数字为-6,-4,-2,0,2,4,6的帧中相同的位置提取边界盒。每一帧的边界盒都被缩放为60x40像素。
图4: 从左到右分别是摄像头1、2、3、5获得的人体检测和跟踪结果。
为了验证3DCNN模型的有效性,我们给出了基于帧的2DCNN模型的结果。此外,我们将3DCNN与另外两个基本方法相比较,其中采用了最先进的计算复杂手工特征的Bag-of-Words(BoW)模式。对于在3DCNN模型是使用的每个图像立方体,基于密集局部不变特征,我们构建了一个BoW特征。然后对每一个动作类别学习到了一对多的线性支持向量机。而且,我们从原始灰度图像或者动作边缘的历史图像(MEHI)中抽取了密集SIFT特征描述算子。原始灰度图像上的局部特征保存了外观信息,而MEHI图考虑的是形状和动作模式。在3DCNN模型中,从同一个立方体的7x7和16x16的局部图像块上,每隔6个像素计算SIFT描述算子。接着使用512Word的轻量化编码本来建立BoW特征。为了利用空间布局的信息,我们采用了与空间金字塔匹配(SPM)类似的方法,来划分成2x2、3x4大小的候选区,并且连接到他们的BoW特征。整个特征向量的维度是512x(2x2+3x4)=8192。我们将这种基于灰度图的方法称为SPM(cube、gray),依赖于MEHI的则成为SPM(cube、MEHI)。将一天的数据作为一个fold,我们给出了5-fold的交叉验证结果。我们使用的性能指标是精度、recall、在多个误判率(FPR)值下的ROC曲线(AUC)的面积。四种方法的性能总结在表2中。我们可以在表2中观察到,3DCNN模型的性能要比基于帧的2DCNN模型的性能要好,比模型SPM(cube、gray)和SPM(cube、MEHI)在动作类别CELLTOEAR和OBJECTPUT上性能也要好。对于动作类别pointing,3DCNN模型比其他三个性能上稍微差一点。从表1中我们可以看到,动作类别pointing的正样本数量相对来说要比其他两个类别明显大的多。因此,我们可以得出结论,当正样本的数量较小的时候,3DCNN模型的性能更高一点。总的来说,从表2中可以看出,3DCNN模型比其他三种模型平均性能要好。
表2: 在多误判率(FPR)下四种方法的性能。性能是就精度、recall和AUC测量的。为了便于展示,我们将AUC分数乘以1000。每种情况下的最高值被标亮。
我们在KTH数据上验证了3DCNN模型,包含了25个主体的6个动作类别。遵循HMAX中的设置,我们使用了9帧立方体作为输入,并且提取出前景。为了减少内存需求,在我们的实验中,输入帧的分辨率减少为80x60。我们使用与图3中类似的3DCNN架构,考虑到80x60x9的输入,每一层的特征图的数量、核的大小都要调整。尤其是,三个卷积层使用的核大小分别为9x7,7x7,6x4,两个下采样层的核大小为3x3。通过这个设置,80x60x9的输入被转换为128D的特征向量。最后一层包含了与6个类别相对应的6个神经元。
像在(Jhuang et al., 2007)中,我们使用随机选择的16个主体的数据训练,其他9个作为测试。表3中,展示了5个随机试验中的平均识别性能。相比于HMAX墨香的91.7%的识别率,3DCNN总的识别率是90.2%。注意,HMAX模型使用了从原始图像中提取的人工特征,并且是4倍的分辨率。
表3:在KTH数据集上的百分比的动作识别准确度。从上到下提出的方法依次是:3DCNN、和(Sch¨uldt et al., 2004), (Doll´ar et al., 2005), (Niebles et al., 2008), (Jhuang et al.,2007), and (Schindler & Van Gool, 2008)提出的方法。破折号表示这个类别的结果不可用。
在这篇文章中,我们提出3DCNN模型处理动作识别。这个模型通过3D卷积操作,从空间和时间维度上构建了特征。这个深度架构从邻近输入帧中生成了多通道信息,并且在每一个通道上都分别执行卷积和下采样操作。最终的特征表示是由所有通道上的信息结合计算的。我们在TRECVI和KTH数据集上验证了3DCNN模型。结果表明,3DCNN模型在TRECVID数据集上的性能比其他方法都要好,在KTH数据集上也展示出了有竞争力的性能,这些证实了其在真实世界环境中的优越性能。
在这项工作中,我们考虑了3DCNN模型处理动作识别。也有其他深度架构,例如,深度信度网络,其在目标识别任务上的性能也很有前景。对于动作识别来说,扩展这种模型会很有趣。在这项工作中,使用监督算法训练3DCNN模型,并且需要大量的样本标记。先前的研究表示出,使用非监督方法提前训练,很大程度上减少了标记样本的数量。未来我们将探索3DCNN的非监督训练。