商汤-上交CVPR2022新作|U2PL: 基于伪标签的半监督语义分割算法
-
商汤-上交CVPR2022新作|U2PL: 基于伪标签的半监督语义分割算法
论文标题: Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
论文地址: https://arxiv.org/pdf/2203.03884.pdf
论文代码: https://haochen-wang409.github.io/U2PL
摘要
-
引出主题:半监督语义分割的关键是对未标注图像中的像素点分配足够的伪标签。
-
现存问题: 一种常见的做法是选择高置信度的预测作为伪标签,但这会导致一个问题,即大多数像素由于其不可靠性而可能无法使用。
-
解决方法: 论文认为每个像素对模型训练都很重要,即使它的预测是模糊的。从直观上看,可能对某个像素是否属于某个类别不是很确定,但对于它不属于某些类应该是比较确定的。基于这一认识,开发了一个有效的pipeline,以充分利用无标签数据集。
-
实验结果: 在各种基准和训练环境下的实验结果表明,该方法优于当前最先进的方法。
背景介绍
可以通过对图像每个像素点的类别预测结果进行熵计算(后文介绍)来判断其可靠性。
如上图所示,图a表示一个熵图,图b是通过对熵图进行阈值得到的伪标签,其中白色区域表示不确定区域。
图c表示图a中黄色十字架位置像素点的类别预测,由于其预测结果可靠性很高,可以直接作为标签用于训练。
图d表示图a中白色十字架位置像素点的类别预测,由于其预测结果可靠性很高,不能作为标签进行训练,但是,很清楚的是,该像素不属于car和train这两类,所以可以将其作为这两个类的负样本参与训练。
这样就能够有效利用所有像素点。
算法
由上图可以看出,整个模型结构基本与基于momentum自监督一致
分为student和teacher分支,两分支具有相同的网络结构,teacher分支的网络权重是根据student分支网络权重进行EMA修正的。
有所不同的是,student分支同时进行监督训练,更重要的创新点在于损失函数的设置。
整个损失函数由LsL_sLs、LuL_uLu和LcL_cLc三部分组成
Ls\mathcal{L}_{s}Ls是用于监督训练的交叉熵损失函数
其中,hhh表示backbone,fff表示分割头
Lu\mathcal{L}_{u}Lu是依赖于teacher可靠预测伪标签进行训练的交叉熵损失函数
Lc\mathcal{L}_{c}Lc是依赖于teacher不可靠预测伪标签进行训练的对比损失函数(基于InfoNCE模型)
接下来进行分别介绍。
可靠伪标签
首先需要对可靠性进行衡量,上文已经简单介绍是使用熵进行计算,熵的定义如下:
其中c表示通道,P表示像素值
再通过阈值来打上伪标签
阈值γt\gamma_{t}γt计算公式如下:
其中,H表示熵图,αt\alpha_{t}αt表示计算熵大小的几分位数值,大家可以查看np.percentitle定义
随着训练的进展,模型性能不断提升,可靠伪标签的比重肯定是逐渐增大的,所以需要动态调节αt\alpha_{t}αt的大小,论文使用线性调节方式
不可靠伪标签
使用不可靠伪标签进行对比学习
本论文这一部分是借鉴ReCo模型,其对比学习需要正负样本:
正样本
- 对于有标签和无标签的数据集,根据每个类别的预测概率筛选出相应的集合AclA_c^lAcl、AcuA_{c}^{u}Acu
- 根据两个集合的合集均值特征作为该类别的anchor pixel
负样本
对于有标签的数据集,其余类别都是负样本
对于无标签的数据集,将其作为预测概率低的类别的负样本
实验
Comparison with Existing Alternatives
Ablation Studies
可视化
-
-
Alice_恒源云
-
Alice_恒源云