Closed JunnHan closed 3 years ago
视频帧相较于静态图像含有更多信息,如运动信息以及时间上的连续性,在分类与分割方面能提供更多的帮助。分割与跟踪在相似度学习上来讲,分割是要学习pixel-level的相似度;跟踪是想要学习实例间的相似性。而Transformer刚好具备学习长期依赖的能力,适合应用于视频来学习帧间的时序信息。 本文很吸引我的一个点是预测的序列是按输入图像的顺序排列的,而每一帧图像的预测结果则是遵循着同样的实例顺序,因此跟踪很自然地融进了实例分割的统一框架。 提出instance sequence matching策略以及instance sequence segmentation模块来实现整个分割跟踪任务。其中,instance sequence matching构建输出实例序列与GT的二分图匹配,提供了训练监督信息;instance sequence segmentation模块将多帧间的实例mask特征进行聚合,并通过3D卷积得到分割mask序列。 整体框架如下图:
VisTR Architecture 整体结构如下图:
Backbone:正常的backbone,因为是针对视频序列,因此得到的特征图维度是concatenate后的T×C×H×W。 Transformer encoder:基本与DETR类似,先1×1的卷积进行降维操作T×d×H×W,再转成2D维度,d×THW。时间顺序始终与初始的输入保持一致。encoder的各层还是标准配置,多头的自注意力模块与全连接的前向网络。 Temporal and spatial positional encoding:Transformer的结构是排列无关的,但是分割任务则是希望得到精确的位置信息,因此在输入补充上了positional encodings,包含了三维的信息(时间序列、水平与垂直方向)
值得注意的是,d的取值应该能被3整除,因为三维的positional encodings需要concatenate起来形成最终的d维的positional encoding,再加到每一个attention layer的输入上。 Transformer decoder:decoder也与DETR相类似,但同样,考虑到是处理视频信息,因此queries的数量又每帧图像的n个转变为n×T个,T代表视频帧数量。在排列顺序上,整体的输出应该按照输入帧的信息,在不同帧的预测上,实力预测的顺序应该保持一致。这样不同帧间的跟踪问题就可以直接利用顺序编号完成。
Instance Sequence Matching 在建立预测与GT的一对一的关系上时,依然采用目标为代价最小的二分图匹配,匈牙利算法求解,如下式:
但考虑到直接计算pixel-level的成本太高,因此利用bbox来替代。与DETR一致,采用3-layer的FFN+ReLU预测边框信息,linear projection layer预测类别信息。但由于是视频序列,因此在处理时,依然采用序列与序列对应的方法,GT可以表示成:
同样也可以得到预测的置信度与边框信息(σ(i)表示index):
因此可以得到代价函数为:
匈牙利损失由下式计算得到:
其中边框损失由L1与IoU loss组成:
Instance Sequence Segmentation 对于每一帧图像,预测的目标与其对应的encoder输出特征图送到自注意力模块中得到初始attention maps。将得到的attention maps和backbone feature、encoder feature 一起fuse起来送去做分割,fusion的最后一层选用可形变卷积层。考虑到不同帧的同一实例的特征能够相互增强,因此使用3D卷积来增强其时序上的关系,最后得到一维的mask输出,损失函数如下:
其中,Dice loss是医学影像分割中提出的loss。
Inference:很有意思的地方是在推理完成跟踪的阶段,并不需要后处理操作来关联实例,这主要得益于predictions的顺序关系。
Abstract
本文基于Transformer提出了新的视频实例分割框架VisTR,将视频实力分割任务看成是直接端到端并行序列预测/解码问题。给定视频片段,直接输出每个实例的按顺序的mask序列。不同于现有方法,VisTR从同一角度出发处理实例分割与跟踪问题,利用相似度学习进行分析,实现了又快又准的视频实例分割