样本分割是计算机视觉中的基本问题之一。虽然已经有很多关于静止图像实例分割的研究,但是对于视频实例分割的研究相对较少。然而,现实世界中的摄像头接收到的,无论是自动驾驶背景下车辆实时感知的周围场景,还是网络媒体中的长短视频,大多是视频流信息而非纯粹的图像信息。因此,对视频建模模型的研究具有重要的意义。本文是对CVPR 2021美团无人配送团队发表的一篇论文的解读。
前言
实例分割是计算机视觉的基本问题之一。目前,人们对静止图像中的实例分割做了大量的研究,但对视频实例分割的研究相对较少。然而,现实世界中的摄像头所接收到的,无论是自动驾驶背景下车辆实时感知的周围场景,还是网络媒体中的长短视频,大多是视频流信息而非纯图像信息。因此,对视频建模模型的研究具有重要的意义。本文是对美团无人配送团队在CVPR2021发表的一篇口头论文:《End-to-End Video Instance Segmentation with Transformers》的解读。本次CVPR大会共收到7015份有效投稿,最终有1663篇论文被录用,论文录用率为23.7%,欧乐尔的录用率仅为4%。
图像分割是指检测和分割静止图像中感兴趣的对象的任务。视频是包含多帧图像的信息载体。与静态图像相比,视频包含更多的信息,因此其建模更加复杂。与静态图像只包含空间信息不同,视频还包含时间维度的信息,因此更接近真实世界的刻画。其中,视频实例分割是指对视频中感兴趣的物体进行检测、分割和跟踪的任务。如图1所示,第一行是给定视频的多帧图像序列,第二行是视频实例分割的结果,其中相同的颜色对应相同的实例。视频实例分割不仅需要检测和分割单幅图像中的对象,还需要在多帧维度中找到每个对象的对应关系,即关联和跟踪它们。
图1视频示例分割任务示意图
现有的视频实例分割算法通常是具有多个模块和阶段的复杂过程。最早的掩模跟踪R-CNN[1]算法包括两个模块:实例分割和跟踪。它是通过在图像实例分割算法Mask R-CNN[2]的网络中增加一个跟踪分支来实现的,主要用于实例特征提取。在预测阶段,该方法使用外部存储模块存储多帧实例的特征,并将该特征作为实例关联的元素进行跟踪。这种方法的本质仍然是单帧分割和与传统方法的跟踪关联。Maskprop[3]在Mask Track R-CNN的基础上增加了一个掩膜传播的模块,以提高分割掩膜生成和关联的质量。该模块可以实现从当前帧提取的遮罩向周围帧的传播。然而,由于帧的传播依赖于单个帧的预先计算的分割掩模,因此需要多步细化来获得最终的分割掩模。这种方法的本质仍然是单帧提取和帧间传播,并且由于它依赖于多个模型的组合,所以方法更加复杂和缓慢。
Stem-seg[4]将视频实例分割分为两个模块:实例判别和类别预测。为了区分实例,该模型将视频的多帧片段构造成3D体,通过聚类像素的嵌入特征来分割不同的对象。因为上面提到的聚类过程不包括实例类别的预测,所以需要额外的语义分割模块来提供像素的类别信息。根据以上描述,现有算法大多遵循单帧图像实例分割的思想,将视频实例分割任务划分为单帧提取和多帧关联多个模块,针对单个任务进行监控和学习。处理速度慢,不利于视频序列连续性的优势。本文的目的是提出一个端到端的模型,将视频实例的检测、分割和跟踪统一到一个框架中。有助于更好地挖掘整个视频的时空信息,可以快速解决视频实例分割问题。
背景
相关工作
首先,我们重新思考视频实例分割的任务。与单帧图像相比,视频包含了关于每个实例的更加完整和丰富的信息,例如不同实例的轨迹和运动模式,这可以帮助克服单帧实例分割中的一些困难问题,例如外观相似、物体接近或遮挡。另一方面,多个帧提供的单个实例的更好的特征表示也有助于模型更好地跟踪对象。因此,我们的方法旨在实现一个端到端的视频实例目标建模框架。为了达到这个目的,我们首先想到的是:* *视频本身就是序列级别的数据,是否可以直接建模为序列预测的任务?* *例如,参考自然语言处理(NLP)任务的思想,将视频实例分割建模为序列到序列(Seq2Seq)任务,即给定多帧图像作为输入,直接输出多帧分割掩膜序列。这时候就需要一个可以同时建模多个帧的模型。
第二个想法是:* *视频的实例分割实际上包括两个任务:实例分割和目标跟踪。能不能统一到一个框架里?* *对于这一点,我们的思路是:分割本身就是像素特征间相似性的学习,而跟踪的本质是实例特征间相似性的学习,所以理论上可以把它们统一在相似性学习的同一个框架下。
基于以上的思考,我们选择了一个可以同时对序列建模和学习相似度的模型,即自然语言处理中的Transformer[5]模型。Transformer本身可以用于Seq2Seq的任务,即给定一个序列,就可以输入一个序列。此外,该模型非常擅长对长序列进行建模,因此非常适合对视频领域中的多帧序列的时序信息进行建模。其次,Transformer的核心机制——自关注模块,可以基于对之间的相似度来学习和更新特征,使得将像素特征和实例特征的相似度统一在一个框架中成为可能。上述特性使Transformer成为VIS任务的合适选择。此外,Transformer已经应用于计算机视觉DETR的目标检测实践中[6]。因此,我们设计了一个基于transformer的视频实例分割模型VisTR。
VisTR算法介绍
图2 VisTR算法框架
遵循上述思路,VisTR的整体框架如图2所示。图的最左边是输入的多帧原始图像序列(以三帧为例),右边是输出实例预测序列,其中相同的形状对应相同帧图像的输出,相同的颜色对应相同对象实例的输出。给定一个多帧图像序列,首先利用卷积神经网络(CNN)提取初始图像特征,然后将多帧特征组合成特征序列输入到Transformer中建模,实现序列的输入输出。
不难看出,首先,VisTR是端到端的模型,即同时对多帧数据进行建模。建模方法是:将其转化为Seq2Seq的一个任务,输入多帧图像序列,模型可以直接输出预测的实例序列。虽然多帧的输入输出在时序维度上是有序的,但是单帧输入实例在初始状态下的顺序是无序的,所以仍然无法实现实例的跟踪关联。所以我们强制每一帧图像的输出实例顺序一致(用图中形状相同的符号颜色变化顺序表示),这样只要找到对应位置的输出,就可以自然实现相同实例的关联,不需要任何后期处理操作。为了实现这一目标,有必要对序列维度中属于同一实例位置的特征进行建模。有针对性地,为了实现序列级监控,提出了实例序列匹配模块。同时,为了实现序列级分割,提出了实例序列分割模块。端到端建模将视频的时空特征作为一个整体,可以从全局的角度学习整个视频的信息。同时,Transformer建模的密集特征序列可以更好地保留细节信息。
图3 VisTR网络结构
VisTR的详细网络结构如图3所示。以下是对网络各组成部分的介绍:
主干:主要用于提取图像的初始特征。对于序列中输入图像的每一帧,首先利用CNN的主干提取原始图像特征,将提取的多帧图像特征沿时间和空间维度序列化为多帧特征序列。由于像素的原始时空信息在序列化过程中丢失,检测和分割任务对位置信息非常敏感,我们对原始的空间和水平位置进行编码,并叠加在提取的序列特征上作为位置编码,以保持原始的位置信息。位置编码的方法沿用了图像变换器[7]的方法,只是将二维的原始位置信息变成了三维的位置信息,本文对此进行了详细说明。编码器:主要用于对多帧特征序列进行整体建模和更新。输入之前的多帧特征序列,Transformer的编码器模块通过学习点与点之间的相似度,使用自关注模块融合更新序列中的所有特征。该模块通过对整个时间序列和空间特征进行建模,可以更好地学习和增强属于同一实例的特征。解码器:主要用于对输出预测的示例特征序列进行解码。由于编码器向解码器输入密集的像素特征序列,为了解码稀疏的实例特征,我们参考DETR的方式,引入实例查询来解码有代表性的实例特征。实例是网络自学习的一个嵌入参数,用于对密集的输入特征序列进行注意操作,以选择能够代表每个实例的特征。以处理3幅图像并预测每幅图像中的4个对象为例,该模型需要12个实例查询来解码12个实例预测。与前面的表示一致,相同的形状表示同一帧图像的预测,相同的颜色表示同一对象实例在不同帧中的预测。这样,我们可以构建每个实例的预测序列,对应于实例1.图3中的实例4。在随后的过程中,模型将单个对象实例的序列视为一个整体。实例序列匹配:主要用于对输入的预测结果进行序列级的匹配和监督。上面已经描述了从序列的图像输入到序列的实例预测的过程。但是预测序列的顺序实际上是建立在帧的输入顺序保持在帧的维度上的假设上,而不同实例的输出顺序在每一帧的预测中是一致的。框架的顺序很容易维护,只要输入输出的顺序一致即可,但是不同框架的内部实例的顺序是无法保证的,所以我们需要设计一个专门的监督模块来维护这个顺序。在一般的目标探测中,每个定位点都会有其对应的锚点,所以分配了每个定位点对应的地面真值监督。然而,在我们的模型中,实际上没有锚和位置的显式信息,因此我们没有每个输入点属于哪个实例的现成监督信息。为了发现这种监督并在序列维度上直接监督,我们提出了实例序列匹配模块。该模块将每个实例的预测序列与标注数据中每个实例的地面真值序列进行二进制匹配,通过匈牙利匹配找到每个预测最近的标注数据,并以此作为其地面真值进行监督,并进行后续的损失计算和学习。实例分割:主要用于获得最终的分割结果序列。Seq2Seq的序列预测过程前面已经介绍过了,我们的模型已经能够完成序列预测和追踪关联。但到目前为止,我们只为每个实例找到了一个有代表性的特征向量,最终要解决的任务是分割任务。如何将这个特征向量转化为最终的掩模序列,是实例序列分割模块要解决的问题。如前所述,实例分割的本质是像素相似度的学习。因此,我们初始计算掩模的方式是利用实例的预测和编码后的特征图计算自身的注意相似度,并将得到的相似度图作为该实例对应的帧的初始注意掩模特征。
为了更好地利用时序信息,我们将属于同一实例的多帧注意力掩模作为掩模序列输入3D卷积模块进行分割,直接得到最终的分割序列。该方法利用多帧同一实例的特点,增强了单帧的分割结果,可以最大限度地发挥时序优势。
重新定义问题
根据前面的描述,在线学习中损失的计算主要有两个地方,一个是实例序列匹配阶段的匹配过程,一个是找到监管后全网损失函数的计算过程。
序列匹配过程的计算公式如公式1所示:由于匹配阶段仅用于寻找监督,且掩模间距离的计算是密集的,所以在此阶段我们只考虑盒和预测的类别C。第一行的Yi表示第I个实例对应的地面真值序列,其中C表示类别,B表示包围盒,T表示帧数,即T帧的这个实例对应的类别和包围盒序列。第二行和第三行分别显示预测系列的结果,其中P表示ci类别中预测的概率,B表示预测的边界框。序列间距离的计算是通过计算两个序列对应位置的值之间的损失函数得到的,在图中用Lmatch表示。对于每个预测序列,找出具有最低l匹配的地面真实序列作为其监督。根据相应的监督信息,可以计算出整个网络的损失函数。
公式1实例序列匹配计算流程
因为我们的方法是把分类、检测、分割、跟踪整合成一个端到端的网络,最终的损失函数也包括类别、包围盒、遮罩三个方面。通过直接计算序列的损失函数来反映跟踪。公式2表示分割的损失函数。在获得相应的监督结果后,我们计算相应序列之间的骰子损失和焦点损失作为掩模的损失函数。
公式2分割损失函数
的最终损失函数如公式3所示,它是包括分类(类概率)、检测(包围盒)和分割(掩模)的序列损失函数的总和。
公式3
VisTR算法流程
为了验证方法的效果,我们在YouTube-VIS上进行实验,这是一个广泛使用的视频实例分割数据集,包含2238个训练视频,302个验证视频和343个测试视频,40个对象类别。模型的评价标准包括AP和AR,以视频维度的多帧掩膜间IOU为阈值。
VisTR网络结构
与现有的方法相比,VisTR最大的区别在于它直接对视频建模,而视频与图像的主要区别在于视频包含了丰富的时序信息。如果说有效的挖掘和学习时序信息是视频理解的关键,我们首先探讨了时序信息的重要性。时间序列包含两个维度:时间序列的数量(帧数)和有序与无序的对比。
表1不同帧数模型训练效果对比
表1显示了不同帧的剪辑训练模型的最终测试结果。不难看出,随着帧数从18增加到36,模型的精度AP也在不断提高,证明多帧提供的更丰富的时序信息有助于模型学习。
表2时序干扰与按时序训练的效果比较
表2示出了通过使用扰乱物理时间序列的剪辑和遵循物理时间序列的剪辑的模型训练的效果的比较。可以看出按照时间顺序训练出来的模型有一个点的提升,证明VisTR已经学会了物体在物理时间中的变化和规律,按照物理时间顺序对视频建模也有助于视频的理解。
VisTR损失函数
第二个实验是探究式提问。由于我们的模型直接对36个图像建模,并为每个图像预测10个对象,因此它需要360次查询,对应于表3的最后一行中的预测级别。我们希望探究属于同一个框架或同一个实例的查询是否彼此相关,即它们是否可以共享。针对这一目标,我们设计了帧级实验:即仅用一个查询特征预测一帧,实例级实验:仅用一个查询特征预测一个实例。
可以看到,实例级的结果只比预测级少一分,而框架级的结果低20分,证明了属于同一个实例的不同框架的查询是可以共享的,但是同一个框架中不同实例的查询信息是不能共享的。预测级的查询与输入图像帧数成正比,而实例级的查询可以实现不依赖于输入帧数的模型。只是模型要预测的实例数量有限,输入帧数不限,这也是未来研究的方向。此外,我们还设计了视频级的实验,即仅通过查询的一个嵌入特征来预测整个视频,该模型可以实现8.4的AP。
表3不同类型查询的效果比较
实验结果
以下是我们在实验中发现有效的其他设计。
表4具有或不具有位置编码的实验效果的比较
因为在特征序列化的过程中会丢失原始的时空信息,所以我们提供原始的位置编码特征来保持原始的位置信息。表5对有无该模块进行了比较。位置编码提供的位置信息可以带来5个点的改进。
表5 CNN编码的特征与变压器编码的特征在分割效果上的比较
在分割过程中,通过计算实例的预测值和编码后特征的自我关注度,得到初始关注度模板。在表6中,我们比较了使用CNN编码特征和Transformer编码特征的分割效果,使用Transformer特征可以提高一点。实验证明,Transformer在更新全局特征方面是有效的。
表6具有或不具有3D卷积的实验效果的比较
表6显示了分割模块中3D卷积效果的比较。利用3D卷积可以带来一点改善,证明了利用时序信息直接分割多帧掩模的有效性。
时序信息的重要性
图4 VisTR可视化效果
VisTR在YouTube-VIS上的可视化效果如图4所示,其中每一行代表同一视频的序列,相同的颜色对应同一实例的分割结果。可以看出,无论(a)实例存在遮挡(b)实例位置存在相对变化(c)同类实例靠近易混淆实例,还是(d)实例处于不同姿态,模型都能实现较好的分割和跟踪,证明VisTR在具有挑战性的情况下仍有较好的效果。
Query探究
表7 VisTR可视化效果
表7显示了我们的方法和其他方法在YoutubeVIS数据集上的比较。我们的方法实现了单个模型(其中MaskProp包含多个模型的组合)的最佳效果,在57.7FPS的速度下实现了40.1 AP,其中前面的27.7指的是加入顺序数据加载部分的速度(这部分可以利用并行性进行优化),57.7指的是纯模型推理的速度。由于我们的方法直接同时对36帧图像进行建模,相比同一模型的单帧处理,理想情况下可以带来36倍左右的速度提升,更有利于视频模型的广泛应用。
其他设计
视频实例分割是指同时对视频中感兴趣的对象进行分类、分割和跟踪的任务。现有的方法通常设计复杂的流程来解决这个问题。本文提出了一种新的基于Transformer的视频实例分割框架VisTR,该框架将视频实例分割任务视为一个直接的端到端并行序列解码和预测问题。给定一个多帧图像作为输入的视频,VisTR直接按顺序输出视频中每个实例的遮罩序列。该方法的核心是一种新的实例序列匹配和分割策略,可以在整个序列层次上监督和分割实例。VisTR将实例分割和跟踪统一到相似性学习的框架中,从而大大简化了过程。没有任何花招,VisTR在所有使用单一模型的方法中取得了最好的结果,并在YouTube-VIS数据集上取得了最快的速度。
据我们所知,这是第一个将变形金刚应用于视频分割的方法。我们希望我们的方法可以启发更多的视频实例分割的研究,也希望这个框架可以在未来应用于更多的视频理解任务。更多论文详情请参考原文《End-to-End Video Instance Segmentation with Transformers》,代码也已在GitHub:https://github.com/Epiphqny/VisTR.上开源欢迎了解或使用。
可视化结果
美团无人车配送中心3360余庆、赵亮、宝山、沈浩等。阿德莱德大学:王新龙和沈春华。
方法对比
视频实例分割,https://arxiv.org/abs/1905.04804.Mask R-CNN,https://arxiv.org/abs/1703.06870.Classifying,用掩膜传播分割和跟踪视频中的对象实例,https://arxiv.org/abs/1912.04573.STEm-Seg:时空嵌入用于视频中的实例分割,https://arxiv.org/abs/2003.08429.Attention是你所需要的一切,https://arxiv.org/abs/1706.03762.End-to-End用变形金刚进行对象检测,https://arxiv.org/abs/2005.12872.Image, https://arxiv.org/abs/1802.05751.
总结与展望
美团无人车配送中心大量职位正在持续招聘中,我们正在寻找算法/系统/硬件开发工程师和专家。欢迎有兴趣的同学将简历发至:ai.hr@meituan.com(邮件标题注明:美团无人车团队)。
|本文由美团技术团队制作,版权归美团所有。欢迎转载或使用本文内容用于分享、交流等非商业用途。请注明“内容转载自美团技术团队”。未经许可,不得复制或商业使用本文。对于任何商业活动,请发送电子邮件到tech@meituan.com授权。