点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
本文作者:西瓜学习 | 来源:知乎(已授权)
https://zhuanlan.zhihu.com/p/343286325
作者单位:美团, 阿德莱德大学
论文:https://arxiv.org/abs/2011.14503
这篇应该是第一篇将Transformer用于视频实例分割的paper。Transformer是一个非常有潜力的结构,可以统一不同模态的数据,统一不同的视觉任务。
Transformer可以用于建模long-range依赖,非常适用于视频相关的任务,对时序信息建模。
Transformer的核心self-attention,可以不断的学习,更新,基于帧与帧之间的相似性。
本篇论文的VisTR(Video Instance Segmentation TRansformer)对一个序列并行解码,预测。首先我们宏观的来看一下整个网络的pipeline:
第一阶段,将若干帧一起输入pipeline,经过CNN提取特征后,将多帧按照时间顺序concat在一起,得到clip-level sequence。
第二阶段,transformer将上述clip-level sequence作为输入,按顺序输出一些列object预测结果。
object预测按照输入图片得顺序输出。如上图,同样得形状表示属于同一帧得object。同样得颜色表示这些object属于同一类。
为了解决如何保持输出序列得有序性以及合理得mask。
整个架构由四部分组成,backbone,transformer,instance sequence matching,instance sequence segmentation。输入一个视频序列,输出该视频序列对应的每帧的mask。
backbone负责提取一个序列帧的特征。提取每一帧的特征并将所有的特征图concat一起,得到 。
Encoder利用self-attention ,建模视频内每一个像素之间的相似性。首先使用1×1的卷积将输入的特征图tensor降维到 。为了使得T输入的tensor适用于Transformer的结构,将spatial和temporal维度flatten到同一维,得到 ,其为一个二维的tensor。d相当于transformer在处理语言时句子的长度,T×H×W相当关于embedded vector的长度。将该tensor输入到multi-head self-attention module和fully connected feed forward network。
Vision下的transformer同样需要position encoding。Transformer的结果是与输入序列顺序无关的(permutation-invariant),而实例分割任务需要精确的位置信息。论文采用原始transformer的位置编码公式,得到包含temporal和spatial三个维度的编码信息。计算三个维度的position encoding,然后concat在一起。
其中, ,d要能被3整除。该部分编码类似于DETR中的position encoding,无非是这里使用的是三维,而DETR使用的是二维。
同样借用DETR中的思想,预设每一帧有固定n个的input embedding用于抽取instance feature,T帧总共会query n×T个instance。这些instance queries是通过模型学习得到的。Decoder的输入为预设的instance queries和encoder的输出。这样,预测的结果按照原始视频帧序列的顺序输出,输出为n×T个instance向量,即学习到的instance queries。
这里预设的instance queries可以理解为Faster-RCNN中预设的anchors,只是queries是可学习的。instance queries的每一个通道,学习到对应instance在所有训练数据中的分布。
ViTR的decoder最后得到固定大小的N个prediction序列。Instance Sequence Matching模块是为了解决如何在不同图片的prediction序列中对于相同的instance保持相对位置不变,找到每帧中instance对应的GT从而监督训练。简单来说就是对预测到的instance找到对应的Ground Truth从而训练模型。
decoder输出的固定个数的prediction序列是无序的,每一帧包含n个instance sequence。本论文和DETR相同,利用匈牙利算法进行匹配。ViTR采用了和DETR类似的方法,虽然是实例分割,但需要用到目标检测中的bounding box方便组合优化计算。通过FFN,即全连接计算出归一化的bounding box中心,宽和高。通过softmax计算出该bounding box的label。最后我们得到n×T个bounding box。利用上述得到label概率分布和bounding box匹配instance sequence和gournd truth。
$
其中, 为pair-wise的代价, 为groudn truth, 为预测的sequence其中一种排列组合。简单来说,就是找 最小的一个prediction的排列组合用于计算损失。如何找到的方法就是用匈牙利算法,该方法更为高效。该代价是为了寻找最佳的组后,并不是训练用的loss。
最后计算匈牙利算法的loss,同时考虑label的概率分布以及bounding box的位置。Loss基本遵循DETR的设计,使用L1 loss和IOU loss。下式为训练用的loss。由label,bounding box,instance sequence三者的loss组成。
该模块的任务是计算每一个instance在对应帧中的mask。
对于每一帧,将decoder输出的instance preidiction和对应帧的encoder得到的feature 输入到一个self-attention模块中,得到初始的attention map。从这个操作可以看出,将encoder和decoder的输出做一个self-attention,可以把encoder看作一个feature map,decoder看作一个attention map,attention map是通过上面的Instance Sequence Matching Module 匹配后训练得到的。feature map和attention map对应通道相乘即为该帧上该通道对应的instance的mask结果。
之后self-attention的结果会和backbone提取的特征和encode的输出按帧的顺序融合。最后输出每一帧中instance的mask结果。
网络的最后,基于不同帧中同一个instance可以相互增强的思想,使用3D卷积输出最后的instance segmentation 结果。
使用YouTube-VIS数据集测试,该数据集视频最大帧数为36,所以设定T为36。不需要后处理将多个处理结果拼接在一起。预设每一帧至多10个instance,故instance query的长度为360。
上述论文和代码下载
后台回复:VisTR,即可下载上述论文PDF
后台回复:CVPR2021,即可下载CVPR 2021论文和开源代码合集
重磅!CVer-Transformer交流群成立
扫码添加CVer助手,可申请加入CVer-Transformer方向 微信交流群,也可申请加入CVer大群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、Transformer、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,才能通过且邀请进群
▲长按加微信群
▲点击上方卡片,关注CVer公众号