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