# Background-Aware Pooling and Noise-Aware Loss for Weakly-Supervised Semantic Segmentation ###### tags: `paper` https://arxiv.org/pdf/2104.00905v1.pdf Accepted to CVPR 2021  這篇方法超級繞,我盡量用簡單的話來解釋,希望能幫助各位了解 #  今天我有Bounding Box的label,我想要產生semantic segmentation的偽標籤 #  他的步驟簡單來說就是 1. 訓練一個 分類器(CNN_A) 2. 用這個分類器產生兩個偽標籤 (Ycrf, Yret) 3. 用這兩個偽標籤,訓練一個新的 分割器(CNN_B) 紅色的部分就是這篇的貢獻 ## 講一下 How? 的部分 發想: 我的bounding box裡面也會有一些feature是屬於背景吧,那我就拿 **確定是背景的feature** (BBox外的) 和 BBox 內的feature算similarity,很像背景的我就在Attention Map上把他當成背景 產生偽標籤是用分類器(CNN_A)網路,為了讓這個Model的CAM好一點(少框到一點背景),作者做了BAP (background aware pooling)  下面拆解來講 ##  我把feature map切成 N^2 格(grid) `M` 會把在bounding box內的pixel乘上0, bounding box外(背景)的pixel乘上1 換句話說,他只想考慮背景的pixel 這一步產生的 `qj` 可以說是「背景的feature的平均」 ##  把bounding box內的feature `f( p )` 和背景的feature `qj` 分別算Cosine Similarity,即可知道此feature是否為背景 => 拿到 j 個背景的attention map `Aj` 要分別和每個 `qj` 做是因為每個grid中的背景可能feature都有點差異 ReLU 為了把 `Aj` 的值壓在0~1之間 ##  把 `Aj` 平均起來就拿到一個背景的attention map了 ##  回到分類器,一般最後一層會用Global Average Pooling,那這裡他用前面算的`Aj`加權,pooling時想辦法留下前景的資訊(前景的資訊權重比較大)。 後面就是接分類,他也有分背景這一類(這有事為什麼 `qj` 那邊連了一條線到 `w` ) ## 再來就到怎麼產 偽標籤 了 產偽標籤的部分有用到DenseCRF ,詳細可以看 Nips 2011 的 Efficient inference in fully connected CRFs with gaussian edge potentials 這邊簡單講一下什麼是CRF (conditional random field  一般使用 Naive Bayes 的 Model , 每個 output y 都假設是獨立事件 但現實中很有可能不是這樣的 舉例來說  source: https://darshita1405.medium.com/superpixels-and-slic-6b2d8a6e4f08 狗的眼睛周邊的pixel也很有可能是眼睛這個類別 回到這張圖  CRF會把每個predict y都做連結(詳細數學推倒有空再說) 那 DenseCRF 很簡單來說,就是y的連結是全連接  在 Semantic Segmentation 蠻常用到 DenseCRF的  因為影像中,通樣類別的東西,通常pixel間會有一些關係,可能是histogram也可能是顏色等等 ## 說了這麼多 所以到底怎麼產 偽標籤  他把前面訓練的分類器(CNN_A)的CAM和背景的Attention Map一起丟給Densecrf,讓他產出第一個偽標籤 Ycrf ## Ycrf 不夠好嗎 作者有提到,有時候只根據 low level (顏色、材質) 的特徵抓出來的 Label 會不太準  因此他們想到,我就拿我的分類器的 high level 特徵阿 (就feature map啦)  他根據 Ycrf 的位置, 去把 feature map 上的相應位置的 feature 平均起來做成根據每個class做成 `qc`  再拿這個 `qc` 和 feature map的pixel算similarity,看每個feature到底最像是哪個類別 就開心的拿到了 Yret 了 ## 好了 拿到兩個 偽標籤 了, 然後呢?  他把這兩個偽標前重疊,完全重疊(聯集)的部分他就覺得是很信心的 所以直接算 CE Loss 就好  那沒有完全重疊的呢 (上圖米白色部分) 作者覺得他可能是Noise Label,所以他想給這部分的Loss權重 ## 怎麼給 Noise Label 權重的 還記得 CAM 嗎  做者認為,CAM中越信心的地方(heatmap中的紅色),他的feature越能代表這個類別 所以,他就把米白色的部分拿去和heatmap紅色的部分的feature算cosine similarity啦~(還來呀!) 得到的結果就是sigma,gamma是個超參數 > > P.S. 這裡論文說的很繞,說classifier的weight越高越能代表這個feature可以代表這個class,所以上圖公式中的` Dc` 就是在講這件事,至於+1只是為了讓值大於1 > 但其實他想表達的事情和CAM的原理是一樣的,所以我就簡化成看CAM了~ 總結一下,sigma就是這個label是這個class(即非Noise)的機率啦~ ## 所以說那個Loss呢  就是把很確定的部分 (Ycrf ^ Yret) 用CE Loss算 可能是Noise的部分 ~(Ycrf ^ Yret) 用 WCE Loss 算,weight就是sigma ## 方法講完啦~~~~
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up