作者丨Pascal@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/474771549
编辑丨极市平台
论文概况
- 论文标题:_Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels_
- 作者信息:商汤科技, 上海交通大学, 香港中文大学
- 录用信息:CVPR 2022 → arXiv:https://arxiv.org/pdf/2203.03884.pdf
- 代码开源:https://github.com/Haochen-Wang409/U2PL
- Project Page:https://haochen-wang409.github.io/U2PL/
今天介绍我们在半监督语义分割(Semi-Supervised Semantic Segmentation)领域的一篇原创工作 U2PL (Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels)。
半监督任务的关键在于充分利用无标签数据,我们基于「 Every Pixel Matters」的理念,有效利用了包括不可靠样本在内的全部无标签数据,大幅提升算法精度。目前 U2PL 已被 CVPR 2022 接收,相关代码已开源,有任何问题欢迎在 GitHub 提出。
Self-training: 样本筛选导致训练不充分
半监督学习的核心问题在于有效利用无标注数据,作为有标签样本的补充,以提升模型性能。
经典的 self-training 方法大多遵循着 supervised learning → pseudo labeling → re-training 的基本流程,但学生网络会从不正确的伪标签中学习到错误的信息,因而存在 performance degradation 的问题。
通常作法是通过样本筛选等方式降低错误伪标签的影响,然而只选择高置信度的预测结果作为无标签样本的伪标签,这种朴素的 self-training 策略会将大量的无标签数据排除在训练过程外,导致模型训练不充分。此外,如果模型不能较好地预测某些 hard class,那么就很难为该类别的无标签像素分配准确的伪标签,从而进入恶性循环。
我们认为「 Every Pixel Matters」,即使是低质量伪标签也应当被合理利用,过往的方法并没有充分挖掘它们的价值。
Motivation: Every Pixel Matters
具体来说,预测结果的可靠与否,我们可以通过熵 (per-pixel entropy) 来衡量,低熵表示预测结果可靠,高熵表示预测结果不可靠。我们通过 Figure 2 来观察一个具体的例子,Figure 2(a) 是一张蒙有 entropy map 的无标签图片,高熵的不可靠像素很难被打上一个确定的伪标签,因此不参与到 re-training 过程,在 FIgure 2(b) 中我们以白色表示。

Figure 2. Illustration on unreliable pseudo-labels.
我们分别选择了一个可靠的和不可靠的预测结果,在 Figure 2(c) 和 Figure 2(d) 中将它们的 category-wise probability 以柱状图的形式画出。黄色十字叉所表示的像素在 person 类上的预测概率接近于 1,对于这个预测结果模型非常确信,低熵的该像素点是典型的 reliable prediction。而白色十字叉所表示的像素点在 motorbike 和 person 两个类别上都具有不低的预测概率且在数值上较为接近,模型无法给出一个确定的预测结果,符合我们定义的 unralibale prediction。对于白色十字叉所表示的像素点,虽然模型并不确信它具体属于哪一个类别,但模型在这两个类别上表现出极低的预测概率,显然很确信它不属于 car 和 train 这些类别。
因而,我们想到即使是不可靠的预测结果,虽然无法打上确定的伪标签,但可以作为部分类别的负样本,从而参与到模型的训练。这样所有的无标签样本都能在训练过程中发挥作用。
Method
Overview
Figure 3. An overview of our proposed U2PL method
Pseudo-Labeling
Using Unreliable Pseudo-Labes
U2PL 以对比学习为例介绍了如何将不可靠伪标签用于提升模型精度,既然是对比学习,那不可避免的问题就是讨论如何构建正负样本对。接下来的有关对比学习内容的实现细节大量参考了 ReCo[1],因此建议可以先看下这篇论文。
首先是 anchor pixels (queries),我们会给训练过程中出现在 mini-batch 中的每一个类别都采样一系列的 anchor pixel。
最后是 anchor pixel 的 negative sampe 的构建,同样的也需要分成有标签样本和无标签样本两个部分去讨论。对于有标签样本,因们明确知道其所属的类别,因此除真值标签外的所有类别都可以作为该像素的负样本类别;而对于无标签样本,由于伪标签可能存在错误,因此我们并不完全却行确信标签的正确性,因而我们需要将预测概率最高的几个类别过滤掉,将该像素认作为剩下几个类别的负样本。这部分对应的是论文中公式 13-16,但说实话这一段内容用公式去描述还是比较晦涩的。
Algorithm 1: Using Unreliable Pseudo-Labels
由于数据集中存在长尾问题,如果只使用一个 batch 的样本作为负样本可能会非常受限,因此采用对比学习中很常用的 MemoryBank 来维护一个逐类别的负样本库,存入的是由 teacher 生成的断梯度特征,以先进先出的队列结构维护。
Comparison with Existing Alternatives
本文所有的实验结果均是基于 ResNet-101 + Deeplab v3+ 的网络结构完成的,所采用的的数据集构成和评估方式请参见论文描述。
我们在 Classic VOC, Blender VOC, Cityscapes 三种数据集上均和现存方法进行了对比,在全部两个 PASCAL VOC 数据集上我们均取得了最佳精度。在 Cityscapes 数据集上由于我们没能很好的解决长尾问题,落后于致力解决长尾问题的 AEL 方法,我们将 U2PL 叠加在 AEL 上能够取得超越 AEL 的精度,也侧面证明了 U2PL 的通用性。
值得一提的是,U2PL 在有标签数据较少的划分下,精度表现极为优异。
Ablation Studies
Effectiveness of Using Unreliable Pseudo-Labels
我们在 PSACAL VOC 和 CItyscapes 等多个数据集的多个划分上验证了使用不可靠伪标签的价值。
Alternative of Contrastive Learning
我们增加了通过二分类去利用不可靠样本的对比实验,证明利用低质量伪标并不只能通过对比学习去实现,只要利用好低质量样本,即使是二分类方法也能取得不错的精度提升。
附录
U2PL 与 negative learning 的区别
这里需要着重强调下我们的工作和 negative learning 的区别, negative learning 选用的负样本依旧是高置信度的可靠样本[3],相比之下我们则提倡充分利用不可靠样本而不是把它们过滤掉。
U2PL 技术蓝图
这里贴出技术蓝图,便于大家更好地理解论文的核心 story 和实验设计
参考
- ^ab[2104.04465] Bootstrapping Semantic Segmentation with Regional Contrast https://arxiv.org/abs/2104.04465
- ^[1807.03748] Representation Learning with Contrastive Predictive Coding https://arxiv.org/abs/1807.03748
- ^In Defense of Pseudo-Labeling: An Uncertainty-Aware Pseudo-label Selection Framework for Semi-Supervised Learning https://openreview.net/pdf/c979