Actions as Moving Points

论文下载地址:https://arxiv.org/abs/2001.04608

代码地址:https://github.com/mcg2019/MOC-Detector

论文创新点:当前存在的动作识别检测算法大多数都是基于anchor的,算法计算量大,并且anchor对于检测运动实例效果并不友好。作者基于以上问题提出了一个新的行为识别检测框架,将每一个运动的实例看做是移动的点(类似于CenterNet等检测算法)。作者提出的网络结构主要分为三部分,第一部分是中心分支,用于实例中心检测和动作识别。第二部分是运动分支,用于估计相邻帧的运动,以形成运动点轨迹。第三部分是回归分支,通过估计的中心点直接回归检测框的大小。

视频领域的任务:动作识别,时序动作检测,时空动作检测

                             动作识别:(action recognition)是对每个输入视频进行分类,识别出视频中人物做出的动作。即输入视频序列,得到视频对应的类别。

                              时序动作检测:(temporal action detection)任务的输入是一个未经裁剪的视频(untrimmed video),即在这个视频里有些帧是没有动作发生的,因此需要检测出动作开始和结束的区间,并判断区间内动作的类别。即输入未经裁剪的视频序列,得到动作出现的区间和对应的类别。

                              时空动作检测:(spatio-temporal action detection)相比于时序动作检测略有不同,时空动作检测不仅需要识别动作出现的区间和对应的类别,还要在空间范围内用一个包围框(bounding box)标记出人物的空间位置。本论文就是时空动作检测算法。

时空动作检测:Frame-level Detector , Clip-level Detector

                              Frame-level Detector:检测每一帧的实例,然后通过关联算法将相邻帧进行关联。该算法并没有使用时序信息,因此检测效果并不好。

                              Clip-level Detector:为了将时序信息引入进来,该类算法将一段视频序列传输进来进行处理,然后通过视频序列之间包含相同的帧来进行关联。

以上两种算法都是基于anchor检测算法为基础,都很依赖于anchor的尺寸和数量,并且还需要大量的计算。

整体框架:

Actions as Moving Points

                                                  图 1,MOC算法的整体网路结构

如图 1所示,该算法的网络结构主要分为三部分,Center Branch,Movement Branch和Box Branch。算法的整体流程是,首先将连续的视频序列传到基础网络结构(DLA-34,ResNet-18和ResNet-101)里面提取通用特征图.然后将得到的特征图传到三个分支里面。最后将这三个分支的结果通过关联算法连接起来输出最后的结果。

基础网络结构:论文中使用的是DLA-34,可以同时兼顾速度和精度。

Center Branch:中心分支的目的是检测关键帧中的动作实例中心。并根据提取的视频特征对其分类进行识别。损失函数是Focal loss 用来平衡正负样本不平衡问题。按照常见的dense prediction setting来训练中心分支。                    

Movement Branch:运动分支关联相邻帧来预测动作实例中心的移动。损失函数使用的是L1 loss。训练方式是通过计算所有帧中实例真实中心点和预测中心点之间的距离。

Box Branch:确定运动实例的包围框大小和尺寸。损失函数使用的是L1 loss。通过计算真实检测框和预测框的差值来训练回归网络分支。最后整个网络结构的损失函数就是三个分支损失函数之和。

关联方法:使用的现有的关联方法,Action tubelet detector for spatiotemporal action localization 。

研究动机:

Actions as Moving Points

                                                            图2 . 算法整体流程

      作者创新性的提出了基于anchor-free的动作识别算法框架。算法流程如图2中(a)所示,将K张图片通过通道连接在一起然后通过3*3的卷积,就可以实现3D卷积操作,通过3D卷积操作得到K张图片中中间图片的中心点的位置和动作类别。(b)图表示的是将(a)中得到的中间图片的中心点映射到其他相邻的图片中。(c)图表示的是Movement Branch,得到当前帧的中心点(绿色点)和中间图片的中心点(黄色点)之间的连接线,如图中黄线所示。通过黄色线就可以得到每个动作实例的运动轨迹。(d)图表示通过估计的中心点(绿色点)来预测检测框的大小。

测试结果:

Actions as Moving Points