参考文献:https://arxiv.org/abs/2004.07485v1
代码实现:https://github.com/MVIG-SJTU/AlphAction
理解交互是视频动作检测的重要组成部分。我们提出了异步交互聚合网络(AIA),它利用不同的交互促进动作检测。其中有两个关键设计:一是交互聚合结构(IA),采用统一的范式对多种交互类型进行建模和集成;另一种是异步记忆更新算法(AMU),它使我们能够通过动态建模非常长时间的交互来获得更好的性能,而不需要巨大的计算成本。我们提供的经验数据表明,我们的网络能够从综合交互中获得更显著的准确性,并且易于端到端的训练。我们的方法在AVA数据集上报告了最新的最新性能,与我们强大的baseline相比,验证集的mAP增益为3.7(相对改进12.6%),在UCF101-24和EPIC-Kitchens数据集上的结果进一步说明了我们的方法的有效性。
动作检测(时空动作定位)的任务是检测和识别空间和时间上的动作,作为视频理解的一项重要任务,它具有异常行为检测、自动驾驶等多种应用。除了空间特征和时间特征[19,25,3,9],相互作用关系[12,37,45,27]对于理解动作至关重要。以图1为例。男人、茶杯以及女人之前的动作有助于预测女人的动作。在本文中,我们提出了一个新的架构,强调动作检测的互动性。
互动可以简单地看作是目标人和语义之间的关系。现有的许多研究都试图探索视频中的交互,但目前的研究方法存在两个问题:(1)以往的研究方法[12,14]只关注单一类型的交互(如人-物体),它们只能促进一种特定的行为。文献[44]试图合并不同的交互,但它们是分别建模的,一个交互的信息对另一个交互建模没有贡献,如何在视频中找到正确的交互并将其用于动作检测仍然是一个挑战。(2) 长期的时间交互作用很重要,但很难追踪。由于资源挑战,使用时间卷积的方法[19,25,9]接收时间非常有限,像文献[39]把复制的提取特征作为预处理,在现实中是不实际的。
在这项工作中,我们提出了一个新的框架,即异步交互聚合网络(AIA),它探索了三种交互(人-人、人-物和时间交互),几乎涵盖了视频中所有类型的人-语义交互。作为第一次尝试,AIA使它们在层次结构中协同工作,以捕获更高层次的时空特征和更精确的注意。我们的网络主要有两种设计:交互聚合(IA)结构和异步记忆更新(AMU)算法。
对于交互聚合(IA)结构的设计,探索并整合了所有三种类型的交互在一个深层结构中。更具体地说,它由多个元素的交互块组成,每个元素交互块通过一种交互类型增强目标特征。这三种类型的交互块沿着IA结构的深度嵌套,一个块可以使用先前交互块的结果。因此,IA结构能够使用不同类型的信息精确地对交互进行建模。
由于视频数据量大,联合训练具有长记忆特性是不可行的,因此提出了AMU算法来估计训练过程中的难处理特征。我们采用类记忆结构来存储空间特征,并提出了一系列的写-读算法来更新内存中的内容:每次迭代时从目标片段中提取的特征被写入记忆池,然后在后续迭代中进行检索,从而对时间交互进行建模。这种有效的策略使我们能够端到端地训练整个网络,并且计算复杂度不会随着时间记忆特征长度的增加而线性增加。与先前预先提取特征的解决方案[39]相比,AMU简单得多,并且获得更好的性能。
综上所述,我们的主要贡献是:(1)一个深度IA结构,它集成了多种人-语义交互以实现鲁棒的动作检测;(2)一个动态估计记忆特征的AMU算法。我们在AVA[16]数据集上对时空动作定位任务进行了广泛的消融研究,提出的方法在性能上显示了巨大的提升,这在验证和测试集上都产生了最新的结果。我们也在数据集UCF101-24和片段级动作识别数据集EPIC Kitchens上测试了我们的方法,进一步验证了方法的通用性。
视频分类(动作分类)。各种3D CNN[19,32,31,34]已经被开发用来处理视频输入。为了使用巨大的图像数据集,I3D[3]在ImageNet[6]预训练基础上获益。在文献[25,7,33,42,4]中,上述模型中的3D核通过时间滤波器和空间滤波器来模拟,这两种滤波器可以显著减小模型的尺寸。SlowFast网络[9]引入了双流方法[28,10]。
时空动作检测。动作检测比动作分类更为困难,因为模型不仅需要预测动作标签,还需要在时间和空间上对动作进行定位。最新的方法[16,11,9,17,40]遵循目标检测框架[13,26],对检测到的边界框生成的特征进行分类。与我们的方法相比,它们的结果只依赖于裁剪的特征,而所有其他的信息都被丢弃,对最终的预测毫无贡献。
视频的注意机制。transformer[35]由几个堆叠的自注意层和全连接层组成。Non-Local[36]提出的结论是,先前的自注意模型可以看作是non-local均值的经典计算机视觉方法的一种形式[2],因此引入了一般的non-local块[36]。这种结构使得模型能够通过在不同的时间或空间关联特征来计算响应,从而使注意力机制适用于动作分类等与视频相关的任务。non-local块在文献[39]中也扮演着重要的角色,通过non-local特征库操作符引用来自长期特征库的信息。
在本节中,我们将描述在空间和时间中定位动作的方法。我们的方法旨在对各种交互进行建模和聚合,以获得更好的动作检测性能。在第3.1节中,我们描述了两种重要的实例级特性:短片段和长视频中的记忆特征。在第3.2节中,探讨了交互聚集结构(IA)以聚集交互知识。在第3.3节中,我们介绍了异步记忆更新算法(AMU),以缓解时间交互建模中计算量大和内存消耗大的问题。我们的方法的总体流程如图2所示。
为了在视频中建立交互模型,我们需要正确地找到被查询的人与什么交互。以前的工作如[36]计算特征图中所有像素之间的交互作用。由于计算量大,这些暴力方法使用视频数据集的大小有限,难以学习像素之间的交互。因此,我们开始考虑如何获得集中的交互特征。我们观察到人总是与具体的物体和其他人互动,因此我们提取对象和人作为实例级特征。另外,视频帧之间总是高度相关的,因此我们保留了人的特征作为长期时间记忆特征。
实例级特征将从视频特征中截取。由于计算整个长视频是不可能的,所以我们将其分割为连续的短视频片段 [ v 1 , v 2 , … , v T ] [v_1,v_2,…,v_T] [v1,v2,…,vT],利用视频骨干模型 f t = F ( v t , φ F ) f_t=F(v_t,φF) ft=F(vt,φF)提取第 t t t个视频片段 v t v_t vt的 d d d维特征,其中 φ F φF φF为参数。
在 v t v_t vt的中间帧上应用检测器得到人员框和物体框。在检测到的边界框的基础上,利用RoIAlign算法从特征 f t f_t ft中裁剪出人和物体的特征, v t v_t vt中人和物体的实例级特征分别表示为 P t P_t Pt和 O t O_t Ot。
一个视频片段仅仅是一个短会话,容易错过时间全局语义。为了建立时间交互模型,我们对时间记忆特征进行跟踪。时间记忆特征包括连续片段中的persons特征: M t = [ P t − L , … P t , P t + L ] M_t=[P_{t-L},…P_t,P_{t+L}] Mt=[Pt−L,…Pt,Pt+L],其中 ( 2 L + 1 ) (2L+1) (2L+1)是从视频片段中抽取帧的大小。实践中,从每个相邻视频片段中抽取一定数量的persons。
上述三个特征都具有语义意义,包含了识别动作的集中信息。有了这三个特性,我们现在能够显式地对语义交互进行建模。
我们如何利用这些提取的特征?对于人和物体,有多个检测到的人和物体,主要的挑战是如何正确地关注与目标人互动的人和物体。在这一节中,我们首先介绍我们的交互块,它可以在一个统一的结构中自适应地对每种类型的交互进行建模,然后我们描述了能够聚合多个交互的交互聚合(IA)结构。
概述
给定不同的人 P t P_t Pt、物体 O t O_t Ot和时间记忆特征 M t M_t Mt,提出的IA结构输出动作特征 A t = E ( P t , O t , M t , φ E ) A_t=E(P_t,O_t,M_t,φE) At=E(Pt,Ot,Mt,φE),其中 φ E φE φE表示IA结构中的参数,然后 A t A_t At输入到最终分类器以进行结果预测。
IA结构由多个交互块组成,它们中的每一个都是为单一类型的交互而定制的。交互块与其他块进行深度嵌套,有效地集成不同的交互,以获得更高层次的特征和更精确的关注。
交互块
交互块结构改编自[35]最初提出的Transformer块,具体设计基本遵循[36,39]。简单地说,两个输入中的一个用作查询,另一个映射到键和值。通过图3a中softmax层的输出dot-product attention,块能够选择对查询特征高度激活的值特征,并将它们合并以增强查询特征。交互块有三种类型:P块、O块和M块。
P块:P块在同一片段中模拟人与人之间的交互。它有助于识别听和说等动作。由于查询输入已经是person特征或增强的person特征,因此我们采用与查询输入相同的键/值输入。
O块:在O块中,我们的目标是模拟人与物体的相互作用,例如推动和携带物体。我们的键/值输入是检测到的物体特征 O t O_t Ot。在检测物体太多的情况下,我们根据检测分数进行采样,图3a是O块的图示。
M块:有些动作在时间维度上有很强的逻辑联系,比如打开和关闭。我们将这类交互建模为时间交互。为了操作这种类型,我们将记忆特征 M t M_t Mt作为M块的键/值输入。
交互聚合结构
我们提出三个IA结构来整合这些不同的交互块,包括原始并行IA、串行IA和密集串行IA。为了清楚说明,我们使用P、O和M分别表示P块、O块和M块。
并行IA:一种简单的方法是分别对不同的交互进行建模在最终合并它们。如图4a所示,每个分支遵循与[12]相似的结构,只处理一种类型的交互,而不知道其他交互,我们认为并行结构很难精确地找到相互作用。我们通过为不同的人显示softmax层的输出来说明图4c中第二个P块的注意,如我们所见,目标人显然是在看和听穿红色衣服的人,然而P块关注了两个男人。
串行IA:不同交互之间的信息有助于识别交互。我们提出串行IA来聚合不同类型的交互作,如图3b所示,不同类型的交互块按顺序堆叠。查询的功能在一个交互块中得到增强,然后传递给不同类型的交互块。图4f和4g展示了串行IA的优势:第一个P块不能区分左边男人和中间男人的重要性,从O块和M块中获得知识后,第二个P块能够更加注意到与目标人物交谈的左边男人。与并行IA中的注意图(图4c)相比,我们的串行IA在发现相互作用方面更好。
密集串行IA:在上述结构中,交互块之间的连接完全是手工设计的,交互块的输入只是另一个交互块的输出。我们希望该模型能够进一步了解哪些交互特征可以单独使用,考虑到这一点,我们提出了密集串行IA。在密集串行IA中,每个交互块接受先前块的所有输出,并使用可学习权重聚合它们。形式上,第i个块的查询可以表示为
其中, Θ \Theta Θ表示元素相乘, C C C是先前块的索引集, W j W_j Wj是用C中的Softmax函数规范化后学习得到的d维向量, E t , j E_{t,j} Et,j是来自第 j j j块的增强输出特征。密集串行IA如图3c所示。
长期记忆特征可以提供有用的时间语义来帮助识别动作。想象一下这样一个场景:一个人打开瓶盖,喝水,最后合上瓶盖,用微妙的动作很难察觉瓶盖的打开和关闭。但是了解喝水整个过程的语义,事情就变得容易多了。
资源挑战
为了获取更多的时间信息,我们希望 M t M_t Mt能够从足够多的片段中收集特征,然而,使用更多的片段将大大增加计算和内存消耗。如图5所示,当联合训练时,随着 M t M_t Mt时间长度的增加,内存使用和计算消耗迅速增加。要训练一个目标person,必须一次取前后(2L+1)个视频片段,这会消耗更多的时间,更糟的是,由于GPU内存有限,无法充分利用足够的长期信息。
洞察
在前面的工作[39]中,预先训练了另一个重复的骨干来提取记忆特征,以避免这个问题。然而,该方法利用了冻结记忆特征,其表示能力不能随着模型训练的进行而增强。我们期望在训练过程中,记忆特征能够动态更新,并享受参数更新带来的改进。因此,我们提出了一种异步记忆更新方法,可以生成有效的动态长期记忆特征,使训练过程更加轻量级。算法1给出了该算法的训练过程。
受文献[38]的启发,我们的算法由内存组件、记忆池 Ω Ω Ω和读写两个基本操作组成。记忆池 Ω Ω Ω记录记忆特征。在这个池中的每个特征 P t ( i ) ^ \hat{P^{(i)}_t} Pt(i)^是一个估计值,并用损失值 δ t ( i ) δ^{(i)}_t δt(i)标记,损失值 δ t ( i ) δ^{(i)}_t δt(i)记录整个网络的收敛状态。在每次训练迭代中调用两个基本操作:
-READ:在每次迭代的开始,给定来自第 i i i个视频的视频片段 v t ( i ) v^{(i)}_t vt(i),从记忆池 Ω Ω Ω读取目标片段周围的记忆特征,即 P t − L ( i ) ^ , … , P t − 1 ( i ) ^ \hat{P^{(i)}_{t-L}},…,\hat{P^{(i)}_{t-1}} Pt−L(i)^,…,Pt−1(i)^和 P t + 1 ( i ) ^ , … , P t + L ( i ) ^ \hat{P^{(i)}_{t+1}},…,\hat{P^{(i)}_{t+L}} Pt+1(i)^,…,Pt+L(i)^。
-WRITE:在每次迭代结束时,目标片段的人特征 P t ( i ) P^{(i)}_t Pt(i)作为估计的记忆特征 P t ( i ) ^ \hat{P^{(i)}_t} Pt(i)^被写进记忆池 Ω Ω Ω,并用当前损失值标记。
-Reweighting:我们的READ功能是在不同的训练步骤中written的,因此本文从模型中提取了一些与现有特征参数相差较大的早期特征,以惩罚因子 w t ′ ( i ) w^{(i)}_{t'} wt′(i)评估丢弃的错误估计的特征。我们设计了一个简单有效的方法来计算惩罚因子和损失目标,损失目标 δ t ′ ( i ) δ^{(i)}_{t'} δt′(i)与当前损失值之间的差值表示为
当差别很小时非常接近1,当网络收敛时,时间池中的估计特征将越来越接近精确特征, w t ′ ( i ) w^{(i)}_{t'} wt′(i)接近1。
如图5所示,随着记忆特征长度的增加,我们的算法消耗的GPU内存和计算量都没有明显的增加,因此我们可以在当前的通用设备上使用足够长的记忆特征。通过动态更新,异步记忆特征可以比冻结记忆特征得到更好的利用。
原子视觉动作(AVA)[16]数据集用于时空动作检测,在这个数据集中,每个人都被一个边界框和多个动作标签以每秒1帧的速度注释。共有80个原子动作类别,涵盖姿势动作、人-人交互和人-物交互,这个数据集包含235个训练视频和64个验证视频。
由于我们的方法最初是为时空行为检测而设计的,所以我们使用AVA数据集作为主要基准来进行详细的消融实验。根据[16],在空间IoU≥0.5的情况下,使用平均精度(mAP)评估性能,并且仅使用前60个最常见的动作类进行评估。
实例检测器:我们应用了Faster R-CNN[26]框架来检测每个片段关键帧上的人和物体,采用maskrcnn benchmark[23]的ResNeXt-101-FPN[41,21]骨干模型进行目标检测。它首先在ImageNet[6]上进行预训练,然后在MSCOCO[22]数据集上进行微调。对于人员检测,为了提高检测精度,我们进一步在AVA数据集上进行微调。
骨干网络:我们的方法可以很容易地应用于任何类型的3D CNN骨干网络,选择具有ResNet-50结构的最新SlowFast骨干网络[9]作为我们的基线模型。基本上遵循[9],我们的骨干是在Kinetics-700[3]数据集上预先训练的,在Kinetics-700验证集上,这种经过预先训练的骨干能够产生66.34%的top-1和86.66%的top-5准确度。
训练和推理:在Kinetics数据集预训练模型的基础上,以AVA数据集进行微调。我们的网络输入是32个RGB帧,采样自一个帧间隔为64的原始片段。片段被缩放成最短边256,然后输入到完全卷积骨干网络。我们只使用ground-truth人员框进行训练,随机jitter它们进行数据增强。对于目标框,我们将检测阈值设置为0.5,以提高召回率。在推理过程中,使用置信度大于0.8的人员检测框。在我们的实验中,我们设置了记忆特征的L=30。我们使用16 GPU(每个设备4个片段)上批量大小为64的SGD算法来训练网络。BatchNorm(BN)[18]设置为冻结。我们训练了27.5k次iterations,基本学习率为0.004,在17.5k次和22.5k次迭代时,学习率降低了10倍。学习率线性warm-up[15]应用于前2k个iterations。
三种交互:我们首先研究了三种交互作用的重要性,对于每种交互类型,我们在实验中最多使用一个块,然后将这些块按顺序堆叠。为了评价人-物相互作用的重要性,我们去掉了结构中的O块,其他的交互作用也以同样的方式进行评估。表1a比较了模型性能,其中使用的交互类型用“X”标记,此表中还列出了没有任何交互的基线网络。总的来说,我们观察到移除这三种交互中的任何一种都会导致性能显著下降,这证实了这三种交互对于动作检测都是重要的。
交互块的数量:然后,我们对IA结构中交互块的数量进行不同设置。实验中,交互块被嵌套在串行结构中。在表1b中, N × N× N×{ P , M , O P,M,O P,M,O}表示每个交互类型使用 N N N个块,总数为 3 N 3N 3N。我们发现,设置 N = 2 N=2 N=2时,我们的方法可以获得最佳性能,因此我们将此作为默认配置。
交互顺序:在我们的串行IA中,不同类型的交互作用交替集成在序列中。我们在表1c中研究了不同交互顺序设计的效果,如实验所示,不同交互顺序的性能非常相似,因此我们选择稍好的P→O→M作为默认设置。
交互聚合结构:在这一部分中,我们分析了不同的IA结构。并行IA、串行IA和密集串行IA,在表1d中进行了比较。正如我们预期的,并行IA的性能比串行结构差得多。由于块之间的密集连接,我们的模型能够学习更多的交互知识,从而进一步提高性能。
异步记忆更新:在前面的工作LFB[39]中,记忆特征是用另一个骨干来提取的,这个骨干在训练过程中被冻结。在这个实验中,我们将异步记忆特征与冻结记忆特征进行了比较。为了公平比较,我们用SlowFast骨干网络重新实现了LFB,并将AMU算法应用于LFB。在表1e中,我们发现我们的异步记忆特征可以获得比冻结方法更好的性能,其参数和计算成本几乎为冻结方法的一半。我们认为这是因为我们的动态特性可以提供更好的表示。
与 Non-local注意的比较:最后,我们将我们的交互聚合方法与先前的工作Non-local块进行了比较[36]。在[9]之后,我们使用一个Non-local分支来扩充骨干,计算了人员实例特征和全局池化特征之间的注意力。由于在Non-local块中没有长期记忆特征,我们在这个实验中只使用P块和O块。在表1f中,我们看到我们的串行IA明显优于Non-local块,证实了我们的方法比Non-local块更好地学习寻找潜在的交互作用。
最后,我们将提出的方法与以前的方法在AVA v2.1和v2.2数据集上进行了比较(表2),我们的方法在两个版本的数据集上都超过了以前的方法。
AVA v2.2数据集是ActivityNet challenge 2019[8]中使用的较新基准。在验证集上,我们的方法报告了一个新的具有单一模型的最新的33.11 mAP,其性能比强基线SlowFast网络好3.7 mAP。在测试split上,我们在训练和验证split上训练我们的模型,由于更多的数据量需要使用相对较长时间。通过三个具有不同学习速率和聚合结构模型的集成,我们的方法比AVA action detection challenge 2019(一个包含7个SlowFast网络的集成)的冠军取得了更好的性能。我们的方法和SlowFast网络的每类结果如图6所示,可以观察到每个类别的性能增益,特别是那些包含与视频语义交互的类别。
我们使用了Kinetics-700进行预训练,如表2所示,我们在这项工作中实现的骨干具有与使用Kinetics-600预先训练的官方模型相似的性能,这一比较证明性能增益的大部分来自我们的方法。
UCF101-24[30]是一个包含24个动作类别的动作检测数据集,在这个数据集中,每个动作实例的边界框是逐帧注释的。我们在先前的工作之后,对这个数据集的第一次 split进行了实验,使用Singh等人[29]提供的注释进行修正。
由于边界框是帧级注释的,因此我们选择使用[36]中提出的ResNet50-C2D作为我们的视频骨干模型。为了接收单个图像作为输入,我们移除其中的所有时间池化。以Kinetics-400数据集进行了预训练。其他设置与AVA实验基本相同。更多实施细节见补充材料。
表3显示了UCF101-24测试split结果,以0.5 IOU阈值的帧mAP表示。如表中所示,与我们的C2D基线相比,AIA获得了3.3%的mAP增益。此外,由于只有一个轻量级的2D骨干网络(其他方法可以使用一些3D骨干网络),我们的方法仍然取得非常有竞争力的结果。
为了证明AIA的可推广性,我们在分段级数据集EPIC Kitchens上评估了我们的方法[5]。在EPIC Kitchens数据集上,每一段都用一个动词和一个名词作注释,动作由它们的组合来定义。在[1]之后,我们将原始训练集拆分为一个新的训练集和一个新的验证集,动词模型和名词模型分别训练,行动是通过结合他们的预测得到的。
对于动词模型和名词模型,我们都使用提取的片段特征( f t f_t ft的全局平均池)作为IA结构的查询输入。将人员特征和物体特征裁剪后输入IA中,模拟人-人和人-物体交互。对于动词模型,记忆特征是片段特征。对于名词模型,记忆特征是从对象检测器特征映射中提取的物体特征,因此AMU算法只适用于动词模型。其他不同于AVA设置的实验细节在补充材料中提供。
从表4可以看出,这三项任务都有显著的提高,AIA的所有变体都优于强基线SlowFast。其中,密集串联IA的动词测试结果最好,比SlowFast提高了3.2%,串联IA的名词测试结果比SlowFast提高4.9%,动作测试比SlowFast提高3.6%。
本文介绍了异步交互聚合网络及其在动作检测中的性能,我们的方法在AVA数据集上得到最先进指标。然而,动作检测和交互识别的性能还很不理想,性能不佳的原因可能是视频数据集有限,从图像中传递行为的交互信息可以作为AIA网络的进一步改进。