ACT-detector:检测tubelet的时空动作检测器.

目前的时空动作检测算法是在每一帧上进行目标检测,得到目标的空间位置,再连接每一帧上的检测结果得到时间上的定位。这些算法把每一帧作为独立的输入,没有考虑视频帧的时间连续性,容易造成检测结果的模糊。如下图仅从单帧图像上是无法分辨目标是坐下还是站起来。

本文提出了Action Tubelet detector (ACT-detector),即每次输入多帧连续视频帧,输出待预测的行为在连续帧上的多个bbox构成的anchor cuboids,然后对每个bbox进行精修得到待预测行为的tubelets。由于ACT-detector考虑到多个视频帧的连续性特征,从而能够减少行为预测的模糊性,同时提高定位准确率。

给定$K$帧的连续帧视频序列,使用共享权重的卷积神经网络backbone(本文采用SSD)从每帧图像上提取不同层次的特征图。由于backbone预设了ahchor,因此对于同一个anchor在连续的$K$帧视频序列上构成了anchor cuboids。将$K$帧连续图像上的同一个anchor cuboids的特征图堆叠起来,通过两个卷积层分别预测动作类别得分和预测框回归结果。其中分类层预测anchor cuboids对于$C+1$个类别的得分,回归层输出$4K$个坐标用于对预测框进行调整。

模型每一次的预测结果是$K$帧图像序列对应的一系列tubelets,需要将整个视频中的tubelets连接起来。所使用的link算法如下: 对于每次输入采取帧步长为$1$,即前一个连续$K$帧图像序列和后一个连续$K$帧图像序列有$K-1$帧重叠。通过非极大值为每个类别保留置信度最大的$N$个tubelets,将重叠的tubelets合并为同一个tubelet links, 最后对tubelet links在时间上进行平滑(在每一帧上对所有预测求平均值),得到最终的检测框坐标。

作者提出了增强版的Two-stream ACT-detector。即同时训练两个检测器,其中一个输入连续的$K$帧图像序列,另一个输入连续$K$帧光流图;两个检测器都输出tubelets。之后对两个tubelets进行融合,具体地,有两种融合方法:

通过对比,引入光流处理后的模型性能得到提高:

作者对输入连续帧的长度$K$进行了消融实验,并选定$K=6$:

对于每一帧的预测结果,除了预测正确的情况,作者针对预测错误的情况划分成五种常见的误差类型,并分析模型在$K=1$和$K=6$时所犯错误的比例:

  1. 定位错误$E_L$:动作类别预测正确,但定位错误(IoU$<0.5$)
  2. 分类错误$E_C$:定位正确(IoU$≥0.5$),但动作类别预测错误
  3. 时间错误$E_T$:检测到正确的动作类别,但该帧中不包含这个动作
  4. 其他错误$E_O$:在没有动作的帧中检测到结果
  5. 漏检错误$E_M$:没有检测到真实存在的动作

作者对比了在不同数据集上几种模型的帧mAP(frame-mAP),即只考虑每一帧中预测结果的(空间)质量,不考虑不同帧之间的连接(时间)质量。

作者对比了在不同数据集上几种模型的视频mAP(video-mAP),即同时考虑预测结果的空间质量(每一帧上的检测结果)和时间质量(不同帧之间的连接结果)。