【PolyTransform】《PolyTransform:Deep Polygon Transformer for Instance Segmentation》

在这里插入图片描述
CVPR-2020



1 Background and Motivation

实例分割方法的目标是识别场景中所有可计数的目标,并为每个目标生成一个 mask。

借助实例分割,我们可以更好地理解场景,设计能够完成复杂操作任务的机器人系统,改进自动驾驶汽车的感知系统。

目标的 wide variability in the scale and appearance 以及遮挡和运动模糊给实例分割任务带来了极大的挑战

目前,大多数方法是基于 two-stage process 来做实例分割的,也即先目标检测(锁定你的大概范围),然后在检测的框框内进行分割(让你显形)!这类方法是能很好的处理诸如目标被遮挡的问题,缺点是这类方法可能会 over-smoothed failing to capture fine-grained details(也就是分割结果过于圆润,没有棱角,不能很好描述物体边界,比如要分割五角星,你的预测是五角星五个顶点围起来的圆形)

另外一种思路是,利用 interactive annotation(polygon-based methods) 的方法(标注图片的 annotation 的方法),这类方法利用多边形来更好地捕捉目标的几何形状,而不是把实例分割当作 pixel-wise labeling task。此方法,可获得更为精确的 mask,以及更快速的 annotation 过程,因为可以在预测多边形顶点的偏移,来调整 mask,缺点是,这类方法处理遮挡导致不连通的目标时往往效果不好

作者融合上述两类方法,取长补短,提出了 PolyTransform 实例分割方法

2 Related Work

  • Proposal-based Instance Segmentation
  • Proposal-free Instance Segmentation
  • Interactive Annotation

3 Advantages / Contributions

ranks 1st on the Cityscapes test-set leaderboard

4 Method

在语义分割网络的基础上,提初始 mask 和 bbox,上面分支从 mask 中提轮廓,以一定间隔取点后,用 CoordConv 的形式融入到 bbox 经过 FPN 提取出的特征图中(下面分支),配合 STN 和 self-attention 预测出多边形每个顶点的偏移量
在这里插入图片描述
deforming network,预测多边形每个顶点的位移

4.1 Instance Initialization

在这里插入图片描述

先用分割方法提取 mask,根据 mask,一方面裁剪并 resize 矩形框(分割方法要是预测出了框就用分割方法预测的框,上图向下箭头,resize 成 512x512),另一方面利用 opencv 中的 findcontour 方法来从 mask 中提取轮廓(上图向右箭头)

findcontour 方法参考 提取轮廓的原理和代码实例,来自论文《Topological structural analysis of digitized binary images by border following》

根据提取出来的轮廓,每隔10个 pixel 初始化一个顶点,形成 polygon init
在这里插入图片描述

4.2 Feature Extraction Network

在这里插入图片描述
上图中间网络结构部分,目的是 learn strong object boundary features,具体的网络结构如下图所示

在这里插入图片描述
是 FPN 结构(参考 【FPN】《Feature Pyramid Networks for Object Detection》),最后把各个 level 的结果 concatenate 起来了

4.3 Deforming Network

1)Vertex embedding
在这里插入图片描述
用 CoordConv 网络引入坐标特征,channel 从 320 变成了 322,CoordConv 更详细的结构如下图所示

在这里插入图片描述
这个 CoordConv 方法本身有一定的戏剧色彩,八卦的同学可以参考 要拯救CNN的CoordConv受嘲讽,翻译个坐标还用训练?

然后用 STN 网络,从 HxWx322 的特征中采样 N*322 的 vector z z z

STN 可以参考 论文笔记:空间变换网络(Spatial Transformer Networks)

在这里插入图片描述
描述来源:空间变换网络STN

目的就是对特征图进行一个位置矫正

2)Deforming network

在这里插入图片描述

对于初始化的多边形轮廓,我们修改一个顶点的坐标,两个相连的边也随之移动。这些边的移动取决于相邻顶点的位置!因此,每个顶点必须知道它的邻居,并需要一种方法来相互通信,以减少不稳定和重叠的行为。(比如上面的图,改变黑色顶点的位置,如果不知道相邻顶点的具体位置,很容易改变顶点后出现了重叠行为,显然这是我们不想看到了)

作者通过 self-attending Transformer network——来自《Attention is all you need》,来学习顶点的依赖关系(权重)。具体如下

输入 z z z(N*322 的 vector ),通过 self-attending Transformer network 可以得到 Query,Key,Value, Q ( z ) Q(z) Q(z) K ( z ) K(z) K(z) V ( z ) V(z) V(z),参考 【MoCo】《Momentum Contrast for Unsupervised Visual Representation Learning》,然后用下面公式计算出顶点之间的权重

公式如下

在这里插入图片描述
其中 d k d_k dk 是 Q 和 K 的 dimension

在这里插入图片描述
什么意思呢,就是当前点和其它点的关系(权重),我可以用上述 attention 公式中 QK 计算出来,然后和 V 加权在一起,形成预测,相比于没有 self-attention 的网络,有 self-attention 的网络可以学习到不同顶点之间的关系!不是孤立的预测,而是学一个和不同顶点之间关系的权重,然后配合其他顶点共同预测(预测的是顶点的偏移量)

下面是一个更形象的例子,如果计算每个框框和标签之间的关系(对标签的贡献度),叫 attention,如果计算每个框框之间的关系(关联度,权重),叫 self-attention!所以本文计算顶点与顶点之间的关系,用的是 self-attention
在这里插入图片描述

4.4 Polygon Transforming Loss

1)Chamfer Distance loss

polygon P P P closer to the ground truth polygon Q Q Q
在这里插入图片描述
p p p and q q q are the rasterized edge pixels(栅格化的边像素点) of the polygons P P P and Q Q Q

第一项,是预测的多边形任意一点,到GT最小距离的和
第二项,是GT上任意一点,到预测的多边形最小距离的和

目的就是让预测出的多边形和 GT 尽可能的逼近

参考 Chamfer Distance–倒角距离

2)the standard deviation loss

防止顶点的偏移过大
在这里插入图片描述
e ˉ \bar{e} eˉ 表示边的平均长度, e e e 表示边的长度, n n n 应该是边的个数

5 Experiments

5.1 Datasets

  • Cityscapes:1024 × 2048

5.2 Instance Segmentation

1)Instance Initialization

采用的是 UPSNet 实例分割方法,配合 WideResNet38 主干网络(参考 【WRNs】《Wide Residual Networks》

2)Comparison to SOTA
在这里插入图片描述
榜首
在这里插入图片描述
3)Robustness to Initialization

对比用不同初始化分割方法的结果
在这里插入图片描述
DCN 是 deformable convolution network
PANet 应该值得是改进了 FPN 结构

6 Conclusion(own)

  • 从 mask 中提轮廓,用到了 opencv 库
  • CoordConv 具体细节(猜测,第一个特征图存x,第二个特征图存y,顶点的 x 坐标在第一个特征图对应行全为行号,顶点的 y 坐标在第二个特征图对应列全为列号,行列号可以归一化)
  • STN 方法细节
  • self-attention 来计算顶点之间的关系,更有利于预测顶点的偏移
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值