「圖像分割模型」編解碼結構SegNet

2019-07-20     有三AI

這是專欄《圖像分割模型》的第2篇文章。在這個專欄里,我們將共同探索解決分割問題的主流網絡結構和設計思想。

上篇文章我們學習了分割網絡鼻祖FCN,今天我們來看看用解碼器踢館的SegNet。

作者 | 孫叔橋

編輯 | 言有三

1 編解碼結構

分割任務中的編碼器encode與解碼器decode就像是玩「你來比劃我來猜」的雙方:比劃的人想把看到的東西用一種方式描述出來,猜的人根據比劃的人提供的信息猜出答案。

其中,「比劃的人」叫做編碼器,「猜的人」就是解碼器

具體來說,編碼器的任務是在給定輸入圖像後,通過神經網絡學習得到輸入圖像的特徵圖譜;而解碼器則在編碼器提供特徵圖後,逐步實現每個像素的類別標註,也就是分割。

通常,分割任務中的編碼器結構比較類似,大多來源於用於分類任務的網絡結構,比如VGG。這樣做有一個好處,就是可以借用在大資料庫下訓練得到的分類網絡的權重參數,通過遷移學習實現更好的效果。因此,解碼器的不同在很大程度上決定了一個基於編解碼結構的分割網絡的效果。

SegNet就討論了這種不同,並在道路和室內兩個場景下比較了不同解碼器下,各個算法的表現。

CamVid資料庫:《Semantic object classes in video: A high-definition ground truth database》

SUN RGB-D資料庫:《SUN RGB-D: A RGB-D scene understanding benchmark suite》

2 SegNet

SegNet的編碼器結構與解碼器結構是一一對應的,即一個decoder具有與其對應的encoder相同的空間尺寸和通道數。對於基礎SegNet結構,二者各有13個卷積層,其中編碼器的卷積層就對應了VGG16網絡結構中的前13個卷積層。

下圖是SegNet的網絡結構,其中藍色代表卷積+Batch Normalization+ReLU,綠色代表max-pooling,紅色代表上採樣,黃色是Softmax。

SegNet與FCN的對應結構相比,體量要小很多。這主要得益於SegNet中為了權衡計算量而採取的操作:用記錄的池化過程的位置信息替代直接的反卷積操作。具體如下圖所示。

圖中左側是SegNet使用的解碼方式,右側是FCN對應的解碼方式。可以看到,SegNet的做法是先根據位置信息生成稀疏的特徵圖,再利用後續的卷積計算恢復稠密特徵圖。而FCN則直接利用反卷積操作求得上採樣後的特徵圖,再將其與編碼器特徵圖相加。

3 解碼器變體

前文已經提到,編解碼結構中,解碼器的效果和複雜程度對於整個分割網絡的影響是非常大的。這裡我們就一起來看一下不同解碼器結構和它們的效果。

SegNet中一共嘗試了8種不同的解碼結構,先上結果:

這些變體共用相同的編碼器結構,只是在解碼器結構上有所不同。比如,將解碼器的結構單純減少層數,改變解碼器最後一層通道數,改變編解碼器對應結構之間的連接方式(只連接池化信息、保留特徵層內信息或全部保留),改變採樣方式等。

除上面幾種變體外,論文中還嘗試了改變上採樣方法,或取消池化和下採樣過程,但是這些改變都沒有帶來更好的結果。

4 總結與思考

關於變體的分析,可以總結為以下三點:

  • 保留編碼器所有特徵圖所實現的效果最好,在這一點上語義分割邊緣輪廓描述度量(BF)體現最為明顯。
  • 當推理過程的內存受限時,可以使用編碼器特徵圖的壓縮形式(比如縮小維度、使用池化信息等),但需要搭配合適的解碼器形式(比如SegNet類型的)來提升表現。
  • 在給定編碼器時,越大的解碼器效果越好。

今天的圖像分割模型到此結束,下期再見。

文章來源: https://twgreatdaily.com/zh-cn/YvBpGWwBmyVoG_1ZPSue.html