点击上方“CVer”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文系CVer粉丝供稿,感谢分享
论文链接:https://arxiv.org/abs/2001.04608
项目链接:https://github.com/mcg2019/MOC-Detector
注:图中较低的得分是focal loss本身性质所导致的
本文提出了一套全新的时空动作检测(spatio-temporal action detection)框架,首先简单介绍一下什么是时空动作检测任务。
时空动作检测属于视频领域的任务,视频领域常见的任务有动作识别、时序动作检测、时空动作检测。
动作识别(action recognition)是对每个输入视频进行分类,识别出视频中人物做出的动作。即输入视频序列,得到视频对应的类别;
时序动作检测(temporal action detection)任务的输入是一个未经裁剪的视频(untrimmed video),即在这个视频里有些帧是没有动作发生的,因此需要检测出动作开始和结束的区间,并判断区间内动作的类别。即输入未经裁剪的视频序列,得到动作出现的区间和对应的类别;
时空动作检测(spatio-temporal action detection)相比于时序动作检测略有不同,时空动作检测不仅需要识别动作出现的区间和对应的类别,还要在空间范围内用一个包围框(bounding box)标记出人物的空间位置。
早期的时空动作检测是先逐帧处理(frame-level detector),得到每帧内人物的包围框和动作类别,然后再沿时间维度将这些框连起来,形成时空动作检测结果;但这样逐帧处理的方式导致沿时间连接比较困难,且因为缺乏时序信息的利用导致动作识别精度不高;近期工作中提出了基于action tubelet的检测方式,此类检测器每次产生连续K帧的检测结果作为一个action tubelet,再利用这些tubelet重叠的部分进行连接,可以在时序上得到较好的检测结果。
目前的时空动作检测框架主要是基于传统目标检测方法改进得到的,例如faster rcnn,ssd等anchor-based的目标检测器。
现有的action tubelet detector大多依赖于3D anchor的设计,相比于目标检测中2D anchor的设计更加复杂,会带来繁重的计算,并且当输入序列变长人物运动位移变大,在时序上固定anchor回归人物位置大小不再线性,会影响定位精度,因此在本文中我们提出了一种全新的anchor-free时空动作检测框架,称为MOC-detector(MovingCenter Detector),基于运动信息可以有效提高识别精度,协助人物定位的分析,我们将动作实例建模为每一帧动作中心点沿时序的运动轨迹,依照这种对动作的简化建模方式,我们的框架可以分解为以下三个部分:
中心点预测分支(Center Branch),用于检测每个tubelet中间帧动作实例中心点的空间位置和所属类别。
运动估计分支(Movement Branch),用于估计中间帧动作实例中心点到相邻帧对应动作实例中心点的运动矢量,形成中心点运动轨迹。
包围框回归分支(Box Branch),在每一帧的预测中心点直接回归bbox大小来得到动作实例在空间上的包围框。
这三个分支可以相互协作生成tubelet检测结果,并采用现有的link算法,在UCF101-24和JHMDB数据集上得到了当前最好的效果,尤其是对于更精确的检测要求(高IoU, 如IoU=0.75),本框架大幅度领先sota方法。且因为同一个视频中每一帧的特征只需提取一次,之后对于不同的视频序列可重复使用,MOC-detector的效率也很高。
本文旨在提出一种新的anchor-free时空动作检测框架,利用视频中特有的时序动作信息,将动作实例视为其中心点的运动轨迹,并沿轨迹回归每一帧动作实例的包围框;具体来说,如上图所示将连续K帧图像分别输入共享的2D Backbone提取每一帧的高层语义特征,即K张特征图;
(1)中心点预测分支将K张特征图沿通道拼接,经过一个3x3卷积得到时空融合特征,这相当于做了一个3D卷积操作,再通过一个1x1卷积得到K帧图像序列中间帧的“heatmap”,响应高的点对应中间帧动作实例中心点的位置和类别。
(2)运动估计分支得到的是中间帧动作实例中心点到相邻帧对应动作实例中心点的运动矢量,对应着如何将(1)中预测的中间帧动作中心点移动到当前帧的对应中心点。至此可以形成连续K帧内每个动作实例中心点的运动轨迹。
(3)包围框回归分支逐帧处理,输入单帧特征图,预测由(2)得到的当前帧动作中心点对应动作的包围框大小。
最后使用已有的link算法将每个tubelet检测结果沿时序连接起来,形成整个视频中的时空动作检测结果。整个流程如下图所示(图片放大后更为清晰)。
(红点表示中心点预测分支预测的中间帧动作实例的中心点,黄色箭头代表运动估计分支预测的相邻帧中心点相对于中间帧中心点的运动矢量,绿点表示动作实例在当前帧的中心点,深灰色矩形代表每个动作实例对应的包围框)
更多细节请参考论文:https://arxiv.org/abs/2001.04608
运动估计影响探究:MOC-detector是一个短时序的时空动作检测器,本文为了证明在短序的时空动作检测中运动信息依然很关键,设计了三种移动方式,示意图和实验结果如下:
不移动(No movement):直接删除运动估计分支,在一个tubelet中,以运动实例在关键帧的中心位置为每帧生成包围框。这样,每帧的包围框共享相同的中心位置,只是包围框大小不同。这个设计假设人物在短序视频中移动很小,运动矢量估计影响很小。
框移动(Box Movement):在一个tubelet中,首先以运动实例在关键帧的中心位置为每帧生成包围框,然后根据运动估计分支的运动矢量预测,移动每一帧中的包围框。该设计假设回归包围框的大小对于回归的中心位置不敏感,所有帧可以在与关键帧相同的位置回归。
中心移动(Center Movement)(MOC-detector采用此方式):首先根据运动估计分支的预测将动作实例的关键帧中心移动到当前帧中心,然后通过包围框回归分支在每帧的中心点生成包围框。中心移动和框移动的区别在于它们在不同的位置生成包围框:一个在真实的中心,另一个在固定的关键帧中心。
由实验结果可看出,尽管检测器只对5帧的视频序列进行建模,但是运动信息仍然很重要,并且包围框回归分支不敏感,微小的定位误差并不会很影响检测精度。
运动估计分支设计探究:为了更高效地建模相对中间帧的运动矢量,本文探究了三种运动建模方式,实验结果如下:
输入序列长度K的选择:不同K的选取可以显著影响框架性能,平衡精度和速度,最终选取K = 7,并且当K=1时,MOC-detector退化为单帧检测器,与K=7的效果相差很大,可知利用时序信息的tubelet detector更加有效。
特征提取backbone的选取:对于不同的backbone,效果相差并不是很大,可见本文提出的MOC-detector框架对于backbone并不敏感,为平衡精度和速度,最终选取了DLA34作为backbone:
与sota的对比结果:标灰的两种方法使用了复杂的3D网络作为backbone(I3D和S3D-G),并在大型视频级数据集上进行预训练(如Kinetics),因此无法直接与其对比,但就算如此,从结果可以看出MOC-detector与他们效果comparable,并且大幅度领先目前基于2D结构的sota,特别是在高IoU要求上(video-mAP 0.75等)。
可视化结果展示:单帧(K=1)和tubelet (K=7)检测的例子。黄色方框显示检测结果,旁边提供分类和分数,黄色代表分类正确,红色代表分类错误。红色虚线框表示错过的演员。绿色方框和分类是ground truth。由于MOC-detector仅为一个tubelet生成一个分数和类别,因此分数和类别仅在tubelet (K=7)检测的第一帧中显示。
更多细节请参考论文:https://arxiv.org/abs/2001.04608
重磅!CVer-学术交流群已成立
扫码可添加CVer助手,可申请加入CVer大群和细分方向群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索等群。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加群
▲长按关注我们
麻烦给我一个在看!