论文名称:T-C3D:TemporalConvolutional3D NetworkforReal-TimeActionRecognition
论文地址:https://aaai.org/ocs/index.php/AAAI/AAAI18/paper/view/17205
代码地址:https://github.com/tc3d
最近忙于写论文,也没有时间写博客,今天,我给大家带来一篇行为识别文章《T-C3D:TemporalConvolutional3D NetworkforReal-TimeActionRecognition 》,这篇文章是2018年发表在ECCV上的一篇经典文章,文章出自于北京邮电大学。T3D网络在baseline数据集UCF-101和HMDB-51数据集上精度分别达到了91.8%和62.8%。这篇文章的贡献如下:
在开始文章讲解之前,我想简单介绍一些当下行为识别和语义分割的研究热点。其实行为识别和语义分割都属于分类任务,其区别在于分类的关注点不同,但是在随着这两个方向的不断发展,出现了很多要解决的问题,比如语义分割中的FCN网络存在对小目标分割丢失的问题或大目标分割不全的问题。对于行为识别,对于短动作的行为识别,目前的方法已经达取得的很好的结果,但是对于长时序的动作,目前方法还存在问题。其实对于分割和行为识别面临问题属于同一类问题,解决该问题的思路是:局部特征提取,最后进行局部特征融合形成全局的特征。典型网络代表:语义分割PSPNet,行为识别T-C3D。本段话纯属个人理解,如有问题请留言。
按照我写博客的一贯作风,我首先介绍文章的创作灵感,之后当下的一些研究状况,紧接着是研究方法(文章的灵魂),最后是实验部分。
本文创作的的目的是为了解决行为识别网络不实时问题和长时序动作识别问题。那么什么是实时呢?在行为识别领域,具体实时是指端到端的训练,而对于双流网络,由于其结合的光流信息,需要额外时间计算光流图,导致网络不能端到端训练。对于
图1 长短时序动作
长时序动作,为了直观理解,看图1,“弹钢琴”和“射箭”可以很容易地通过静态画面或连续画面之间的小动作的外观信息来识别,然而,有时短剪辑不足以区分类似的类别(跳高和跳远),这时候需要考虑全局的时序特征来进行判别。同时该网络也可以在提取局部时序特征时候,几个卷积共享参数,所以可以大大减低参数量,这个后续用网络结构图来进行解释。
接下来介绍一下行为识别的研究领域最新情况和面临的问题。面临的挑战具体有,视频尺度的变化,杂乱的背景,视点的变化,相机的移动等对网络判别行为有很大的影响,这也是行为识别精度上不去的原因之一,同时,和静态图片识别相比,行为识别是一个序列问题,动作要通过多帧结合来进行有效的识别。在过去的十年中,基于视频的行为识别一直在研究中,开始是基于手工设计的方式来获取视频局部的时空特征,然而,手工特征方式面临设计繁琐,存在大量冗余的特征,具体代表方法有IDT,HOG3D,SIFT-3D。之后随着深度学习的发展,利用卷积来自动提取时空特征成为了主流,这也是现阶段发展的主要方向,具体代表网络有C3D,双流网络。
现在我们介绍本文的重点网络结构,具体如图2,输入为整个视频,分成多个片段作为网络的输入,之后每个片段通多3D CNN来提取局部的时空特征,这些3D CNN共享权重,之后将多个片段进行融合行为对整个视频的表示,最后通过softmax进行行为判别。为了详细阐述这个结构,文章引入了几个部分,具体由Temporal Encoding Model(时序编码模型),Video Components Generation(视频成分产生),3D Convolution Neural Network(3D卷积网络),Aggregation Functions(聚合函数)。接下来对每个部分进行详细介绍:
图2 T-C3D网络结构
Temporal Encoding Model
为了刻画视频的整体特征,引入了Temporal Encoding Model。形式上,给定一个视频V,在时间维上把它统一划分为S部分{P1,P2,P3,…,Ps},然后从Pi中选择一系列帧组成片段Ci。接下来,通过将每个片段经过3D-CNN的作用,获得S个特征图。将S个clips通过聚合函数作用得到视频级特征。最后,根据视频级特征得出最终的类别分数。不同于以往的工作,T-C3D通过视频级而非帧级预测来优化和更新其参数。具体公式如图3,W表示3D CNN的权重,F:表示激活函数,Q:表示聚合函数,H:表示预测函数,用来产生每个类别的概率得分。关于分段损失函数如图4,其中 G = Q(F(C1; W); F(C2; W); ...;F(Cs; W)) ,模型参数导数计算如图5,用于参数更新。
图3 视频最终的类别得分
图4 损失函数
图5 权重导数
Video Components Generation
与静止图像不同,视频是动态的,并且具有不同的序列。为了利用良好的方式对整个视频进行建模,作者首先在时间维度上将视频统一划分为几个部分。然后用两种常用的抽样方案从每个部分抽取多个帧,构成一个clip。第一种方案将前一步生成的视频片段统一划分为一定数量的fragments,并从每个fragments中随机选择一帧构成最终的片段。第二种方法从fragments中随机选择一定数量的连续帧来构造最终片段。实质上,第一采样方法随机选择均匀分布在整个视频中的非连续帧来表示整个视频。第二种方法从整个视频中均匀地选择S个片段,每个片段由一定数量的连续帧组成。后续实验部分给出了两种不同的下采样方法的分类精度。
3D Convolution Neural Network
首先,受深度残差CNN所获得的惊人的图像分类精度的启发,文章采用了一种带有残差块的深度3D-CNN网络。更特别的是,根据ConvNet架构搜索的工作,采用了17个卷积层和一个完全连接层的3D ResNet。实验表明,在给定的多帧图像中,深度残差的3D-CNN可以提取出更丰富、更强的时空特征层次。其次,对CNN的参数进行预训练在大规模数据集上,已被证明对各种视觉任务非常关键,例如目标检测、图像分类、语义分割等。对于3D-CNN,先前的工作如LTC已经表明,在Sprots-1M上预先训练的3D模型比从头训练的模型具有更高的分类精度。本文首先按照C3D中的策略,对Sports-1M模型进行了预训练,虽然Sports-1M有超过100万个视频,但由于没有人工标注,因此含有大量的噪声。最近,Kay(Kay等人。2017)等人提出了一个大规模、干净的数据集,称为Kinetics,涵盖400个人类行为类别,每个行为至少有400个视频clips。为了尽可能地激活3D-CNN中的神经元,作者采用时间编码的方法对3D-CNN进行了Kinetics数据集上训练,实验表明,Kinetics预训练显著提高了训练效果。
Aggregation Functions
聚合函数是T-C3D框架中非常重要的组件。文章详细描述和深入分析四个聚合函数,包括平均池、最大池、加权池和注意力池。接下来我进行一一阐述,这很重要。
图6 加权池作用机理
图7 注意力池作用机理
最后是实验部分,这部分主要是说明T-C3D最优性和探索实验。图8是T-C3D和一些主流方法的对比。图9帧两种采样方式对比,前面有阐述。图10不同聚合方式对比。图11不同训练方式比较,其中多尺度表示对输入进行裁剪和采用镜像(图像增强)。
图8 和一些主流模型对比
图9 不同采样方式对比
图10 不同聚合函数对比
图11 对于T-C3D不同训练方式比较