[CVPR 16]ScribbleSup: Scribble-Supervised Convolutional Networksfor Semantic Segmentation
Di Lin, Jifeng Dai, Jiaya Jia, Kaiming He, Jian Sun
from CUHK & MSRA
paper link
Task Description
这篇文章提出了一种基于用户交互的图片分割训练方法(ScribbleSup)。即训练者只需要在图片上的小部分区域进行标注(scribble annotation)即可训练分割网络。如下图所示的标注方式(左图:原图;中图:传统的语义分割标注;右图:scribble annotation):
这篇文章的思想可以从三个不同的领域来理解:
1. 语义分割模型的弱监督训练。和其它使用bounding box或者全图语义标注作为监督信息的文章不同,这篇文章使用的标注比较特殊,是用户的简单勾画;
2. 交互式分割模型。Grabcut是典型的交互式分割模型。ScribbleSup与Grabcut非常相似。可以理解为是Grabcut的延伸工作。这篇笔记就以Grabcut为出发点来理解这篇工作的思想;
3. 自动标注工具。用少量的人为标注(或画框,或使用画笔勾画或者标注少量的点)来得到分割标注,这也是许多自动标注工具的主要思想之一。
Method Framework
如果以Grabcut作为对照,从框架的层面来看待这篇文章提出的模型,可能会更好理解一些。回顾Grabcut,其算法流程类似于EM算法,即:
- 使用用户的交互作为分割结果的初始(bounding box或者scibbles);
- 构建分割模型;
- 使用当前的分割结果作为监督信息训练模型;
- 使用训练更新后的模型再次生成分割结果;
- 重复3、4步,直至模型收敛。
在Grabcut中,分割模型的构建是通过设计一个损失函数来实现的。给定图片、当前的分割结果,以损失函数为评价标准,动态地调整每个pixel的分割结果来使损失函数最小。损失函数在这里包含两项:一元项和二元项,类似于dence CRF中的定义。其中一元项指的是使用当前像素的信息(灰度值、当前分割的结果等等)来得到一个损失值。二元项则是两个像素之间的信息进行计算(例如两个像素的灰度值加加减减、空间的距离等)来得到损失值。这样由于像素之间有相互联系,这个损失函数也就构成了一个图模型。优化这个损失函数通常通过图割(graph cut)的方式来解决。
如果使用简单的公式来表示,记损失函数值为E,i,j为像素编号,X为原图信息,y为像素当前的分割结果,S为用户给定的交互信息,则有