实例分割是计算机视觉中的基础问题之一。虽然静态图像中的实例分割已经有不少的研究,对视频的实例分割(Video Instance Segmentation,简称VIS)的研究却相对较少。而真实世界中的摄像头所接收的,不管自动驾驶背景下车辆实时感知的周围场景,仍是网络媒体中的长短视频,大多数为视频流的信息而非纯图像信息。于是研究对视频建模的模型有着十分重要的意义,本文系美团无人配送团队在CVPR 2021发表的一篇论文解读。
实例分割是计算机视觉中的基础问题之一。目前,静态图像中的实例分割业界已经进行了不少的研究,可是对视频的实例分割(Video Instance Segmentation,简称VIS)的研究却相对较少。而真实世界中的摄像头所接收的,不管是自动驾驶背景下车辆实时感知的周围场景,仍是网络媒体中的长短视频,大多数都是视频流信息而非纯图像信息。于是研究对视频建模的模型有着十分重要的意义,本文系美团无人配送团队在CVPR2021发表的一篇Oral论文: 《End-to-End Video Instance Segmentation with Transformers》的解读。本届CVPR大会共收到7015篇有效投稿,最终共1663篇论文被接收,论文录用率为23.7%,Oral的录用率仅为4%。前端
图像的实例分割指的是对静态图像中感兴趣的物体进行检测和分割的任务。视频是包含多帧图像的信息载体,相对于静态图像来讲,视频的信息更为丰富,于是建模也更为复杂。不一样于静态图像仅含有空间的信息,视频同时含有时间维度的信息,于是更接近对真实世界的刻画。其中,视频的实例分割指的是对视频中感兴趣的物体进行检测、分割和跟踪的任务。如图1所示,第一行为给定视频的多帧图像序列,第二行为视频实例分割的结果,其中相同颜色对应同一个实例。视频实例分割不光要对单帧图像中的物体进行检测和分割,并且要在多帧的维度下找到每一个物体的对应关系,即对其进行关联和跟踪。git
现有的视频实例分割算法一般为包含多模块、多阶段的复杂流程。最先的Mask Track R-CNN[1]算法同时包含实例分割和跟踪两个模块,经过在图像实例分割算法Mask R-CNN[2]的网络之上增长一个跟踪的分支实现,该分支主要用于实例特征的提取。在预测阶段,该方法利用外部Memory模块进行多帧实例特征的存储,并将该特征做为实例关联的一个要素进行跟踪。该方法的本质仍然是单帧的分割加传统方法进行跟踪关联。Maskprop[3]在Mask Track R-CNN的基础上增长了Mask Propagation的模块以提高分割Mask生成和关联的质量,该模块能够实现当前帧提取的mask到周围帧的传播,但因为帧的传播依赖于预先计算的单帧的分割Mask,所以要获得最终的分割Mask须要多步的Refinement。该方法的本质仍然是单帧的提取加帧间的传播,且因为其依赖多个模型的组合,方法较为复杂,速度也更慢。github
Stem-seg[4]将视频实例分割划分为实例的区分和类别的预测两个模块。为了实现实例的区分,模型将视频的多帧Clip构建为3D Volume,经过对像素点的Embedding特征进行聚类实现不一样物体的分割。因为上述聚类过程不包含实例类别的预测,所以须要额外的语义分割模块提供像素的类别信息。根据以上描述,现有的算法大多沿袭单帧图像实例分割的思想,将视频实例分割任务划分为单帧的提取和多帧的关联多个模块,针对单个任务进行监督和学习,处理速度较慢且不利于发挥视频时序连续性的优点。本文旨在提出一个端到端的模型,将实例的检测、分割和跟踪统一到一个框架下实现,有助于更好地挖掘视频总体的空间和时序信息,且可以以较快的速度解决视频实例分割的问题。算法
首先,咱们对视频实例分割这一任务进行了从新的思考。相较于单帧图像,视频含有关于每一个实例更为完备和丰富的信息,好比不一样实例的轨迹和运动模态,这些信息可以帮助克服单帧实例分割任务中一些比较困难的问题,好比外观类似、物体邻近或者存在遮挡的情形等。另外一方面,多帧所提供的关于单个实例更好的特征表示也有助于模型对物体进行更好的跟踪。所以,咱们的方法旨在实现一个端到端对视频实例目标进行建模的框架。为了实现这一目标,咱们第一个思考是:视频自己是序列级别的数据,可否直接将其建模为序列预测的任务?好比,借鉴天然语言处理(NLP)任务的思想,将视频实例分割建模为序列到序列(Seq2Seq)的任务,即给定多帧图像做为输入,直接输出多帧的分割Mask序列,这时须要一个可以同时对多帧进行建模的模型。后端
第二个思考是:视频的实例分割实际同时包含实例分割和目标跟踪两个任务,可否将其统一到一个框架下实现?针对这个咱们的想法是:分割自己是像素特征之间类似度的学习,而跟踪本质是实例特征之间类似度的学习,所以理论上他们能够统一到同一个类似度学习的框架之下。安全
基于以上的思考,咱们选取了一个同时可以进行序列的建模和类似度学习的模型,即天然语言处理中的Transformer[5]模型。Transformer自己能够用于Seq2Seq的任务,即给定一个序列,能够输入一个序列。而且该模型十分擅长对长序列进行建模,所以很是适合应用于视频领域对多帧序列的时序信息进行建模。其次,Transformer的核心机制,自注意力模块(Self-Attention),能够基于两两之间的类似度来进行特征的学习和更新,使得将像素特征之间类似度以及实例特征之间类似度统一在一个框架内实现成为可能。以上的特性使得Transformer成为VIS任务的恰当选择。除此以外,Transformer已经有被应用于计算机视觉中进行目标检测的实践DETR[6]。所以咱们基于transformer设计了视频实例分割(VIS)的模型VisTR。网络
遵守上述思想,VisTR的总体框架如图2所示。图中最左边表示输入的多帧原始图像序列(以三帧为例),右边表示输出的实例预测序列,其中相同形状对应同一帧图像的输出,相同颜色对应同一个物体实例的输出。给定多帧图像序列,首先利用卷积神经网络(CNN)进行初始图像特征的提取,而后将多帧的特征结合做为特征序列输入Transformer进行建模,实现序列的输入和输出。框架
不难看出,首先,VisTR是一个端到端的模型,即同时对多帧数据进行建模。建模的方式即:将其变为一个Seq2Seq的任务,输入多帧图像序列,模型能够直接输出预测的实例序列。虽然在时序维度多帧的输入和输出是有序的,可是单帧输入的实例的序列在初始状态下是无序的,这样仍然没法实现实例的跟踪关联,所以咱们强制使得每帧图像输出的实例的顺序是一致的(用图中同一形状的符号有着相同的颜色变化顺序表示),这样只要找到对应位置的输出,即可天然而然实现同一实例的关联,无需任何后处理操做。为了实现此目标,须要对属于同一个实例位置处的特征进行序列维度的建模。针对性地,为了实现序列级别的监督,咱们提出了Instance Sequence Matching的模块。同时为了实现序列级别的分割,咱们提出了Instance Sequence Segmentation的模块。端到端的建模将视频的空间和时间特征当作一个总体,能够从全局的角度学习整个视频的信息,同时Transformer所建模的密集特征序列又可以较好的保留细节的信息。运维
VisTR的详细网络结构如图3所示,如下是对网络的各个组成部分的介绍:ide
根据前面的描述,网络学习中须要计算损失的主要有两个地方,一个是Instance Sequence Matching阶段的匹配过程,一个是找到监督以后最终整个网络的损失函数计算过程。
Instance Sequence Matching过程的计算公式如式1所示:因为Matching阶段只是用于寻找监督,而计算Mask之间的距离运算比较密集,所以在此阶段咱们只考虑Box和预测的类别c两个因素。第一行中的yi表示对应第i个实例的Ground Truth序列,其中c表示类别,b表示Boundingbox,T表示帧数,即T帧该实例对应的类别和Bounding Box序列。第二行和第三行分别表示预测序列的结果,其中p表示在ci这个类别的预测的几率,b表示预测的Bounding Box。序列之间距离的运算是经过两个序列对应位置的值两两之间计算损失函数获得的,图中用Lmatch表示,对于每一个预测的序列,找到Lmatch最低那个Ground Truth序列做为它的监督。根据对应的监督信息,就能够计算整个网络的损失函数。
因为咱们的方法是将分类、检测、分割和跟踪作到一个端到端网络里,所以最终的损失函数也同时包含类别、Bounding Box和Mask三个方面,跟踪经过直接对序列算损失函数体现。公式2表示分割的损失函数,获得了对应的监督结果以后,咱们计算对应序列之间的Dice Loss和Focal Loss做为Mask的损失函数。
最终的损失函数如公式3所示,为同时包含分类(类别几率)、检测(Bounding Box)以及分割(Mask)的序列损失函数之和。
为了验证方法的效果,咱们在普遍使用的视频实例分割数据集YouTube-VIS上进行了实验,该数据集包含2238个训练视频,302个验证视频以及343个测试视频,以及40个物体类别。模型的评估标准包含AP和AR,以视频维度多帧Mask之间的IOU做为阈值。
相对于现有的方法,VisTR的最大区别是直接对视频进行建模,而视频和图像的主要区别在于视频包含着丰富的时序信息,若是有效的挖掘和学习时序信息是视频理解的关键,所以咱们首先探究了时序信息的重要性。时序包含两个维度:时序的多少(帧数)以及有序和无序的对比。
表1中展现了咱们利用不一样帧数的Clip训练模型最终的测试效果,不难看出,随着帧数从18提高至36,模型的精度AP也在不断提高,证实多帧提供的更丰富的时序信息对模型的学习有所帮助。
表2中展现了利用打乱物理时序的Clip以及按照物理时序的Clip进行模型训练的效果对比,能够看出,按照时间顺序训练的模型有一个点的提高,证实VisTR有学到物理时间下物体变化和规律,而按照物理时间顺序对视频建模也有助于视频的理解。
第二个实验是对于Query的探究。因为咱们的模型直接建模的36帧图像,对每帧图像预测10个物体,所以须要360个Query,对应表3最后一行的结果(Prediction Level)。咱们想探究属于同一帧或者同一个实例的Query之间是否存在必定的关联,便是否能够共享。针对这个目标,咱们分别设计了Frame Level的实验:即一帧只使用一个Query的特征进行预测,以及Instance level的实验:一个实例只使用一个Query的特征进行预测。
能够看到,Instance Level的结果只比Prediction Level的结果少一个点,而Frame Level的结果要低20个点,证实不一样帧属于同一个Instance的Query能够共享,而同一帧不一样Instance的Query信息不可共享。Prediction Level的Query是和输入的图像帧数成正比的,而Instance Level的Query能够实现不依赖输入帧数的模型。只限制模型要预测的Instance个数,不限制输入帧数,这也是将来能够继续研究的方向。除此以外,咱们还设计了Video Level的实验,即整个视频只用一个Query的Embedding特征进行预测,这个模型能够实现8.4的AP。
如下是实验过程当中咱们发现有效的其余设计。
因为在特征序列化的过程当中会损失原有的空间和时间信息,咱们提供了原始的Positional Encoding特征以保留原有的位置信息。在表5中进行了有无该模块的对比,Positional Encoding提供的位置信息能够带来约5个点的提高。
在分割的过程当中,咱们经过计算实例的Prediction与Encoded以后特征的Self-Attention来获取初始的Attention Mask。在表6中,咱们进行了利用CNN-Encoded的特征和利用Transformer-Encoded的特征进行分割的效果对比,利用Transformer的特征能够提高一个点。证实了Transformer进行全局特征更新的有效性。
表6中展现了在分割模块有无3D卷积的效果对比,使用3D卷积能够带来一个点的提高,证实了利用时序信息直接对多帧mask分割的有效性。
VisTR在YouTube-VIS的可视化效果如图4所示,其中每行表示同一个视频的序列,相同颜色对应同一个实例的分割结果。能够看出不管是在 (a).实例存在遮挡(b).实例位置存在相对变化 (c).同类紧邻易混淆的实例 以及 (d).实例处于不一样姿态情形下,模型都可以实现较好的分割个跟踪,证实在有挑战性的状况下,VisTR仍具备很好的效果。
表7是咱们的方法和其余方法在YoutubeVIS数据集上的对比。咱们的方法实现了单一模型的最好效果(其中MaskProp包含多个模型的组合),在57.7FPS的速度下实现了40.1的AP。其中前面的27.7指的是加上顺序的Data Loading部分的速度(这部分能够利用并行进行优化),57.7指的是纯模型Inference的速度。因为咱们的方法直接对36帧图像同时进行建模,所以相对于一样模型的单帧处理,理想状况下能带来大约36倍的速度提高,更有助于视频模型的普遍应用。
视频实例分割指的是同时对视频中感兴趣的物体进行分类,分割和跟踪的任务。现有的方法一般设计复杂的流程来解决此问题。本文提出了一种基于Transformer的视频实例分割新框架VisTR,该框架将视频实例分割任务视为直接端到端的并行序列解码和预测的问题。给定一个含有多帧图像的视频做为输入,VisTR直接按顺序输出视频中每一个实例的掩码序列。该方法的核心是一种新的实例序列匹配和分割的策略,可以在整个序列级别上对实例进行监督和分割。 VisTR将实例分割和跟踪统一到了类似度学习的框架下,从而大大简化了流程。在没有任何trick的状况下,VisTR在全部使用单一模型的方法中得到了最佳效果,而且在YouTube-VIS数据集上实现了最快的速度。
据咱们所知,这是第一个将Transformers应用于视频分割领域的方法。但愿咱们的方法可以启发更多视频实例分割的研究,同时也但愿此框架将来可以应用于更多视频理解的任务。关于论文的更多细节,请参考原文:《End-to-End Video Instance Segmentation with Transformers》,同时代码也已经在GitHub上开源:https://github.com/Epiphqny/VisTR,欢迎你们来了解或使用。
美团无人车配送中心大量岗位持续招聘中,诚招算法/系统/硬件开发工程师及专家。欢迎感兴趣的同窗发送简历至:ai.hr@meituan.com(邮件标题注明:美团无人车团队)。
阅读美团技术团队更多技术文章合集
前端 | 算法 | 后端 | 数据 | 安全 | 运维 | iOS | Android | 测试
| 在公众号菜单栏对话框回复【2020年货】、【2019年货】、【2018年货】、【2017年货】等关键词,可查看美团技术团队历年技术文章合集。
| 本文系美团技术团队出品,著做权归属美团。欢迎出于分享和交流等非商业目的转载或使用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者使用。任何商用行为,请发送邮件至tech@meituan.com申请受权。