admin管理员组

文章数量:1658730

Conservative-progressive collaborative learning for semi-supervised semantic segmentation

  • paper
  • code
  • 创新点:
    • 创新点1: conservative evolution
    • 创新点2: progressive exploration
  • Model讲解
    • loss
    • 实验结果:
      • 对比实验
      • 消融实验:
  • 个人小结:

paper

code

创新点:

作者认为当前的伪标签监督没有充分的使用unlabel数据,大量工作都设计置信度阈值来挑选置信度高的标签,导致大量的unlabel数据没有被使用到。可是如果不加区别的使用unlabel,势必带来偏差,经模型训练累计后,拉低模型性能。

于是为了更好的使用unlabel数据,作者提出一个思想:使用保守-激进两个分支来处理数据

**conservative evolution(保守演化)**使用label标签+交集(指激进、保守都同意的像素)进行学习。

**progressive exploration(激进探索)**大胆的使用并集进行训练(指激进、保守不一致的像素)进行学校,旨在充分使用数据,对数据进行探索。

创新点1: conservative evolution

使用高质量的**label标签+交集(指激进、保守都同意的像素)**的进行学习。

也就是:


注意,整个伪标签是基于pix-level:

交集指导conservative branch进行训练:

创新点2: progressive exploration

使用并集进行学习,上面已经算出像素相同的L_a,现在要算像素不同的L_d:

作者认为常规选择高置信度作为伪标签,只关注了高精度的像素,这样不利于对unlabel的使用。

为了解决这个问题,作者从宏观出发,构建一个类不同指示器。

为了计算这个类不同指示器 I ,作者构建了一个混淆矩阵。

分割类中 I 的值越大,表示类别不一样。放到微观像素层面则是,在伪标签pix层面则是,激进-保守在某个像素点预测值不一样,则不是一个类,则类别不同指示器 I 的值越大。

算法流程如下:

得到像素不同的L_d后,并集为:

并集指导progressive branch进行学习:

Model讲解

整个模型采用异构的方式进行训练,但是经过作者改进后,与其他的异构又有区别,对比图如下:


整个算法流程如下:

step1:取出两张unlabel样本X1、X2,将X1、X2经过cutmix后得到的Xs,将X1、X2作为一组送入保守分支生成预测Y_cw_1、Y_cw_2,并将Y_cw_1、Y_cw_2经过cutmix得到Y_cw。将Xs送入保守分支生成预测Y_cs。

step2:将X1、X2作为一组送入激进分支生成预测Y_pw_1、Y_pw_2,并将Y_pw_1、Y_pw_2经过cutmix得到Y_pw。将Xs送入保守分支生成预测Y_ps。

**step3**:将Y_cw与Y_pw送去计算L_a、L_b、I。

step4使用L_a指导保守分支强扰动Y_cs使用L_a并L_b指导激进分支强扰动Y_ps

loss

step1:Model是经过label标签训练过的分割网络,因此对于label监督部分的损失为传统的交叉熵损失:

step2:unlabel的损失:

总loss为

实验结果:

对比实验

Table1:在CITYSCAPES上的实验对比。

Table2:在PASCAL VOC 2012上的实验对比。

Table6:在PASCAL VOC 2012上的实验对比。


Table5:在CITYSCAPES上的实验对比。

Figure 9:在PASCAL VOC 2012上的实验对比。

消融实验:

Table3:讨论CPCL的动态损失函数、交集、并集三个部件的作用。

Figure8:交并集的有效性。

Table4:讨论像素级置信度与类别混淆的影响。

个人小结:

1、增强伪标签的质量对半监督分割非常重要。

2、使用双模型进行训练,可能会带来模型耦合导致训练朝同一方向,导致模型训练完全无效,使用异构可以一定程度上减轻模型耦合。

3、寻找一个靠谱的指标来判断模型是否耦合,靠伪标签的使用比例还是有风险。

4、对分割难度大的数据集,置信度阈值最好不要设太高。

5、只选用置信度高的伪标签对模型性能提升不一定有效。探索低置信度的伪标签对模型有好处,但是有可能带来噪声。

6、用较难处理的语义类可以帮助模型脱离局部优化。

本文标签: CPCLCVPR