CVPR 2021 Oral | Transformer再突破!美团等提出VisTR:视频实例分割网络

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

本文西瓜学习   |  来源:知乎(已授权)

https://zhuanlan.zhihu.com/p/343286325

End-to-End Video Instance Segmentation with Transformers

作者单位:美团, 阿德莱德大学

论文: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。

VisTR架构

整个架构由四部分组成,backbone,transformer,instance sequence matching,instance sequence segmentation。输入一个视频序列,输出该视频序列对应的每帧的mask。

Overall architecture

Backbone

backbone负责提取一个序列帧的特征。提取每一帧的特征并将所有的特征图concat一起,得到  。

Transformer Encoder

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。

Temporal and spatial positional encoding

Vision下的transformer同样需要position encoding。Transformer的结果是与输入序列顺序无关的(permutation-invariant),而实例分割任务需要精确的位置信息。论文采用原始transformer的位置编码公式,得到包含temporal和spatial三个维度的编码信息。计算三个维度的position encoding,然后concat在一起。

其中,  ,d要能被3整除。该部分编码类似于DETR中的position encoding,无非是这里使用的是三维,而DETR使用的是二维。

Transformer Decoder

同样借用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在所有训练数据中的分布。

Instance Sequence Matching

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 Sequence Segmentation

该模块的任务是计算每一个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 结果。

Expriments

使用YouTube-VIS数据集测试,该数据集视频最大帧数为36,所以设定T为36。不需要后处理将多个处理结果拼接在一起。预设每一帧至多10个instance,故instance query的长度为360。

上述论文和代码下载

后台回复:VisTR,即可下载上述论文PDF

后台回复:CVPR2021,即可下载CVPR 2021论文和开源代码合集

点击下方卡片并关注,了解CV最新动态

重磅!CVer-Transformer交流群成立

扫码添加CVer助手,可申请加入CVer-Transformer方向 微信交流群,可申请加入CVer大群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、Transformer、PyTorch和TensorFlow等群。

一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,才能通过且邀请进群

▲长按加微信群

▲点击上方卡片,关注CVer公众号

整理不易,请给CVer点赞和在看

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值