用分割去做检测: Segmentation Is All You Need

Segmentation Is All You Need
Zehua Cheng, Yuxiang Wu, Zhenghua Xu, Thomas Lukasiewicz, , Weiyang Wang
Hebei University of Technology, China
University of Oxford, United Kingdom
AISA Research, Hunan Agricultural University, China
SnowCloud.ai, China, 2019

这篇论文直接通过bbox生成弱监督的分割标注,训练热图,再利用轮廓追踪算法得到轮廓,生成bbox。挺有新意,性能看起来也不错。不过没有公布速度;而且弱监督的标注,为何训练处的模型能产生更准确地热图;为何要训练预测3个热图,再将结果组合为instance aware segmentation map,而不是直接预测segmentation map,是因为这样会提升instance aware性能吗;轮廓追踪算法的对宽度变化剧烈的是否敏感;这些都是我阅读后的一些困惑。

6.14更新:后续思考后,关于弱监督的分割标注为何能够用问题,我有这么几个结论:
1.首先根据本论文引用的[8]J. Dai, K. He, and J. Sun, “Boxsup: Exploiting bounding boxes to supervise convolutional networks for semantic segmentation,” in Proceedings of the IEEE International Conference on Computer Vision, 2015.,像素级分割信息没有完全被模型利用, 而且像素级分割数据少。
2.本来最终目的也不是为了生成完美的分割,即使最终分割只能达到标注的椭圆状,用于生成bbox也完全足够了


Introduction

作者认为使用bbox进行目标检测有很多问题,如图1的极端情况下,复杂的遮挡、不良的光照和大量小物体,召回率会非常低。

图1

同样,用于bbox后处理的NMS也有自身的问题,现实世界的复杂遮挡,一个阈值不可能选出来完美的框。在之前的工作中,动态调整 NMS 的 SoftNMS、动态调整 IoU 的 Cascade RCNN 方案都取得了很不错的结果,但是前者依然回避了「复杂遮挡」的复杂性,后者参数量激增,速度慢到难以想象。

基于这些动机,提出了weakly supervised multimodal annotation segmentation (WSMA-Seg)。它首先将检测任务的bbox标注转换为弱监督的多通道类分割mask,称为multimodal annotations。接下来使用这个标注训练分割模型,为训练图片预测多模态热图。测试时使用像素级逻辑操作将热图转换为instance-aware的分割图,并使用一个contour tracing operation基于分割图生成轮廓,再利用轮廓生成bbox。

该方法有如下优点:

  1. NMS-free,避免了所有与bbox和NMS相关的超参数
  2. 通过利用类分割的多模态标注的拓扑结构,可以缓和复杂遮挡问题
  3. 像素级的标准有助于避免bbox标注的背景噪音问题

Weakly Supervised Multimodal Annotation Segmentation

图2

图2是训练时流程,通过bbox生成弱监督的多模态类分割标注,再训练模型预测更准确的热图。图3是测试时流程,基于热图生成instance-aware的segmentation map,再检测轮廓、生成bbox。

图3

Generating Multimodal Annotations

标注的生成很简单,给定bbox,对其内接椭圆内的值都设为1,就是第一通道;通过对椭圆的边和边内w个像素设为1,得到边界,第二通道;第三通道通过对椭圆重叠部分的边界和边界内w个像素设为1。

Multi-Scale Pooling Segmentation

图4

使用的MSP-Seg模型是Hourglass模型的改进版,见图4。在skip connection处增加了multi-scale block。block见图5,通过4个尺寸的卷积后concat到一起,通道数变为4x。为了保证特征图大小一致,步长为1且添加了zero-padding。模型最终为每张图片输出3类热图。

图5

Object Detection Using Segmentation Results and Contour Tracing

根据热图,可以通过下方公式得出instance-aware segmentation map,其中$\oplus$为异或标记。

Alt text

得到instance-aware segmentation map后,通过Contour tracing即可获得轮廓,从而进一步获得bbox。常见的Contour tracing有scan-based-following算法,但物体很多时,这个算法很慢且耗内存。

因此提出了一种run-data-based (RDB) following算法。见图6及公式1。本质就是按行遍历,寻找左右边缘,如找到了一组,则在上一行的所有组里找到x坐标差不大于1的一组,将本组归于该组所在的轮廓集。否则新建一个轮廓集,并将本组加入。

我认为这个算法在面对一个宽度变化剧烈(相邻两行的左右轮廓坐标差大于1)的物体时会有问题。这里没有提到,可能是因为本身弱监督标注本身是从椭圆生成的,预测出的轮廓比较平滑?

Alt text

Experiments

实验时有几个超参数:Stack指堆叠的Hourglass模块数量,Base是一个基础数字,所有通道都是它的整数倍,Depth是下采样的次数。

在数钢筋、WIDER-Face和COCO上的性能如下:

Alt text

Alt text

Alt text