BoxSup: Exploiting Bounding Boxes to Supervise Convolutional Networks for Semantic Segmentation
原文链接:https://arxiv.org/abs/1503.01640
Abstract
- 目前的语义分割任务主要采用像素级(pixel-level)的分割标签,但像素级的分割标签比较难以获取,导致深度学习模型难以用更多的数据去训练。
- 本文提出的方法(BoxSup)采用目标框(bounding box)的分割标签,基本思想是在自主生成region proposals和训练CNN之间迭代,逐渐实现生成适合于分割的标签,并优化分割网络。
- 在相同的情况下,本文提出的弱监督方案分割结果(62.0%mAP)接近强监督模型(63.8%mAP)。
Main Contribution
作者采用FCN作结合CRF作为Baseline,CRF主要用于处理FCN的输出结果,损失函数如下。
由于缺少像素级标签,因此需要从gt Box中生成合适的像素级标签。作者采用无监督region proposal methods(Multiscale Combinatorial Grouping)在gt Boxs中生成候选片段(candidate segments)。主要优势如下:首先 region proposal 具有较高的召回率,此外该方法生成的候选区域差异性较大,具有数据增强的效果。生成的candidate segments用于更新FCN,同时FCN学习到的语义特征信息可以得到更好的candidates。两者迭代。在训练过程中,生成candidate segments为固定的,但是其标签(即属于哪一类)随着FCN的训练而变化。
对于GT Box,作者希望得到的condidate Mask尽可能覆盖整个box,因此定义了以下损失函数。其中 计算B与S之间的语义标签是否一致。
在有了candidate masks和想对应的语义标签后,就可以监督训练FCN。其中损失函数如下。该公式与公式(1)相一致,即用condidate masks及所对应的语义标签来训练FCN。
文章最终损失函数是公式(2)与公式(3)的结合。如果只含有公式3,会导致优化方向去找到最大的IoU值,如果是只含有公式4,那么优化方向是去训练FCN。
How to train
由于公式4包含两个优化方向,因此如何找到这两个问题的局部最优解是个问题。解决方案主要包含两个步骤。
第一步 首先固定FCN的参数,对所有的candidate segments更新语义标签。作者首先假设,每一个GT Boxs中只含有一个语义标签,且只有一个candidate。基于此假设,相对容易从gt box中的candidate segments挑选出一个,相对于公式(4)而言,损失最小的candidate segment,并更新其语义标签。GT box中的其他像素点设置为背景。但是这种方法,容易导致选出相似的candidate segments,从而造成局部最优。为了增加样本的复杂度,作者采用随机的方法从GT Boxs中随机挑选出公式(4)loss值最大的 前k(文中k为5)的candidate segments。
第二步 采用步骤一中的具有语义标签的candidate segments,训练FCN。