SCNN-用于时序动作定位的多阶段3D卷积网络

注:本文首发在微信公众号-极市平台。如需转载,请联系微信Extreme-Vision

这篇文章主要介绍Zheng Shou在CVPR2016上的工作”Temporal action localization in untrimmed videos via multi-stage cnns”[1]。之后会再介绍他在CVPR2017 上的新工作。

首先介绍一下这篇文章要解决的问题。视频中的人体行为识别主要包括两个方向:Action Recognition 以及 Temporal Action Localization, 分别进行简单的介绍:

  1. Action Recognition的目的为判断一个已经分割好的短视频片段的类别。特点是简化了问题,一般使用的数据库都先将动作分割好了,一个视频片断中包含一段明确的动作,时间较短(几秒钟)且有唯一确定的label。所以也可以看作是输入为视频,输出为动作标签的多分类问题。常用数据库包括UCF101,HMDB51等。
  2. Temporal Action Localization 则不仅要知道一个动作在视频中是否发生,还需要知道动作发生在视频的哪段时间(包括开始和结束时间)。特点是需要处理较长的,未分割的视频。且视频通常有较多干扰,目标动作一般只占视频的一小部分。常用数据库包括THUMOS2014/2015, ActivityNet等。

这篇文章主要解决Temporal Action Localization的问题。SCNN指segment based CNN,即基于视频片段的CNN网络。文章的代码见SCNN github地址

模型介绍

模型框架

如图所示即为SCNN的整体模型框架。主要包括三个部分,1)多尺度视频片段的生成;2)多阶段SCNN;3)后处理。下面分别进行介绍

  1. 多尺度视频片段生成

SCNN模型框架的第一步就是生成候选的视频片段,之后拿这些片段作为下一步的输入。在SCNN中采用了划窗方法产生视频片段,包括多个大小的窗口:16,32,64,128,256,512, 划窗的重叠为75%。在得到视频片段后,对其进行平均采样16帧视频,从而使得输出的segment的长度均为16。在生成训练数据时,同时还记录和segment和ground truth instance之间的最大重叠度(IoU)以及类别(即如果存在多个重叠的ground truth,取重叠度最大的那个)。

  1. 多阶段SCNN

SCNN 共有3个阶段:proposal, classification and localization network。三者均为结构相同的C3D network[2],只有最后一层全连接层根据任务不同而有不同的长度。三者的输入均为上一步得到的segment。

  • Proposal Network: 输出为两类,即预测该segment是动作的概率及是背景的概率(action or not)。训练时将IoU大于0.7的作为正样本(动作),小于0.3的作为负样本(背景),对负样本进行采样使得正负样本比例均衡。采用softmax loss进行训练。

  • classification Network: 输出为K+1个类别(包括背景类)的分数, 这个网络被用来初始化localization network, 仅在训练阶段使用,在测试阶段不使用。训练时同样将IoU大于0.7的作为正样本(K类动作),小于0.3的作为背景类,对背景类动作进行采样使得背景类动作的数量和K类动作数量的平均值相近。训练时同样采用softmax loss。

  • Localization Network:输出为K+1个类别(包括背景类)的分数,这个分数应该算做是该segment是某类动作的置信度分数。在训练时localization network用训练好的classification network做初始化,使用与classification network 相同的数据集,但增加了基于IoU分数的overlap Loss.其loss function为:

L=Lsoftmax+λLoverlap

    λ 为比例系数,SCNN中设为1。overlap loss为:

Loverlap=1Nn0.5(P(kn)n)2(vn)α1[kn>0]

    其中 kn 为该segment的真实类别, vn 为其IoU, Pn 为localization network 的输出分数。 α 为超参数。 这个loss的作用是根据IoU的分数调整预测结果,使得输出的分数不仅能对动作的类别进行分类,还能够估计其与ground truth的重叠程度。有利于后续的NMS。

  • 测试时的计算流程: 在测试时,只使用proposal 及 localization network。对于每个segment,先用proposal network计算它是动作的概率,若这个概率高于阈值(0.7),则作为一个候选segment进入下一个阶段用localization network计算置信度分数,低于阈值的segment都会被舍弃。

    1. 后处理

后处理是在测试阶段进行的。使用的方法是基于 Pl (localization network的输出分数)进行非极大化抑制(NMS)来移除重叠,在SCNN中,NMS的阈值被设置为0.1。下图就是NMS的一个例子,对于时序上重叠的动作,通过NMS去除分数低的,保留分数高的。

实验结果

在测评结果时,temporal action localization 问题一般使用的是mAP指标,即各个动作类别的Average Precision(AP)的平均。当一个动作实例与ground truth的重叠度IoU大于阈值,且类别正确时,被视为正确的预测。常用的阈值为0.5,或者同时用多个阈值来进行比较。SCNN分别在MEXaction2以及THUMOS 2014上进行了实验,其结果如下表所示。

可以看出SCNN均获得了不错的效果,是当时state-of-the-art的结果。

个人讨论

在SCNN中,划窗+Proposal Network 构成了算法的proposal部分,这里如果不用Proposal network,直接用划窗结果进行预测的话mAP会下降大概2个百分点(论文实验中给出),proposal network的主要作用是去除一些背景片段。

实际上,proposal的生成也是temporal action localization问题中的难点,这点与Object Detection中的Proposal 生成(R-CNN中的region proposal)类似。一个好的proposal 算法能够大大提高模型的效果。有论文专门讨论这个问题,比如Deep Action Proposal [3]等。

此外,SCNN中segment的大小是通过划窗确定的,很可能不够准确。目前CVPR2017上出现的几篇新的论文[4,5]都对这方面有所讨论,并采用了不同的方法提高segment proposal的边界精度。目前在THUMOS数据集上最好的精度大概比SCNN高十个百分点[4].

参考文献

[1] Shou Z, Wang D, Chang S F. Temporal action localization in untrimmed videos via multi-stage cnns[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1049-1058.

[2] Tran D, Bourdev L, Fergus R, et al. Learning spatiotemporal features with 3d convolutional networks[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 4489-4497.

[3] Escorcia V, Heilbron F C, Niebles J C, et al. Daps: Deep action proposals for action understanding[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 768-784.

[4] Xiong Y, Zhao Y, Wang L, et al. A Pursuit of Temporal Accuracy in General Activity Detection[J]. arXiv preprint arXiv:1703.02716, 2017.

[5] Shou Z, Chan J, Zareian A, et al. CDC: Convolutional-De-Convolutional Networks for Precise Temporal Action Localization in Untrimmed Videos[J]. arXiv preprint arXiv:1703.01515, 2017.

猜你喜欢

转载自blog.csdn.net/wzmsltw/article/details/65437295