天天看點

Holistically-Nested Edge Detection讀書筆記

這是一篇邊緣檢測的文章,邊緣檢測跟semantic segmentation有點類似,邊緣檢測就是把邊緣設定為1,其他的為0;而semantic segmentation隻是把邊緣内部為1,而外部為0。如果我們把邊緣檢測出來,隻要把内部設定為1,外面設定為0就可以得到semantic segmentation的結果。因而,了解邊緣檢測對語義分割還是有所幫助的。并且,這兩個任務存在一定程度的不同之處,那麼可以使用一個任務進行預訓練模型,再用預訓練好的模型去訓練另外一個模型,或者将把另外一個任務作為側監督,上述兩種方法在某些醫療圖像中已經驗證了具有一定的效果。

1. Holistically-Nested Edge Detection

作者的貢獻點集中在兩個方面:(1)采用deep supervision指導後半部分的層,(2)将後半部分的不同層的結果(shape不一樣)分别進行上采樣,并将各個層的結果進行融合(一種方法是将各個層的上采樣輸出值求average,另外一個将各個層上采樣的輸出值concatenate在一起然後再經過卷積得到最後的輸出)

1.1 Existing multi-scale and multi-level NN

Holistically-Nested Edge Detection讀書筆記

(a)将同一個輸入進過不同個數的卷積層,然後将輸出合并再經過一個卷積得到最後的輸出。

(b)将一個輸入經過多個卷積核,并将每個卷積核的輸出結果concatenate在一起,在經過一個卷積得到輸出。(a)和(b)差别在于(a)是橫向的,而(b)是縱向的。

(c)将輸入先resize成不同大小的shape然後再放進去卷積層。

(d)将一個輸入經過多個不同個數的卷積,然後将對結果進行ensemble。

(e)作者提出來的方法,對于一個輸入,經過連續的卷積層,将每一層的結果儲存下來進行ensemble得到第一個輸出,同時将每一層的結果concatenate在一起再過一個卷積核得到第二個輸出,最後将兩個輸出在ensemble在一起得到最後的結果。

ps:這裡的ensemble用的都是average。

1.2formulation

考慮到邊緣的pixel個數很少,是以資料的類别不平衡十分嚴重,作者采用了權重的cross-entropy作為損失函數。

Holistically-Nested Edge Detection讀書筆記

這裡beta作為損失函數的權重,其利用正負樣本在總樣本的權重來作為損失函數的權重。optimize過程為:

Holistically-Nested Edge Detection讀書筆記

這裡W代表主幹網絡的參數,w則是将不同層的結果進行upsample對應的網絡參數,b則是将不同層的結果concatenate在一起然後經過一個卷積得到最後的輸出時候的卷積網絡的參數。

2.實驗

Holistically-Nested Edge Detection讀書筆記

可以看出将不同層的結果進行融合可以取得明顯的提升,同時對于不同層的輸出結果加上側監督也有幫助。

Holistically-Nested Edge Detection讀書筆記

從上表可以看出,雖然第一層輸出結果與Groud Truth差别很大,但是在求avg的時候,如果僅僅統計中間三層的output,會比統計所有輸出層的結果更差,這一點值得我們警惕。

繼續閱讀