弱监督语义分割-SEC(seed、expand and constrain)的原理详述
Seed, Expand and Constrain: Three Principlesfor Weakly-Supervised Image Segmentation原理详述
论文地址:https://arxiv.org/pdf/1603.06098.pdf
一、简介
1.1、什么是弱监督语义分割
语义分割是AI领域的一个重要分支,被广泛应用于自动驾驶领域。近年来,深度学习为该领域带来了飞跃式的进展,然而这一进步依赖于大量全监督的标注数据。在语义分割领域,这意味着像素级别的标注(标注方式如下图,需要标注每一个像素属于哪一个类)。而像素级别的标注在获取时需要耗费大量的成本。弱监督语义分割是一种使用相对于像素级别的标注而言更容易获取的标注作为监督去训练语义分割模型的一种方式。
截至2020年,根据使用弱标注的不同,弱监督语义分割的研究大致可分为以下五个方向:
-
Point 5:用一个点标出目标物体的位置和标签。如下图的左图:
-
Scribble 6:用一个线标出目标物体的位置和标签。如上图的右图
-
上述四种方法的综合 7:利用各种弱标注的组合
上述五种方法与使用像素级的标签的ground truth作为监督相比,很明显,获取ground truth的时间与成本要更低。比如,CityScapes数据库,在精标条件下,一张图片的标注就需要1.5个小时。而一个bounding box方式的标注只需要7秒,而一个image-level tag的标注只需要1秒,按照这种方式,CityScapes数据库的标注时间将缩短30倍。这也是弱监督语义分割的最吸引人的点—使用更少的成本和时间,达到接近全监督语义分割的精度。
1.2、相关工作
1.2.1、CAM 8
这是2016年CVPR上提出的一种方法。这篇论文主要的观点在于用于图片分类任务的卷积神经网络实际上已经具有了在图片种定位目标物体位置的性质。这个怎么理解呢?我们先来看看这个网络的框架:
从上图,我们可以看到,实际上就是将图片分类任务的卷积神经网络的最后两层的全连接层替换为全局平均池化,这个池化后的得到的向量实际上代表着每一个通道上特征图的权重。随着训练的不断进行,权重也不断进行调整。当训练完毕之后,对应通道特征图乘以其对应得权重,之后,所有通道得通道图进行求和就会得到对应类别在原图中的大概位置(最具分辨力的位置,比如图中定位到的是这只澳大利亚的犬类的头部与尾部)
1.2.2、条件随机场(CRF)9
条件随机场是一种计算当前点与其他点的相似程度从而更新当前点类别的方法,这种相似程度由颜色与距离等因素来衡量。具体可以参见这一篇博客。虽然里面讲解的是马尔可夫随机场,但是原理与处理过程与条件随机场一致,只是条件随机场中计算相似程度的方法与马尔可夫随机场有出入。
1.3、 SEC的motivation
- 全监督语义分割ground truth获取费时费力;
- 该篇文章之前使用image level进行弱监督的方法,分割效果不理想—无法预测对象的确切空间范围。
二、SEC原理
SEC的整个网络框架如下图所示: 很明显,SEC首先将原图送入一个语义分割网络之中,随后将语义分割网络输出的结果与CAM***(也就是最上面一条支路。它是一个提前训练好的CAM模型。原图输入到这个之路后,可以对目标类进行定位,产生每个类别的种子区域—SEED)的结果、image level labels(也就是中间那条支路。image level labels指这张图片中被标注出的类。)、CRF后的结果(也就是最下面这条支路。SEC将CRF后的结果当作类似全监督的groud truth)同时计算损失函数。这三个损失函数依次称为Seed loss*、Expand loss、Constrain loss。
2.1、SEED LOSS
图像级标签未明确提供有关图像中语义对象位置的任何信息。但是,CAM的提出深度图像分类网络仅从图像级标签进行训练,可能成功地用于检索有关对象定位的提示。
不幸的是,CAM定位信息通常不够精确,无法用作完整而准确的ground truth。 但是,这些定位信息对于指导弱监督的分割网络可能非常有用。 所以,作者提出了使用seed loss来鼓励神经网络仅预测匹配CAM定位信息给出的区域,而忽略图像的其余部分。seed loss可以表示为以下公式: 其中f(X)表示segmentation CNN后的结果,它的大小为(H/8,W/8,21)。其中H与W代表着原图的大小。21代表着有21个通道,每个通道代表不同的类别。这里很明显一点就是fu,c(X)越大,Loss越小。所以说,这个损失函数的作用在于鼓励网络预测出更大的fu,c(X)。那么fu,c(X)代表着什么呢?u代表空间位置,c代表类别,也就是说fu,c(X)代表着在第c类的特征图的位置u上fu,c(X)要尽可能的大。而u属于Sc(CAM处理后的结果,它的大小为(H/8,W/8,21)),c属于T(当前输入网络的图片出现的类别集合,不包括背景类)。所以,seed loss的意义在于使得网络尽可能在CAM预测出的种子区域内与CAM预测一致,而不去关注其他区域。
2.2、Expanding LOSS
为了检测segmentation CNN后的结果f(X)是否与只预测出了当前图片中包含的类别而没有预测出其他的类别,可以将f(X)进行全局排序加权池化(GWRP:实际上就是一种GMP与GAP的中和)后的结果,与image level label计算损失函数。从而鼓励网络只预测当前图片所包含的类别而抑制网络预测其它类别。Expanding LOSS可以被如下公式表示:
2.3、Constrain Loss
将f(x)与原图进行CRF后可以获得更精确的分割结果。CRF的特点使得这个结果对于图像的边界更为重视。将该结果作为ground truth与f(x)进行交叉熵随时函数的计算更见精确的确定目标类别的边界。
三、如何使用SEC对图片进行分割
SEC训练完毕后在测试阶段对图片进行分割预测的流程如下图:
引用
-
CVPR_2018: Simple Does It_Weakly Supervised Instance and SemanticSegmentation ↩︎
-
ICCV_2015:Exploiting Bounding Boxes toSupervise Convolutional Networks for Semantic Segmentation ↩︎
-
CVPR_2015:From Image-level to Pixel-level Labeling withConvolutional Networks ↩︎
-
ECCV_2016: Built-in Foreground/Background Prior for Weakly-SupervisedSemantic Segmentation ↩︎
-
ECCV_2016: What’s the Point: Semantic Segmentation with PointSupervision ↩︎
-
CVPR_2016: ScribbleSup: Scribble-Supervised Convolutional Networks forSemantic Segmentation ↩︎
-
CVPR_2018:Exploiting Saliency for Object Segmentation from Image Level Labels ↩︎
-
CVPR_2016: Learning Deep Features for Discriminative Localization ↩︎