论文:Weakly-Supervised Semantic Segmentation via Sub-Category Exploration
论文下载:Weakly-Supervised Semantic Segmentation via Sub-Category Exploration
源码地址:https://github.com/Juliachang/SC-CAM
Background
语义分割的目标是为图像中的每一个像素指定一个相应的语义类别。它是计算机视觉中的最重要的任务之一,在图像编辑、场景理解等任务重应用广泛。今年来的全监督语义分割模型已经能够得到不错的效果,但是由于全监督的语义分割模型需要像素级的标注,而这需要大量的人力和时间成本,故大量的弱监督语义分割模型应运而生,它们中有image-level, video-level, bounding box, point-level [2], and scribble-based labels.本文只讨论image-lavel的弱监督语义分割方法。
基于图像级标签的弱监督语义分割,目前主流的一种做法是:
1. 生成类激活图CAM
2. refine类激活图CAM并生成pseudo label
3. 利用生成的pseudo label训练全监督的语义分割网络
Motivation
存在的问题:
- CAM本身存在的问题:由于CAM是通过分类网络提取出来的,而我们优化分类网络只需要关注到一个物体最值得注意的地方就行了,所以生成的CAM往往只会高亮一个物体中最值得模型关注的地方(比如猫的头)
- 现在大多数的算法都关注于上述过程中的第二步和第三步。但是,如果第一步生成的CAM效果本身就很差,那么不论如何优化CAM也无法得出高质量的pseudo label,甚至还会出现负优化的情况。本篇论文便着眼于提高第一步生成的CAM质量,从而对后面的过程也能产生有利的影响。同时,由于该算法是为了提高第一步生成的CAM的质量,故后面还可以用上其他的优化方法从而进一步提高模型的性能。
Method
该算法的基本思想是:由于分类网络的损失函数较为简单,模型不需要关注整个物体便能得到很好的效果,故我们可以人为的增加分类网络的难度,从而迫使模型需要关注到目标尽可能多的部分才能得到很好的优化。
本论文的做法是:引入一个自监督的sub-category分类任务,增加模型的难度,迫使模型只有尽可能多的关注到目标的区域才能得到很好的优化。
算法的框架如下:
具体过程为:
- 首先,利用在ImageNet预训练过的特征提取器E对每一个类别的所有图片分别提取特征并保存,然后对每一个类别保存的特征,利用K-Means聚类将一个parent class(即原来数据集中的类别)分为K个sub-category,作为后面分类网络训练的伪标签。
- 利用原数据集中提供的图像级标签和第一步生成的sub-category的伪标签训练分类网络,这个分类网络是结构是上述提到的特征提取器E后面接两个全连接层分别用于image-level(即原图中的类别)和sub-category的分类任务。
- 利用优化过的特征提取器E再根据第一步的过程生成sub-category的伪标签。
- 重复2,3步骤多次(原文中作者说根据他们的实验结果重复3次的效果比较好)
- 利用image-lavel分类的分支提取CAM
- 优化CAM并生成pseudo label
- 用生成的pseudo label训练全监督语义分割网络
论文中出现的公式
- 本论文中出现的公式并不复杂,建议大家阅读一下原论文