【半监督图像分割】2021-CPS CVPR

【半监督图像分割】2021-CPS CVPR

论文题目:Semi-Supervised Semantic Segmentation with Cross Pseudo Supervision

中文题目:基于交叉伪监督的半监督语义分割

论文链接:https://arxiv.org/abs/2106.01226v2

论文代码:https://github.com/charlesCXK/TorchSemiSeg

发表时间:2021年6月

引用:Chen X, Yuan Y, Zeng G, et al. Semi-supervised semantic segmentation with cross pseudo supervision[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 2613-2622.

引用数:157

1. 简介

1.1 简介

在这篇论文中,我们为半监督语义分割任务设计了一种非常简洁而又性能很好的算法:cross pseudo supervision (CPS)。训练时,我们使用两个相同结构、但是不同初始化的网络,添加约束使得两个网络对同一样本的输出是相似的。具体来说,当前网络产生的one-hot pseudo label,会作为另一路网络预测的目标,这个过程可以用cross entropy loss监督,就像传统的全监督语义分割任务的监督一样。我们在两个benchmark (PASCAL VOC, Cityscapes) 都取得了SOTA的结果。

1.2 相关工作

在最开始,我们先来回顾一下半监督语义分割任务的相关工作。不同于图像分类任务,数据的标注对于语义分割任务来说是比较困难而且成本高昂的。我们需要为图像的每一个像素标注一个标签,包括一些特别细节的物体,比如下图中的电线杆 (Pole)。但是,我们可以很轻松的获得RGB数据,比如摄像头拍照。那么,如何利用大量的无标注数据去提高模型的性能,成为半监督语义分割领域研究的问题。

img

我们将半监督分割的工作总结为两种:self-training和consistency learning。一般来说,self-training是离线处理的过程,而consistency learning是在线处理的。

(1)Self-training

Self-training主要分为3步。第一步,我们在有标签数据上训练一个模型。第二步,我们用预训练好的模型,为无标签数据集生成伪标签。第三步,使用有标注数据集的真值标签,和无标注数据集的伪标签,重新训练一个模型。

img

(2)Consistency learning

Consistency learning的核心idea是:鼓励模型对经过不同变换的同一样本有相似的输出。这里“变换”包括高斯噪声、随机旋转、颜色的改变等等。

Consistency learning基于两个假设:smoothness assumption 和 cluster assumption。

  • Smoothness assumption: samples close to each other are likely to have the same label.
  • Cluster assumption: Decision boundary should lie in low-density regions of the data distribution.

Smoothness assumption就是说靠的近的样本通常有相同的类别标签。比如下图里,蓝色点内部距离小于蓝色点和棕色点的距离。Cluster assumption是说,模型预测的决策边界,通常处于样本分布密度低的区域。怎么理解这个“密度低”?我们知道,类别与类别之间的区域,样本是比较稀疏的,那么一个好的决策边界应该尽可能处于这种样本稀疏的区域,这样才能更好地区分不同类别的样本。例如下图中有三条黑线,代表三个决策边界,实线的分类效果明显好于另外两条虚线,这就是处于低密度区域的决策边界。

img

那么,consistency learning是如何提高模型效果的呢?在consistency learning中,我们通过对一个样本进行扰动(添加噪声等等),即改变了它在feature space中的位置。但我们希望模型对于改变之后的样本,预测出同样的类别。这个就会导致,在模型输出的特征空间中,同类别样本的特征靠的更近,而不同类别的特征离的更远。只有这样,扰动之后才不会让当前样本超出这个类别的覆盖范围。这也就导致学习出一个更加compact的特征编码。

当前,Consistency learning主要有三类做法:mean teacher,CPC,PseudoSeg。

img

Mean teacher是17年提出的模型。给定一个输入图像X,添加不同的高斯噪声后得到X1和X2。我们将X1输入网络f(θ)中,得到预测P1;我们对f(θ)计算EMA,得到另一个网络,然后将X2输入这个EMA模型,得到另一个输出P2。最后,我们用P2作为P1的目标,用MSE loss约束。

img

PseudoSeg是google发表在ICLR 2021的工作。他们对输入的图像X做两次不同的数据增强,一种“弱增强”(random crop/resize/flip),一种“强增强”(color jittering)。他们将两个增强后图像输入同一个网络f(θ),得到两个不同的输出。因为“弱增强”下训练更加稳定,他们用“弱增强”后的图像作为target。

img

CPC是发表在ECCV 2020的工作(Guided Collaborative Training for Pixel-wise Semi-Supervised Learning)的简化版本。在这里,我只保留了他们的核心结构。他们将同一图像输入两个不同网络,然后约束两个网络的输出是相似的。这种方法虽然简单,但是效果很不错。

1.3 创新

从上面的介绍我们可以简单总结一下:

  • Self-training可以通过pseudo labelling扩充数据集。
  • CPC可以通过consistcency learning,鼓励网络学习到一个更加compact的特征编码。

大家近年来都focus在consistency learning上,而忽略了self-training。实际上,我们实验发现,self-training在数据量不那么小的时候,性能非常的强。那么我们很自然的就想到,为什么不把这两种方法结合起来呢?于是就有了我们提出的CPS:cross pseudo supervision。

2. 网络

2.1 网络架构

image-20221120194641900

  • a) 本论文网络结构图CPS,叙述如上
  • b) GCT网络结构图,和本方法相同,唯一的区别在于GCT使用confidence map作为监督信号,而CPS使用one-hot label
  • c)MeanTeacher 使用学生网络和老师网络,两个网络结构相同,参数初始化不同,学生网络用老师网络得到的confidence map作为监督信号,老师网络随着学生网络的权重变化按照指数平均不断变化
  • d)一张原图X分别经过弱数据增强和强数据增强放入同一个网络中,弱数据增强所得one hot结果作为强数据增强结果的真值,用于监督弱数据增强的结果

我们可以看到,CPS的设计非常的简洁。训练时,我们使用两个网络f(θ1) 和 f(θ2)。这样对于同一个输入图像X,我们可以有两个不同的输出P1和P2。我们通过argmax操作得到对应的one-hot标签Y1和Y2。类似于self-training中的操作,我们将这两个伪标签作为监督信号。举例来说,我们用Y2作为P1的监督,Y1作为P2的监督,并用cross entropy loss约束。

对于这两个网络,我们使用相同的结构,但是不同的初始化。我们用PyTorch框架中的kaiming_normal进行两次随机初始化,而没有对初始化的分布做特定的约束。

2.2 Loss

给定有标签的数据集 D L D^L DL,大小为 N N N 。和 M M M个未标记的图像 D u D^u Du

半监督语义分割任务的目标是通过对标记图像和未标记图像来学习分割网络

P 1 = f ( X ; θ 1 ) P 2 = f ( X ; θ 2 ) \begin{array}{l} P_{1}=f\left(X ; \theta_{1}\right) \\ P_{2}=f\left(X ; \theta_{2}\right) \end{array} P1=f(X;θ1)P2=f(X;θ2)

这两个网络具有相同的结构, θ 1 \theta_{1} θ1 θ 2 \theta_{2} θ2分别表示对应的权重,初始化的方式不同。输入X具有相同的数据增强方式,P1 ,P2为分割confidence map,为softmax归一化后的网络输出。本文的主要思想通过以下的方式表达:
X → X → f ( θ 1 ) → P 1 → Y 1 X → X → f ( θ 2 ) → P 2 → Y 2 \begin{array}{l} X \rightarrow \mathbf{X} \rightarrow f\left(\theta_{1}\right) \rightarrow P_{1} \rightarrow Y_{1} \\ X \rightarrow \mathbf{X} \rightarrow f\left(\theta_{2}\right) \rightarrow P_{2} \rightarrow Y_{2} \end{array} XXf(θ1)P1Y1XXf(θ2)P2Y2
image-20221120205427625

P 1 , P 2 P_1,P_2 P1,P2表示预测结果。 Y 1 , Y 2 Y_1,Y_2 Y1,Y2伪分割图

流程上图所示。训练过程包括两个损失监督损失 L s L_s Ls,交叉伪监督损失 L c p s L_{cps} Lcps

监督损失使用Cross entropy。

L s L_s Ls是两个模型的有监督损失
L s = 1 ∣ D l ∣ ∑ X ∈ D l 1 W × H ∑ i = 0 W × H ( ℓ c e ( p 1 i , y 1 i ∗ ) + ℓ c e ( p 2 i , y 2 i ∗ ) ) , \begin{array}{r} \mathcal{L}_{s}=\frac{1}{\left|\mathcal{D}^{l}\right|} \sum_{\mathbf{X} \in \mathcal{D}^{l}} \frac{1}{W \times H} \sum_{i=0}^{W \times H}\left(\ell_{c e}\left(\mathbf{p}_{1 i}, \mathbf{y}_{1 i}^{*}\right)\right. \left.+\ell_{c e}\left(\mathbf{p}_{2 i}, \mathbf{y}_{2 i}^{*}\right)\right), \end{array} Ls=Dl1XDlW×H1i=0W×H(ce(p1i,y1i)+ce(p2i,y2i)),


交叉伪监督损失是双向的:一个是从 f ( θ 1 ) f(\theta_1) f(θ1) f ( θ 2 ) f(\theta_2) f(θ2),使用 Y 1 Y_1 Y1来监督 P 2 P_2 P2,另一个是使用 Y 2 Y_2 Y2监督 P 1 P_1 P1。损失表示为
L c p s u = 1 ∣ D u ∣ ∑ X ∈ D u 1 W × H ∑ i = 0 W × H ( ℓ c e ( p 1 i , y 2 i ) + ℓ c e ( p 2 i , y 1 i ) ) . \begin{array}{l} \mathcal{L}_{c p s}^{u}=\frac{1}{\left|\mathcal{D}^{u}\right|} \sum_{\mathbf{X} \in \mathcal{D}^{u}} \frac{1}{W \times H} \sum_{i=0}^{W \times H}\left(\ell_{c e}\left(\mathbf{p}_{1 i}, \mathbf{y}_{2 i}\right)\right. \left.+\ell_{c e}\left(\mathbf{p}_{2 i}, \mathbf{y}_{1 i}\right)\right) . \\ \end{array} Lcpsu=Du1XDuW×H1i=0W×H(ce(p1i,y2i)+ce(p2i,y1i)).
以同样的方式定义了有标记数据上的交叉伪监督损失. L c p s l , L c p s = L c p s l + L c p s u L_{cps}^l,L_{cps}=L_{cps}^l+L_{cps}^u Lcpsl,Lcps=Lcpsl+Lcpsu

最后损失为 L = L s + L c p s L=L_s+L_{cps} L=Ls+Lcps

应用CutMix augmentation图像增强方法来进行数据增强。

2.3 实验

a,b图分别使用ResNet50,ResNet101作为backbone
蓝:baseline(不加入cutmix数据增强):只使用有标签的数据
红:使用两个网络,半监督学习,不加入cutmix数据增强
绿:使用两个网络,半监督学习,加入cutmix数据增强

image-20221120194524728

首先是有标签数据比较少的情况。

我们的方法在VOC和Cityscapes两个数据集的几种不同的数据量情况下都达到了SOTA。表格中 1/16, 1/4等表示用原始训练集的 1/16, 1/4作为labeled set,剩余的 15/16, 3/4作为unlabeled set。

Table1:在Pascal VOC上使用不同backbone和不同有标签数据比例得到结果和其他SOTA方法对比

image-20221120194549071

Table2:在Cityscapes上使用不同backbone和不同有标签数据比例得到结果和其他SOTA方法对比

image-20221120194609128

在跟PseudoSeg的对比中,和他们同样的数据划分list,我们也超越了他们的性能:

img

这是我们的方法跟self-training进行比较的结果。可以看到,我们的方法由于鼓励模型学习一个更加compact的特征编码,显著地优于self-training。

img

对于这两个网络,我们使用相同的结构,但是不同的初始化。我们用PyTorch框架中的kaiming_normal进行两次随机初始化,而没有对初始化的分布做特定的约束。

img

3. 代码


参考资料

[CVPR 2021] CPS: 基于交叉伪监督的半监督语义分割 - 知乎 (zhihu.com)

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于2023半监督语义分割的最新进展,我可以告诉你一些信息。请注意,以下内容仅基于我对当前研究领域的了解,可能不是最新的结果。 半监督语义分割是指在训练过程中,只有一小部分样本标记了语义分割的类别,而其他样本没有标记。这种方法可以减少人工标注的工作量,并且在训练数据有限的情况下提高模型性能。 在CVPR(计算机视觉与模式识别会议)2023年的研究中,可能会涉及半监督语义分割的新方法和技术。这些方法可能会探索如何利用大量未标记的图像进行训练,并将其与少量标记数据结合起来,以提高语义分割模型的性能。 一种常见的方法是使用生成对抗网络(GAN)来进行半监督学习。通过生成器和判别器之间的对抗训练,模型可以学习从未标记数据中生成逼真的分割结果,同时提供一致性损失来确保生成的结果与标记数据保持一致。 另一种方法是基于自监督学习,该方法通过设计任务来利用未标记数据的自身信息。例如,可以通过自动生成像素级别的标签,然后将其与真实标签进行比较,从而训练语义分割模型。 此外,还有一些基于图模型和图割方法的半监督语义分割技术。这些方法利用图割算法来尝试将未标记的区域分配给正确的类别,以增强模型的训练效果。 总的来说,在CVPR 2023中,我们可以期待看到更多关于半监督语义分割的创新方法和技术的研究成果。这些方法将有望在语义分割任务中取得更好的效果,并且对于减少标记数据的依赖具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值