Few-Shot Segmentation論文筆記

Patty Wu
Jun 11, 2020

--

論文

#Segmentation, #Few-shot, # Weak- annotation

PANet: Few-Shot Image Semantic Segmentation with Prototype Alignment

參考連結:https://arxiv.org/abs/1908.06391

概述

這是一篇元學習(Meta Learning)應用在Segmentation的方法。賣點大概如下:

  1. 有別於現在較多的segmentation模型,它中間使用metric learning (non-parametric)去學習prototype,相比參數會少一些。
  2. 多使用一個 prototype alignment regularization (PAR) loss來訓練模型,以充分使用support set的資訊。
  3. Testing時,新class也可以用weak annotations 來做分割。

方法

上圖為論文中2-way 1-shot的例子,大概解說一下各個步驟:

1.

Support set的圖片先經由VGG16特徵擷取,得到feature map,維度為w *h*ch (ch是channel數)。Feature map再經由masked average pooling計算得到高維度特徵prototype,此時的維度是(c+1)*ch,c是要分割的class數量,+1是背景也算是一類,然後ch同剛剛的channel數,也就是高維度的特徵數。Masked average pooling的計算方法如下,大致上就是像素值對該class的pixel做加權平均,K-way的K張圖再取平均,就能得到該class的prototype。

c:class

pc:某class的prototype

K:K-way

F:feature map像素值

M:mask

2.

Query Set的圖片一樣經由VGG16取得feature map,再與每個prototype計算餘弦距離,再取softmax,得到每個pixel屬於某class的預測機率(probability map),每個pixel取機率最大的class為預測結果。

3.

計算多class的cross entropy:

N:總spatial點數量

4. 5.

如過這個prototype學得好,照理來說可以逆向回去預測support set,因此作者照一樣的方式,用query set的圖片預測support set,這部份就是賣點提到的prototype alignment regularization (PAR)。loss的算法概念也相同,只是support set和query set的數量不一樣而已:

C:class數量

K:K-shot

6.

最後訓練模型的總loss為兩loss的合,不過lambda可以調整:

7.

推論時只需做上述第2步驟即可,也就是下方紅框的部份。

表現

上圖是論文中的結果,以1way-1shot來說,結果算還行,在物體邊邊角角的部份會沒有預測到,像是腳踏車把手和馬的尾巴。

我自己拿來跑,也有上述的現象,此外也發現,有些圖還是會切割的比較粗糙,調整一下訓練參數再訓練,可能會好些。

論文中探討對weak annotation的應用,在testing時,對於沒過的class只使用弱標註的資料,效果還可以:

總結

其實本來是想找方法可以節省一點標註的工作,不過感覺論文有挑選比較好的圖片出來放,論文中mean IoU和自己訓練後的結果看起來,能幫助的效果還是有限。

--

--

No responses yet