Leveraging Long-Range Temporal Relationships Between Proposals for Video Object Detection论文详读

Leveraging Long-Range Temporal Relationships Between Proposals for Video Object Detection(将proposal之间的大范围的时间关系用于视频目标检测)

abstract

       因为视频中特定目标的动作模糊、稀奇古怪的姿势等原因,导致在不考虑时间因素的情况下无法达到较好的检测效果。

       本文针对单帧检测器提出一个轻量化的修改方案,根据时间因素的依赖进行了改进,仅需增加少量的计算就可以提升单帧检测器的准确率。该方案的关键是temporal relation module(时间关系模型)——通过学习不同帧中目标对象proposal的相似性,使用之前帧和之后帧来增强当前帧中目标对象的proposal。本文的算法因为不需要后续处理,所以可以实现与单帧检测器相当的处理速度,且在ImageNet VID数据集上达到当前最好的检测效果。

Introduce

       现有的单帧检测器在遇到视频中目标对象出现动作模糊、稀奇古怪的姿势时,其检测效果并不好,所以近些年开始利用邻近帧来辅助检测,这类方法有一个弊端就是目标的运动不能太剧烈。

       通过利用视频中不同帧proposal之间长期的时间关系,本文的方法可以在不进行后续处理的情况下包含long-term dependencies(长期依赖),且实现与单帧检测器相当的检测速度和极高的检测准确率。

       本文的算法是基于聚合视频中相关几部分的特征来得到最终的检测结果。这涉及到需要确定视频中的那些部分需要进行潜在检测、对这些部分的特征进行加权平均,最终的检测结果也与这些更新的特征(update feature)有关。

       本文的算法进行端到端的训练,因此要学习特征,以便识别相关部分,并在相关特征求平均后进行检测。将来自FPN检测器的候选区域作为潜在检测和视频潜在相关的部分。也可以使用检测器的输出,如使用fast high-recall 单步检测器的输出。

       本文算法的一个关键点——将原本从一个帧中获取proposal,变成拆分到2-3帧中进行检测,最后聚合结果得到proposal。

       本文算法的关键部件是一个proposal-level的时间相关模块,其作用是通过对目标框架和支持框架中的proposal之间的外观关系进行建模,更新目标框架中潜在检测(建议)的特征。

       本文的contribute:

  1. 一个新颖的proposal-level的时间关系模块,可以学习到外观相似性,且可以通过支持帧中的特征丰富目标特征;
  2. 一种应用关系块来合并来自视频中多个支持帧的长期依赖关系的方法;
  3. 速度与单帧检测器相当;
  4. 对关系图构造方法进行了详尽的实验,包括新特征归一化和在学习中增加了图监督。

算法的整个结构

在这里插入图片描述

       本文的算法核心思想就是根据邻近帧中的proposal对当前帧(目标帧)的检测结果进行增强,具体实现步骤如下:

  1. 首先使用RPN网络从目标帧和支持帧中分别提取出N个和M个proposal;
  2. 然后使用ROIAlign从目标帧和支持帧分别提取出目标特征和支持特征;
  3. 使用关系模块根据支持帧中的实例对目标帧进行增强;
  4. 进行定位和分类。

相关工作related work

单帧目标检测

       近些年的单帧检测器在速度和准确率方面都有了长足的进步,但是这些方法都没有使用temporal awareness来解决视频中的一些难以处理的情况。本文的算法建立在two-state方法FPN上,通过向来自支持帧的proposal引入外观相似性来修改实例级检测分支(instance-level detection branch),并提高了实例特征(instance feature),从而对视频中难以处理的情况进行可靠的检测。

帧间的像素级特征

       已有大量实验证实,利用像素级特征通过时间链接可以增强单帧检测器的性能。

       D&T方法建立了两个连续视频帧特征图间的密集关系图,并利用instance track ids学习边界框帧到帧的运动。FGFA方法利用光流引导特征传播,并通过适当的warp实现了帧间特征的对齐。STSN方法没有使用光流计算,而是使用了可变性卷积。

       以上的方法都是利用像素级特征之间的关系,而这些特征会随着时间的流逝逐渐消失。

       实际上,FGFA利用连续的21帧进行特征聚合,因此仅需四分之一秒的处理时间。对于STSN方法,一旦stride超过2就会影响其准确性。与之类似的还有D&T方法,一旦其输入帧是分散的10帧而不是连续帧,其性能就会下降。

       通过上述的方法可以得知细粒度实例级外观特征不会随着时间逐渐消失,所以可以通过故意忽略实例的空间位置,来释放更大的时间跨度、聚合多个时间跨度。

       本文的方法在每一帧的数百个proposal上进行处理,其中利用历史信息进行特征聚合、有效的将信息反向传播到RPN、对骨架网络进行端到端的训练。

帧间的实例级特征

       近些年的研究表明对实例级特征之间的关系进行建模是实现动作识别领域极好性能的关键——使用图像卷积和可学习的图像表示对每个视频片创建一个可描述的特征。

       基于此,本文的算法使用一个可学习图像对外观相似性进行建模,除此之外,因为本文算法对目标位置的每个实例进行预测并分类,所以得到的结果更加细腻,而原本的方法仅仅对每个视频片进行分类。

       根据基于注意力的非本地块(non-local block)修改得到的长期实例级依赖已被证实其非常重要。基于此,本文提出了frozen support setting(冻结支持设置)——一个基于additional frozen network的轻量化模型。但是最终模型显示这种方法不会提升性能,且速度慢了2倍以上。

       由于局部外观特征的改变,使得大部分方法在识别快速运动目标方面存在困难,但因为运动特定分解方法(motion-specific breakdown),本文算法对快速运动具有鲁棒性。

后处理

       目前最先进的视频对象检测方法都利用像素级特征。正如前面提到的,这些方法只包含相对短期的依赖关系,并且它们的性能会随着时间的推移而下降。为了提高准确性和考虑长期相关性,在不使用外观相似性的情况下,需要使用SeqNMS等离线后处理技术来链接和重新评分。在本文的模型中,通过反向传播允许丰富的特征支持,明确地考虑到网络深处的外观相似性。

本文方法

       实现定义一个target frame(目标帧)为最终进行预测的帧,该target frame具有多个support frame(支持帧),用于对当前proposal进行增强。

       算法的目标是学会如何以在线的方式进行检测,以实现更新实例级功能、更新检测器的预测的功能,且无需任何后处理步骤。

基于外观的关系模块 appearance-based relation block

       假设在一个D维空间的特征内有N个target和M个支持proposal( X t a r g e t ∈ R N × D , X s u p p o r t ∈ R M × D X_{target} \in R^{N×D},X_{support} \in R^{M×D} XtargetRN×DXsupportRM×D),基于支持特征的注意力权重平均建立一个注意力机制用于更新目标特征。使用 i i i 标记目标实例,使用 j j j 标记支持实例( x i x_i xi表示位于矩阵 X t a r g e t X_{target} Xtarget内的第 i i i 行的值, x j x_j xj表示位于矩阵 X s u p p o r t X_{support} Xsupport内的第 j j j 行的值)。

在这里插入图片描述

  1. 首先把 N × D N × D N×D的目标特征(target feature)和 M × D M × D M×D的支持特征(support feature)传入一个线性层Linear进行处理;

  2. 然后把两个特征经过线性层处理的结果均进行特征正则化(图中FeatNorm部分,进行单元正则化或zero-center 单元正则化),这里外观关系被建立为输入特征的直接关联。作者注意到特征的magnitude(重要性)在关系的建立中比实际的关系更重要,如果实例i和j都具有很高的magnitude,那么它们的关系也很重要,这一点在检测中对ROI级的特征非常重要,因为ROI级特征的学习过程中是具有偏向性,因此非常重要(have high magnitude);

  3. 通过在所有成对的目标特征和支持特征之间构建简单的联系,从而建立一个外观关系矩阵G(因为正则化的特征是成对关联的,所以G的大小为 N × M N×M N×M):
    在这里插入图片描述
    矩阵G是用来计算支持proposal的注意力权重的,其中的比较重要的是值比较高和比较低的 G i , j G_{i,j} Gi,j,值较高表示proposal x i x_i xi x j x_j xj具有较高的关联性,反之不具有相关性。

    如果实例 x i x_i xi出现在支持帧中,对应的proposal应该被连接起来并进行增强。为了加强这种限制,为这个添加了一个监督损失(supervision loss)——GraphLoss,这种方法适用于对比损失——鼓励相同实例之间的距离小,而不同实例之间的距离大。GraphLoss L ( x i , x j , y i , j ) = L(x_i,x_j,y_{i,j}) = L(xi,xj,yi,j)=
    在这里插入图片描述

    其中 y i , j y_{i,j} yi,j表示不相关性,为1时表示实例i和j不同,为0时表示相同。为了进行特征正则化,使得 ∣ ∣ x i ∣ ∣ 2 = ∣ ∣ x j ∣ ∣ 2 = 1 ||x_i||_2 = ||x_j||_2 = 1 xi2=xj2=1,当G表示一对特征的关系时,可以通过 L 2 L_2 L2标量积得到G和d的关系:在这里插入图片描述

  4. 当G被建立后,被用来作为支持特征中注意力机制的权重。G中的每行数据会分别使用softmax进行正则化处理,得到 G ^ \hat{G} G^

    为了进行正则化,G的初始值是有界的,所以需要再进行softmax处理之前,将其值放大10倍。一方面如果实例i与 j 1 , j 2 . . . j k j_1,j_2...j_k j1,j2...jk等proposal具有较强的关联,则其对应的 G i j 1 , G i j 2 . . . G i j k G_{ij1},G_{ij2}...G_{ijk} Gij1,Gij2...Gijk的值也会比较大,从而在经过softmax处理后可以“幸存”下来;另一方面如果实例i与支持帧中的proposal不存在关联,则在G的第i行中的值都非常小,经过softmax处理后得到结果不会存在任何的关联信号;

  5. G ^ \hat{G} G^通过一个倍增层(即图中的X)来聚合输入的支持特征,聚合的特征经过线性层Linear得到最终的聚合支持特征矩阵。因为该矩阵的大小与输入的目标特征矩阵相同,所以使用元素相加( + + +)来更新目标特征.

因果和对称模式causal and symmetric modes

       为了选择合适的支持帧,使用temporal kernel(时间核)进行选择。temporal kernel是一个元组(K,s),包含大小K和步长s的信息。因为大小为K,所以一个目标帧对应K-1个支持帧,步长s表示以s帧的跨度均匀的进行采样。

       在causal模式中,支持帧只在当前帧t之前的部分进行选择 t − ( K − 1 ) s . . . t − 2 s , t − s t-(K-1)s...t-2s,t-s t(K1)s...t2s,ts;而在对此帧中,支持帧的选择是在当前帧t的两侧进行选择 t − ⌊ K / 2 ⌋ s , . . . t − s , t + s , . . . t + ⌊ K / 2 ⌋ t-\lfloor K/2 \rfloor s,...t-s,t+s,...t+ \lfloor K/2 \rfloor tK/2s,...ts,t+s,...t+K/2

单一模型和冻结支持模型的设置Single Model and Frozen Support Model settings

       使用单一模型对目标特征进行计算和对支持特征进行选择非常高效。

       在本算法的单一模型中,目标特征和支持特征都是同一层池化得到的ROI特征,且网络的训练是端到端的。然而这样处理存在两个潜在的问题:1.如果把kernel的大小设为K,那么在训练时每个设备至少要处理K帧,如果输入一个大分辨图像进行目标检测,那么标准的GPU只能存储几张图像,因此kernel的大小受到限制;2.支持特征的分布会在检测器进行检测时发生变化,因为它是根据与目标特征相同的一组参数计算得到的。

       为了解决上述问题,提出了Frozen support model setting(冻结支持模型设置),其中一个预训练的单帧检测器用于提取实例级支持特征,与此同时,主检测器对单个图像进行检测,把固定尺寸的支持特征作为附加输入。

       因为不需要反向传播,所以训练Frozen support model setting不需要分配大量内存,从而可以在训练过程中把kernel的大小K可以设置为一个较大的值。

训练和推断training and inference

       如之前所述,即使使用复杂的运动传播方法,实例之间的几何关系也会随着时间而降低。在本文的模型中,特意不使用框之间的几何关系,以便能够在推理过程中获得长期依赖关系。

       因为已经证实应用具有较大时间跨度的内核来捕获长期关系的可能性。因此,训练一个与temporal kernel步长无关的关系模块,该模块可以在推理过程中对不同帧的时间步长(temporal stride)进行聚合。因此,内核大小K被固定为模型的参数,用于训练和测试,但时间步长是在训练过程中随机选择的——每训练一次,s就被选择一次。(注意,由于内存限制,模型使用单一步长进行训练,但是由于随机采样,关系模块在推理过程中是不可知的。)这样可以跨多个步长进行聚合。在推理期间,将内核多次使用多个不同的步长进行处理,并执行特征聚合。实验发现,增大时间步长(我们最多使用s = 256)不仅不会降低性能,而且还可以使准确率持续提高。

总结

       本文提出一个利用不同帧内object proposal之间关系的方法,从而实现基于长期特征支持(long-term feature support)视频目标检测。该方法实现的检测器更好的利用了长期时间依赖,仅仅在每帧检测的基础上增加了一小部分,仅比单帧检测器(single-frame detector)增加了一点额外的时间开销。

猜你喜欢

转载自blog.csdn.net/weixin_41963310/article/details/114272621