# 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資源被浪費。

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。

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

## 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)$來舉例:

$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

$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

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

$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}$