实例宰割是计算机视觉中的根底问题之一。尽管动态图像中的实例宰割曾经有很多的钻研,对视频的实例宰割(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 所示,第一行为给定视频的多帧图像序列,第二行为视频实例宰割的后果,其中雷同色彩对应同一个实例。视频实例宰割不光要对单帧图像中的物体进行检测和宰割,而且要在多帧的维度下找到每个物体的对应关系,即对其进行关联和跟踪。
相干工作
现有的视频实例宰割算法通常为蕴含多模块、多阶段的简单流程。最早的 Mask Track R-CNN[1] 算法同时蕴含实例宰割和跟踪两个模块,通过在图像实例宰割算法 Mask R-CNN[2] 的网络之上减少一个跟踪的分支实现,该分支次要用于实例特色的提取。在预测阶段,该办法利用内部 Memory 模块进行多帧实例特色的存储,并将该特色作为实例关联的一个因素进行跟踪。该办法的实质依然是单帧的宰割加传统办法进行跟踪关联。Maskprop[3] 在 Mask Track R-CNN 的根底上减少了 Mask Propagation 的模块以晋升宰割 Mask 生成和关联的品质,该模块能够实现以后帧提取的 mask 到四周帧的流传,但因为帧的流传依赖于事后计算的单帧的宰割 Mask,因而要失去最终的宰割 Mask 须要多步的 Refinement。该办法的实质依然是单帧的提取加帧间的流传,且因为其依赖多个模型的组合,办法较为简单,速度也更慢。
Stem-seg[4] 将视频实例宰割划分为实例的辨别和类别的预测两个模块。为了实现实例的辨别,模型将视频的多帧 Clip 构建为 3D Volume,通过对像素点的 Embedding 特色进行聚类实现不同物体的宰割。因为上述聚类过程不蕴含实例类别的预测,因而须要额定的语义宰割模块提供像素的类别信息。依据以上形容,现有的算法大多因循单帧图像实例宰割的思维,将视频实例宰割工作划分为单帧的提取和多帧的关联多个模块,针对单个工作进行监督和学习,处理速度较慢且不利于施展视频时序连续性的劣势。本文旨在提出一个端到端的模型,将实例的检测、宰割和跟踪对立到一个框架下实现,有助于更好地开掘视频整体的空间和时序信息,且可能以较快的速度解决视频实例宰割的问题。
VisTR 算法介绍
从新定义问题
首先,咱们对视频实例宰割这一工作进行了从新的思考。相较于单帧图像,视频含有对于每个实例更为齐备和丰盛的信息,比方不同实例的轨迹和静止模态,这些信息可能帮忙克服单帧实例宰割工作中一些比拟艰难的问题,比方外观类似、物体邻近或者存在遮挡的情景等。另一方面,多帧所提供的对于单个实例更好的特色示意也有助于模型对物体进行更好的跟踪。因而,咱们的办法旨在实现一个端到端对视频实例指标进行建模的框架。为了实现这一指标,咱们第一个思考是:视频自身是序列级别的数据,是否间接将其建模为序列预测的工作?比方,借鉴自然语言解决(NLP)工作的思维,将视频实例宰割建模为序列到序列(Seq2Seq)的工作,即给定多帧图像作为输出,间接输入多帧的宰割 Mask 序列,这时须要一个可能同时对多帧进行建模的模型。
第二个思考是:视频的实例宰割理论同时蕴含实例宰割和指标跟踪两个工作,是否将其对立到一个框架下实现?针对这个咱们的想法是:宰割自身是像素特色之间类似度的学习,而跟踪实质是实例特色之间类似度的学习,因而实践上他们能够对立到同一个类似度学习的框架之下。
基于以上的思考,咱们选取了一个同时可能进行序列的建模和类似度学习的模型,即自然语言解决中的 Transformer[5] 模型。Transformer 自身能够用于 Seq2Seq 的工作,即给定一个序列,能够输出一个序列。并且该模型非常善于对长序列进行建模,因而非常适合利用于视频畛域对多帧序列的时序信息进行建模。其次,Transformer 的外围机制,自注意力模块(Self-Attention),能够基于两两之间的类似度来进行特色的学习和更新,使得将像素特色之间类似度以及实例特色之间类似度对立在一个框架内实现成为可能。以上的个性使得 Transformer 成为 VIS 工作的失当抉择。除此之外,Transformer 曾经有被利用于计算机视觉中进行指标检测的实际 DETR[6]。因而咱们基于 transformer 设计了视频实例宰割(VIS)的模型 VisTR。
VisTR 算法流程
遵循上述思维,VisTR 的整体框架如图 2 所示。图中最右边示意输出的多帧原始图像序列(以三帧为例),左边示意输入的实例预测序列,其中雷同形态对应同一帧图像的输入,雷同色彩对应同一个物体实例的输入。给定多帧图像序列,首先利用卷积神经网络(CNN)进行初始图像特色的提取,而后将多帧的特色联合作为特色序列输出 Transformer 进行建模,实现序列的输出和输入。
不难看出,首先,VisTR 是一个端到端的模型,即同时对多帧数据进行建模。建模的形式即:将其变为一个 Seq2Seq 的工作,输出多帧图像序列,模型能够间接输入预测的实例序列。尽管在时序维度多帧的输出和输入是有序的,然而单帧输出的实例的序列在初始状态下是无序的,这样依然无奈实现实例的跟踪关联,因而咱们强制使得每帧图像输入的实例的程序是统一的(用图中同一形态的符号有着雷同的色彩变动程序示意),这样只有找到对应地位的输入,便可自然而然实现同一实例的关联,无需任何后处理操作。为了实现此指标,须要对属于同一个实例地位处的特色进行序列维度的建模。针对性地,为了实现序列级别的监督,咱们提出了 Instance Sequence Matching 的模块。同时为了实现序列级别的宰割,咱们提出了 Instance Sequence Segmentation 的模块。端到端的建模将视频的空间和工夫特色当做一个整体,能够从全局的角度学习整个视频的信息,同时 Transformer 所建模的密集特色序列又可能较好的保留细节的信息。
VisTR 网络结构
VisTR 的具体网络结构如图 3 所示,以下是对网络的各个组成部分的介绍:
- Backbone:次要用于初始图像特色的提取。针对序列的每一帧输出图像,首先利用 CNN 的 Backbone 进行初始图像特色的提取,提取的多帧图像特色沿时序和空间维度序列化为多帧特色序列。因为序列化的过程损失了像素原始的空间和时序信息,而检测和宰割的工作对于地位信息非常敏感,因而咱们将其原始的空间和程度地位进行编码,作为 Positional Encoding 叠加到提取的序列特色上,以放弃原有的地位信息。Positional Encoding 的形式遵循 Image Transformer[7] 的形式,只是将二维的原始地位信息变为了三维的地位信息,这部分在论文中有具体的阐明。
- Encoder:次要用于对多帧特色序列进行整体的建模和更新。输出后面的多帧特色序列,Transformer 的 Encoder 模块利用 Self-Attention 模块,通过点和点之间类似度的学习,进行序列中所有特色的交融和更新。该模块通过对时序和空间特色的整体建模,可能对属于同一个实例的特色进行更好的学习和加强。
- Decoder:次要用于解码输入预测的实例特色序列。因为 Encoder 输出 Decoder 的是密集的像素特色序列,为了解码出稠密的实例特色,咱们参考 DETR 的形式,引入 Instance Query 进行代表性的实例特色的解码。Instance Query 是网络本身学习的 Embedding 参数,用于和密集的输出特色序列进行 Attention 运算选取可能代表每个实例的特色。以解决 3 帧图像,每帧图像预测 4 个物体为例,模型一共须要 12 个 Instance Query,用于解码 12 个实例预测。和后面的示意统一,用同样的形态示意对应同一帧图像的预测,同样的色彩示意同一个物体实例在不同帧的预测。通过这种形式,咱们能够结构出每个实例的预测序列,对应为图 3 中的 Instance 1…Instance 4,后续过程中模型都将单个物体实例的序列看作整体进行解决。
- Instance Sequence Matching:次要用于对输出的预测后果进行序列级别的匹配和监督。后面曾经介绍了从序列的图像输出到序列的实例预测的过程。然而预测序列的程序其实是基于一个假如的,即在帧的维度放弃帧的输出程序,而在每帧的预测中,不同实例的输入程序保持一致。帧的程序比拟容易放弃,只有管制输出和输入的程序统一即可,然而不同帧外部实例的程序其实是没有保障的,因而咱们须要设计专门的监督模块来维持这个程序。在通用指标检测之中,在每个地位点会有它对应的 Anchor,因而对应每个地位点的 Ground Truth 监督是调配好的,而在咱们的模型中,实际上是没有 Anchor 和地位的显式信息,因而对于每个输出点咱们没有现成的属于哪个实例的监督信息。为了找到这个监督,并且间接在序列维度进行监督,咱们提出了 Instance Sequence Matching 的模块,这个模块将每个实例的预测序列和标注数据中每个实例的 Ground Truth 序列进行二分匹配,利用匈牙利匹配的形式找到每个预测最近的标注数据,作为它的 Groud Truth 进行监督,进行前面的 Loss 计算和学习。
- Instance Sequence Segmentation:次要用于获取最终的宰割后果序列。后面曾经介绍了 Seq2Seq 的序列预测过程,咱们的模型曾经可能实现序列的预测和跟踪关联。然而到目前为止,咱们为每个实例找到的只是一个代表性的特征向量,而最终要解决的是宰割的工作,如何将这个特征向量变为最终的 Mask 序列,就是 Instance Sequence Segmentation 模块要解决的问题。后面曾经提到,实例宰割实质是像素类似度的学习,因而咱们初始计算 Mask 的形式就是利用实例的预测和 Encode 之后的特色图计算 Self-Attention 类似度,将失去的类似度图作为这个实例对应帧的初始 Attention Mask 特色。为了更好的利用时序的信息,咱们将属于同一个实例的多帧的 Attention Mask 作为 Mask 序列输出 3D 卷积模块进行宰割,间接失去最终的宰割序列。这种形式通过利用多帧同一实例的特色对单帧的宰割后果进行加强,能够最大化的施展时序的劣势。
VisTR 损失函数
依据后面的形容,网络学习中须要计算损失的次要有两个中央,一个是 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 探索
第二个试验是对于 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,欢送大家来理解或应用。
作者
- 美团无人车配送核心: 钰晴、昭良、保山、申浩等。
- 阿德莱德大学:王鑫龙、沈春华。
参考文献
- Video Instance Segmentation, https://arxiv.org/abs/1905.04…
- Mask R-CNN, https://arxiv.org/abs/1703.06…
- Classifying, Segmenting, and Tracking Object Instances in Video with Mask Propagation, https://arxiv.org/abs/1912.04…
- STEm-Seg: Spatio-temporal Embeddings for Instance Segmentation in Videos, https://arxiv.org/abs/2003.08…
- Attention Is All You Need, https://arxiv.org/abs/1706.03…
- End-to-End Object Detection with Transformers, https://arxiv.org/abs/2005.12…
- Image Transformer, https://arxiv.org/abs/1802.05…
招聘信息
美团无人车配送核心大量岗位继续招聘中,诚招算法 / 零碎 / 硬件开发工程师及专家。欢送感兴趣的同学发送简历至:ai.hr@meituan.com(邮件题目注明:美团无人车团队)。
浏览美团技术团队更多技术文章合集
前端 | 算法 | 后端 | 数据 | 平安 | 运维 | iOS | Android | 测试
| 在公众号菜单栏对话框回复【2020 年货】、【2019 年货】、【2018 年货】、【2017 年货】等关键词,可查看美团技术团队历年技术文章合集。
| 本文系美团技术团队出品,著作权归属美团。欢送出于分享和交换等非商业目标转载或应用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者应用。任何商用行为,请发送邮件至 tech@meituan.com 申请受权。