Deep Watershed Transform for Instance Segmentation

cvpr17的一篇文章, 作者:Min Bai; Raquel Urtasun
https://arxiv.org/pdf/1611.08303.pdf
之前效果较好的 Instance segmentation主要是使用proposal的方式,比如FCIS或者Mask rcnn,本文提出了骨骼清奇的深度分水岭的方法。

1. Watershed Transform

首先来说一下传统的分水岭算法:
我们按照图片的灰度值的梯度可以绘制一个“地形图”, 然后将在各个局部极小值的地方开始灌水,为防止不同区域内的水相通,变建立“大坝”将其分各开,也就将图分割为独立的几个区域。如下图:
Deep Watershed Transform for Instance SegmentationDeep Watershed Transform for Instance Segmentation

传统利用分水岭的方法容易由于噪声的原因产生过度分割的现象, 本文结合深度卷积网络,学习一个特征代替传统分水岭算法中的图形灰度图的梯度值。
也就是由下图中的a变为了b,其学习的目的就是每个instance 一个 basin的区域。
Deep Watershed Transform for Instance Segmentation

2. Deep Watershed Tranform

为了学习到上面所说的energy landscape, 文章将网络分为了两部分,首先学习‘ the directionof descent of the watershed energy’所用的网络称为 Direction Net,在此基础上学习最终的Energy。 训练时首先对两部分分别预训练然后进行end2end的finetune。网络结构如下:

Deep Watershed Transform for Instance Segmentation

第一个阶段学习的结果如下图第二列所示,最终的阶段如图中第三列所示:

Deep Watershed Transform for Instance Segmentation

2.1 Direction Network

具体的第一阶段output,为一个两通道的map,表示一个单位向量,表达式为:

Deep Watershed Transform for Instance Segmentation

其中Dgt p是某个像素的distance transform,即某点到其最近instance 边界的距离,如下图,即使相近的两个点(蓝,红)如果分属于不同的instance,其得到的 结果也有较大的差距,这使得网络可以把握住instance的边缘特征。

Deep Watershed Transform for Instance Segmentation

预训练的loss如下:
Deep Watershed Transform for Instance Segmentation
采用了cos的倒数,也就是主要看他们的角度

2.2 watershed transform network

这部分的ground truth是一个K=16的one-hot vector , loss采用交叉熵的形式,也就是转化为了一个分类的形式,第0类是背景或者可以记为背景的像素。

Deep Watershed Transform for Instance Segmentation

loss中将接近于边缘的类别权重增大,即ck.

2.3 inference

看文章是将大的object选用level=2来分割,小的object采用level=1。

3. Experiments

没有在Pascal或者coco上做,试验做的也不是特别多,cvper 的要求像是变了的感觉。

Deep Watershed Transform for Instance Segmentation

Deep Watershed Transform for Instance Segmentation