[論文筆記] Uncertainty Reduction for Model Adaptation in Semantic Segmentation
這篇是第一個把 model adaptation 這樣的方法用在 UDA semantic segmentation 領域的論文,也就是在沒有 source data 和 source label,但是有 target data 的情況下去改善 model 在 target domain 上的表現。
如果是想快速知道這篇論文大概在做什麼的讀者,可以直接看 Overview 就好;
如果是想看詳細方法介紹的讀者,筆者會在後面說明此論文要解決的問題是什麼,接著介紹作者提出的方法,最後再帶大家看實驗結果。
Domain Knowledge
本篇會出現的一些常見的專有名詞會在這裡介紹,筆者一開始在讀論文時常常被這些專有名詞搞到很挫折,希望能透過淺白的講解讓大家快速進入狀況,如果是熟悉這領域的大大可以直接跳過這段~
Overview
此篇論文主要的貢獻有三點:
- 是第一個把 model adaptation 應用在 UDA semantic segmentation 上的論文。
- 由於沒有 source data 可以重複訓練,作者提出了一些方法來降低 model 預測的不確定性,包含運用 uncertainty loss, entropy regularizer 和 pseudo-labeling 的技巧。
- 應用此方法,可以達到跟有用 source data 的 model 們差不多的表現。(註:此篇論文挑選的 baseline 均是 2019 前的方法)
模型表現:
Task | Class Number | City | mIoU |
---|---|---|---|
GTA Cityscapes | 19 classes | x | 45.1 |
Synthia Cityscapes | 16 classes | x | 39.6 |
13 classes | x | 45.0 | |
Cityscapes NTHU Crosscity | 13 classes | Rome | 53.8 |
13 classes | Rio | 53.5 | |
13 classes | Tokyo | 49.8 | |
13 classes | Taipei | 50.1 |
Methods
在進入正式方法前,先來區分一下 model adaptation 跟 domain adaptation。
我們知道 domain adaptation 是指把 source domain 學習到的東西遷移到 target domain,而這時我們擁有的資源有來自 source domain 的 data 跟 label,以及 target domain 的 data,希望藉由這些來讓 model 自己學習到 target domain 的 label。
model adaptation 要做的目標跟 domain adaptation 完全一樣,只差在現在我們沒有 source data,也沒有 source label,但是有一個事先在 source domain 訓練完成的 pre-trained model 以及 target data。問題來了,為什麼好端端的 source data 不用,要故意創造一個這麼艱難的問題呢?原因就在於處理真實世界的 UDA 問題時,source data 不一定會開放給大家使用,例如醫學影像的訓練,那些資料都包含了病人隱私問題,有些時候沒辦法開放大家使用,但 model 就沒有所謂隱私權問題,只是一堆參數罷了,這樣只拿 model 做更動的研究,被作者稱作 model adaptation(之後以 MA 代稱)。
這兩種類別都屬於遷移學習(transfer learning)的一種。
Formal Problem
現在把 MA 的問題用正式的符號來表示, 代表輸入、 代表輸出、 代表 source domain、 代表 target doamin。所以 就是在 source domain 的輸入,包含 data 跟 label,而 則是指 target domain 上的 data。
這裡以 來代表整個模型架構,而且 ,也就是說此處的模型就是那個先在 source domain 上的 pre-trained model,他們的架構是完全一樣的。這個 是由一個 feature extractor network (代號 ,這裏採用 ResNet-101) 和一個 ASPP decoder (代號 ) 組成的。
因此我們的問題可以這樣表示:在擁有 和 的情況下,我們的目標是透過改善 來在 的 data 上拿到更好的表現。
1. Adding noise to the feature representation using dropout
首先,我們希望 model 的 output 越穩定越好,也就是 predict 出來的 class 不會被 noise 干擾,這有相當多的做法可以實現,這裏作者選擇一個簡單又強大的方法就是把 feature representation 分別通過 droupout,這樣我們拿到的就是多個有「殘缺」的 feature,再經過同樣的 ASPP decoder 架構後,我們希望這些 decoder 的 output 都可以是一樣的,這樣表示我們的 model 可以不受 noise 干擾的進行分類,也能讓 feature 變得更加 robust。
上方的圖片為作者提出的 model 架構,原本的 pre-trained model 就只包含黃色的 shared backbone 和 綠色的 main decoder,作者另外把 ResNet-101 產生的 feature representation 分別過了另外四個 dropout 並經過 auxiliary decoder (Aux decoder) 產生 semantic segmentation map 後,拿這些圖來跟 main decoder 做比對當作 uncertainty loss 。
其中 為 main decoder 的 output, 為 Aux decoder 的 output,總共有 個 Aux decoder (),這樣如果 和 的結果很不一樣, 就會很大,就能迫使 model 讓他們的 prediction 盡量像。
2. Entropy regularizer
第二個方法同樣也是為了可以增加 model 的穩定性,這裏的 entropy regularizer 就是把 entropy 加進 loss 裡面一起算,會用 regularizer 只是因為他有正則化的作用,可以避免 class-overlap 的情況。
這裏的 為 input 對所有的 class 的機率分佈的 entropy。
3. Pseudo-labeling
雖然上述的兩個 loss 可以相當大程度上降低 uncertainty,但是卻無法應付 interchanged labeling (把 class-0 預測成 class-1,class-1 預測成 class-0),因此作者使用了 pseudo-label 的方式來避免這種情況,而這裡的 pseudo-label 跟一般方法不一樣的地方在於,只會採用大於某個 threshold 的 pseudo-label,而且這個 threshold 會根據 class 的不同有所變化,這樣可以保證只有比較確定的區域會被當成 pseudo-label,避免出現嚴重的 bias 問題。
代表 target domain 上 pseudo-label 的 one-hot vector, 其實就是 model 的 output 和 pseudo-label 的 cross-entropy loss。
到這裡,我們已經把作者提出的方法看完啦,可喜可賀!所以最終此論文的 objective function 就會是上面那三個 loss 相加,其中 是用來決定該 loss 佔整體 loss 的比重,在這篇論文中是使用 。
Experiments
Toy Experiment
作者先用了一個較簡單的實驗來證明上述的 loss 真的可以幫助降低 uncertainty,這裏用的也是很簡單的 model 架構。可以看到 (a) (b) 顯示了 source data 跟 target data 的分佈(這裡的 target data 是由旋轉 source data 後獲得,此處只分兩類),這裏的實驗條件跟我們想處理的問題一樣,model 看不到 target data 的 label,且訓練過程中也不會用到 source data,所以一開始 target data feature 完全沒有分開(c),再加了 entropy regularizer 後可以看到 feature 大致上被分成兩邊 (d),且在加了 uncertainty loss 後可以把 feature 拉離 decision boundary (e),證明此方法是真的有用的。
Datasets Information
- 圖片均為 2048 * 1024 的街景圖片
- 2975 annotated images for training set
- 500 images for validation set (benchmark)
- 19 classes
- https://www.cityscapes-dataset.com
- 圖片均為來自遊戲 Grand Theft Auto 的街景圖片
- 24966 frames, 1914 * 1052
- Share 19 classes with Cityscapes
- https://download.visinf.tu-darmstadt.de/data/from_games
- 9400 images, 1280 * 760
- share 16 class with Cityscapes
- https://synthia-dataset.net
- 共包含了四個城,2048 * 1024 的街景圖片 (Rome, Rio, Taipei, Tokyo)
- 3200 unlabeled image as training data
- 100 labeld image as target data
- share 13 classes with Cityscaoes
- https://yihsinchen.github.io/segmentation_adaptation
Main Results
實驗部分,雖然它在三個 task 中都沒有拿到很高的成績,但是就沒有 source data 的情況下分數已經相當不錯,另外作者有提到他們的 variance 較高,光是更改 random seed 就能讓分數有兩分左右的誤差。
GTA5 - Cityscapes
Synthia - Cityscapes
Cityscapes - NTHU Crosscity
Conclusion
筆者在這篇文章中帶大家看了在沒有 source data 的情況下要如何做 UDA segmentation,也把此論文提出的三個主要的方法講解過一遍,希望可以讓大家更了解這個領域的作品。這篇論文離 SOTA 的分數還有一段距離,筆者相信可以透過應用現有的 UDA 方法到 model adaptation 的問題中來得到更好的 performance,例如應用 consistency training 或是加入 data augmentation 的方法等等,就等大家來實現啦!
Reference:
有任何問題都歡迎在下面提出,喜歡這篇文章的話可以幫我點一個讚,
祝福各位能在機器學習領域走出屬於自己的一條路。