# Switching Temporary Teachers for Semi-Supervised Semantic Segmentation 論文 : NeurIPS2023 原文 : [Switching Temporary Teachers for Semi-Supervised Semantic Segmentation](https://arxiv.org/pdf/2310.18640) 類別: 1. Semi-Supervised 2. Semantic Segmentation 3. teacher-student ## 目的: teacher-student 之主要概念為: **不需要 pretrain** 1. 將已標註資料送入 student 得到 loss1 2. 將未標註資料分別套用 weak aug 及 strong aug 送入 teacher 及 student ,以 teacher 的結果作為 pseudo mask ,他們輸出結果應要一致,得到 loss2 使用 student 使用一般 back propagation 去更新權重,而 teacher 則用 student 的 EMA 權重更新 EMA (exponential moving average) moving 的意思為移動,將考慮歷史資料,而 exponential 因在分母,代表越久以前的資料影響越小。 而會這樣使用 teacher-student 是因為標註資料過少,利用 teacher 產生較好的 mask 去作為 pseudo mask 以做訓練,而 student 因為初始是使用標註資料做訓練, teacher 使用 student 權重做更新,因此可以得到自身資料集的 feature 進而產出更好的 mask 。 而作者認為此種方法有以下問題: 1. teacher 及 student 會過於親近 (因為teacher 使用 student 權重更新其權重) ,導致到一段時間後不會有一個較好的模型去學習,無法有較好的學習表現,陷入瓶頸。 2. 上述問題在會在複雜的 label (即 segmentation 的 mask ) 情況下仍使用較少的標註資料會更嚴重。 <!-- 這裡有個問題此論文似乎沒有去處理, > when the student model produces biased predictions over a few samples, training with a single EMA teacher is prone to accumulate errors and provide incorrect pseudo-labels to the student model, which causes the irremediable misclassification (i.e., confirmation bias). --> 此篇沒有提到以下問題解法: student 會累積誤差預測,在 EMA 更新後會導致 teacher 提供錯誤的 pseudo-labels 給 student 並造成不可挽回的分類錯誤。 因此這篇論文提出了 **Dual Teacher** ,想要減輕 teacher 及 student 過於親近的問題。 最後可以達到在 PASCAL VOC, Cityscapes 及 ADE20K 皆達到 SOTA 並且使用更少的訓練時間,並且此方法可以用在 CNN 及 transformer 上。 ## Survey 一般 teacher student: ![image](https://hackmd.io/_uploads/HkVmnmng0.png) 對於 : semantic segmentation 之 labeled data ![image](https://hackmd.io/_uploads/rkBNiQ3gC.png) 每一張 labeled image 計算 per-pixel (student predition 對 ground truth) cross entropy 再取平均 ( 皆要做除以 pixel 數及 labeled 圖片數量 )。 對於 : semantic segmentation 之 unlabeled data ![image](https://hackmd.io/_uploads/Sy-H0QngR.png) 將 per-pixel 計算 cross entropy 的對象改為 student predition 對 pseudo label ( 來自 teacher prediction ) ![image](https://hackmd.io/_uploads/BkKoJ4ngA.png) $\lambda_u$ 為調整 $L_{unsup}$ 的超參數 將上面兩 loss 合併後對 student model 做 back propagation ,再使用 EMA 更新 teacher model 。 ![image](https://hackmd.io/_uploads/B1PY1N2e0.png) $\alpha$ 為一超參數 Temporal Ensembling: 此方法參考了 Temporal Ensembling 的概念。 而此方法探討的是 Π model 的缺點,一張圖需要經過不同 augmentation 及 regularization 後 froward (兩種處理都會輸入),希望他們兩個預測出來應要一致,這是相當耗時間的動作。 ![image](https://hackmd.io/_uploads/B14c-E2gC.png) 從這張圖可以看到 Π model 的 X~i~ 有分支輸入,但 Temporal Ensembling 只有一個,那麼他要跟誰比呢? ![image](https://hackmd.io/_uploads/HyPF-EnxC.png) 注意最底下兩行 : 累積組合預測,這裡會使用 EMA 累積前面所做的 prediction ,再利用誤差修正 (其實就是根據前面的 epoch 可能沒什麼好的 performance 、相近的 epoch 差別不大的概念,去修正組合 prediction ,而因 $\alpha$ < 0 , t 越小,將上面一行的 Z 帶入後發現前期更依賴 EMA prediction,訓練越後期,分母越趨近 1 ,越能相信當下模型的 prediction ) 產出組合 prediction。 而模型因此不需要 froward 兩次,僅需一次,卻還有 target ( 組合 prediction ) 可以算 loss 。 ## 方法: 目標是緩解 Teacher Student 模型過於緊密導致 performance 瓶頸的問題。 **Dual Teacher** ![image](https://hackmd.io/_uploads/HJYS3QnxA.png) 作者使用了 **2 個 temporary teacher teacher models** 及 1 個 student model,每一個 epoch student 從 Strong augmentation pool 選擇不同的 strong aug ,並且會換**另一個 teacher** 以產生 pseudo label 。 Strong augmentation pool: 顧名思義,裡面有很多種 strong augmentation ,同時也包含不同尺度的 strong augmentation ( 細: fine class-level 例: ClassMix 和 粗: coarse region-level 例: CutMix ),每個 epoch 皆會取一個 Strong augmentation ,並且兩個 epoch 不連續取同一種 strong augmentation 。 **Implicit Consistency Learning**: 這裡的 implicit 是指使用 stochastic depth ( 隨機去掉一些層數,以克服 resnet 需要大量時間訓練的問題 ) 的 student model 內一部分層,這些稱為 sub-models ,然後作者希望他們能與 teacher models 預測結果一致 (此方法也可用在 transformer )。 ![image](https://hackmd.io/_uploads/SyWdEH2lR.png) 其中 $\theta_s$ 及 $\theta_t$ 分別為**部分** student model 權重及 teacher model 所有權重 這裡的 $p_{ij}(\theta_s)$ 並非指輸入權重,而是指僅取用一部分權重,即student model 利用 stochastic depth 所得出之 sub-model 的輸出。而 $y_{ij}(\theta_t)$ 為 teacher model 輸出。 這裡不同於前面的 student model 輸入 strong aug 、 teacher model 輸入 weak aug ,而是兩者皆輸入 weak aug 。 這裡也是使用 teacher model 之 pseudo-label 而此 loss $L_{cons}$ 會與 $L_{unsup}$ 一同更新 student model 。 ## 結果: ![image](https://hackmd.io/_uploads/S1GKYr3gA.png) ![image](https://hackmd.io/_uploads/HyqYtB2xC.png) ![image](https://hackmd.io/_uploads/ry39tHnlR.png) ![image](https://hackmd.io/_uploads/HJ4iYB3xC.png) 在不同資料集中以不同的 labeled 數量幾乎都可以取得 SOTA 的成績。 ## 探討: 真的有解決 Teacher Student 模型過於緊密的問題嗎 ? ![image](https://hackmd.io/_uploads/rkkvqH3eC.png) 是的,兩者有著明顯的預測差距,最後才趨於相近。 Teacher 越多越好或輸入圖片的 Aug 使用越多越好嗎 ? ![image](https://hackmd.io/_uploads/HJQfiBhlC.png) 否,左圖很明顯就不是,而右圖可以看出在 ± 號之後的變異性明顯為 Dual teacher 更大,作者認為這是因為 augmentation 沒辦法選到一個好的組合讓他們更有多樣性。 組合 teachers 還是交換 teachers ? ![image](https://hackmd.io/_uploads/rJZAhHheA.png) 否,組合會因此失去多樣性。 stochastic depth 所使用的 drop rate 策略影響 ![image](https://hackmd.io/_uploads/HJBiTH2xR.png) Performance 及訓練時間比較 ![image](https://hackmd.io/_uploads/BkJbRr2gA.png) 跨領域: 1. Unsupervised domain adaptation 2. Syntheticto-Real: GTA5→Cityscapes 3. Pretrained on MS COCO ![image](https://hackmd.io/_uploads/BkbhRS2lA.png) 在 PASCAL VOC 上可以看到不太會有不同 class 夾雜在一起的問題 ![image](https://hackmd.io/_uploads/SJnryI2gC.png)