---
# System prepended metadata

title: Conservative-Progressive Collaborative Learning for Semi-supervised Semantic Segmentation
tags: [semi-supervised, paper_note]

---

# Conservative-Progressive Collaborative Learning for Semi-supervised Semantic Segmentation

Siqi Fan, Fenghua Zhu, Zunlei Feng, Yisheng Lv, Mingli Song, Fei-Yue Wang

## Introduction
SSL技術主要有兩種典型的作法，Entropy minimization和consistency regularization，兩種做法都仰賴於pseudo supervision，導致不正確的pseudo label產生confirmation bias，大部分方法為了解決此問題而使用預測分數(設立threshold)來選擇可信賴的pseudo label，這樣的作法可能使大量的unlabel data資源被浪費。

![image](https://hackmd.io/_uploads/rJEtvoX9p.png)

Teacher-Student和Student-Student是兩種典型的double branch學習方式，Student-Student訓練時的兩種網路結構容易有模型偶合的問題產生，導致錯誤的結果和限制性。
作者提出Conservative-Progressive Collaborative Learning (CPCL)，平行使用兩種相同結構的網路但使用不同初始值，Conservative只使用高質量的pseudo label做intersection(交集) supervision; Progressive則使用大數量的pseudo label做union supervision。藉由這兩個網路的預測結果生成pseudo label，且兩個網路是在相異知識下進行訓練，因此可降低偶合的問題。
除此之外預測結果的信心值被使用在 loss re-weighting當中，為了解決不可避免的noisy pseudo labels。
![image](https://hackmd.io/_uploads/SJHIGvMcp.png)

## Contribution
- CPCL在使用union supervision保留相異部份時也透過intersection supervision尋找共通點已達成保守評估和進步挖掘兩方面的合作，且由與兩個網路結構在相異知識下訓練的性質可有效解決耦合問題。
- 使用class-wise的不一致指標用來產生不一致部分的pseudo label，且基於信心值對loss做re-weighting，避免noise pseudo label造成的錯誤太巨大

## Framework
![image](https://hackmd.io/_uploads/SyGnMnX96.png)

## Problem Definition
$D_{l}=\{(X^1_{l},G^1),\ ...,(X^N_{l},G^N)\},$ $N$為label data數量

$D_{l}=\{(X^1_{u}),\ ...,(X^M_{u})\},$ $M$為unlabel data數量，且$M\gg N$

$X^n_{l},X^m_{u}\in \mathbb{R}^{H \times W},\ G^n\in \mathbb{R}^{C \times H \times W}$

label data使用傳統的supervised方式做訓練，此篇論文著重將unlabel data $D_u$在兩個相同結構但不同初始值的$f_{\theta c}(X)$和$f_{\theta p}(X)$做訓練
## Data augmentation
作者採用srtong augmentation的cutmix方式，將任兩張圖片做隨機區塊裁切上
$mix(\ a,\ b,\ mask)=(\ 1-mask) \cdot a+mask\ \cdot\ b$

$X_s=mix(X_1,\ X_2,\ mask),$ 取得強化後的$X_s$
兩個網路分支的前處理近乎相同，首先會先輸入三張影像$(X_1,X_2,X_s)$，以$f_{\theta c}(\cdot)$來舉例:
![image](https://hackmd.io/_uploads/HyA0Ka796.png)


$Y^{1}_{cw}\leftarrow arg\underset{y}max f_{\theta c}(y\ |\ X_1)$
$Y^{2}_{cw}\leftarrow arg\underset{y}max f_{\theta c}(y\ |\ X_2)$
$Y_{cs}\leftarrow arg\underset{y}max f_{\theta c}(y\ |\ X_s)$

接著利用$Y^{1}_{cw}$及$Y^{2}_{cw}$做cutmix，取得$Y_{cw}$ :
$Y_{cw}=mix(Y^{1}_{cw},\ Y^{2}_{cw},\ mask),$

相同作法也在Progressive分支下取得$Y_{ps}$及$Y_{pw}$，利用$Y_{cw}$及$Y_{pw}$來生成pseudo label
## pseudo label generation
![image](https://hackmd.io/_uploads/Bk7TKpm5p.png)

$agreement=\left\{ 
  \begin{array}{c}
    True \ \ \ \ \ y^i_{cw}=y^i_{pw}\\ 
    False \ \ \ \ \ otherwise
  \end{array}
\right.$
根據每個pixel判斷若經由兩網路結果相等則此pixel為agreement，否則為disagreement

### Agreement
$I^i_{a}= y^i_{cw},\ if\ y^i_{cw}=y^i_{pw}$
$I^i_{a}$ 為agreement $L_{a}$部分的第i個pixel，$L_{inter}$ 直接使用 $L_{a}$當作pseudo label

### Disagreement
![image](https://hackmd.io/_uploads/HJboapX9a.png)

先計算出class-wise的pseudo label指標，上圖的矩陣縱軸及橫軸分別為不同網路預測的結果，$M_{j,k}$為A網路預測結果為第j類別及B網路預測結果為第k類別的pixel總數量，對角線綠色區塊為agreement的預測類別數量，紅色為disagreement

![image](https://hackmd.io/_uploads/B1qwTpXca.png)

$I^i_d$ 為第i個pixel最後的pseudo label，A網路預測的class為j；B網路預測為k，根據計算出來的指標若$I_j \ge I_k$，選擇 $y^i_{cw}$ 作為該pixel的pseudo label，$I_j \le I_k$，則選擇 $y^i_{pw}$
