Mask Transfiner详解

论文信息:Mask Transfiner for High-Quality Instance Segmentation
代码链接:https://github.com/SysCV/transfiner
整体信息:这是ETH和港科大合作发表在CVPR2022上有关实例分割的论文,该论文中提出的Mask Transfiner通过引入 Incoherent Regions检测机制的方式,在不产生额外计算成本的情况下,有效地改善目标分割mask。在COCO,Cityscapes和BDD100K上均取得了明显的性能提升。

img

Motivation

img

现有的实例分割方法在高频区域的分割依旧比较粗糙,边缘像素点存在大量错分的情况,要获取精细化的mask,需要大分辨率的深度特征图来保留物体细节,与此同时,大尺寸会带来高计算量和内存消耗,因此如何在不显著提高计算成本的条件下,获取精细化mask极具挑战。

大致做法是,如上图所示,首先识别容易出错并需要优化的pixel区域(黄色区域),在论文里面称Incoherent Regions,这些区域往往出现在物体边界或者高频区域。只需要对这些pixel区域进行优化就行,优化的具体措施下面详细介绍。当然作者也有分析,实际预测错误的所有pixel中,有43%是分布在Incoherent Regions,作者将这部分区域的pixel直接替换成gt,coco mask ap可以提升倒51.

img

Incoherent Regions定义

实例分割的边缘错误很多是空间分辨率过低产生的,例如对物体标注mask的下采样、过小的RoI池化、和基于PCA/DCT的系数压缩等。这些分割方法把低分辨率特征作为输入,由于丢失了高分辨率图上的物体细节,使准确地分割物体细节非常困难。而Incoherent Regions可以很好的计算mask由于分辨率下降而导致信息丢失的区域。

img

Mask Transfiner框架

img

1. Incoherent Regions检测

Incoherent Regions的检测遵循由低到高的级联设计(cascaded design)。如图上图右侧,为了检测RoI金字塔上的不同层级上信息损失节点,Transfiner先将最低层的RoI特征(28x28)和初始的物体mask预测作为输入,采用一个简单的全卷积网络(四个3×3 卷积)预测四叉树的根节点。每个根结点会分解到临近更高RoI层对应的4个子节点,例如从RoI大小28x28延伸到56x56。对于高层的RoI特征,Transfiner对上一层损失区域检测的mask做上采样后与RoI特征拼接,并使用单个1×1卷积层预测更精细的信息损失节点,以保持检测模块的轻量化。

2. 四叉树构造

四叉树的结构如上图的 Point Quadtree部分所示,来自低层级的RoI特征(如分辨率28×28)的信息损失节点在其相邻的更高层的RoI中(如分辨率56×56)中有四个对应子节点。为了减少计算量,我们只将预测为损失节点的像素点向上层进一步分解,并把树的最大深度设为3。更为具体地,我们把从最低层级(28x28)检测到的信息损失点作为根节点,从上到下递归扩展四个子象限点,构建了一个多层次的四叉树。在更高层的特征图上选取子象限点,是因为大尺度特征具有更高的分辨率和更多的物体局部细节。

3. 节点编码

节点编码器(Node Encoder)使用四种不同的信息线索对每个四叉树节点进行编码:

  1. 从 FPN 金字塔的相应位置和层级提取的细粒度深度特征。
  2. 初始检测器的粗略掩码预测提供高层的语义信息。
  3. 相对位置编码,补充节点在RoI中的距离相关性。
  4. 每个节点的周围临近点信息来补充局部细节。

4. 编码和像素解码

四叉树节点经编码器编码后,为了建模点之间的关联,序列编码器(Sequence Encoder)中的多头注意力模块会对输入序列进行点之间的特征融合及更新。相较于MLP,Transformer可以执行序列上的全局跨尺度推理。序列编码器的每一层都由多头自注意力模块和全连接的前馈网络(FFN)组成。为了给输入序列补充足够的前景和背景信息,我们还将RoI金字塔中最低层大小为14x14的196个特征点输入。与标准Transformer解码器不同,Transfiner 的像素解码器(Pixel Decoder)是一个简单的两层 MLP,不具有多头注意力模块。它对树中每个节点的输出查询进行解码,以预测最终的实例标签。

实验

1.在coco数据集上的SOTA结果对比

img

  1. 可视化分析比较

img