深度学习之语义分割(SegNet)
原文鏈接:https://arxiv.org/pdf/1511.00561.pdf
github(tensorflow):https://github.com/aizawan/segnet
基于SegNet的鋼鐵分割實驗:https://github.com/fourmi1995/IronSegExprement-SegNet
1 編解碼結構
具體來說,編碼器的任務是在給定輸入圖像后,通過神經網絡學習得到輸入圖像的特征圖譜;而解碼器則在編碼器提供特征圖后,逐步實現每個像素的類別標注,也就是分割。
通常,分割任務中的編碼器結構比較類似,大多來源于用于分類任務的網絡結構,比如VGG。這樣做有一個好處,就是可以借用在大數據庫下訓練得到的分類網絡的權重參數,通過遷移學習實現更好的效果。因此,解碼器的不同在很大程度上決定了一個基于編解碼結構的分割網絡的效果。
2 SegNet
SegNet的編碼器結構與解碼器結構是一一對應的,即一個decoder具有與其對應的encoder相同的空間尺寸和通道數。對于基礎SegNet結構,二者各有13個卷積層,其中編碼器的卷積層就對應了VGG16網絡結構中的前13個卷積層。encoder網絡:其結構與VGG16網絡的前13層卷積層的結構相似。decoder網絡:作用是將由encoder的到的低分辨率的feature maps 進行映射得到與輸入圖像featuremap相同的分辨率進而進行像素級別的分類。Segnet的亮點:decoder進行上采樣的方式,直接利用與之對應的encoder階段中進行max-pooling時的polling index 進行非線性上采樣,這樣做的好處是上采樣階段就不需要進行學習。?SegNet主要用于場景理解應用,需要在進行inference時考慮內存的占用及分割的準確率。同時,Segnet的訓練參數較少(將前面提到的VGG16的全連接層剔除),可以用SGD進行end-to-end訓練。
下圖是SegNet的網絡結構,其中藍色代表卷積+Batch Normalization+ReLU,綠色代表max-pooling,紅色代表上采樣,黃色是Softmax。
?SegNet與FCN的對應結構相比,體量要小很多。這主要得益于SegNet中為了權衡計算量而采取的操作:用記錄的池化過程的位置信息替代直接的反卷積操作。具體如下圖所示。
?圖中左側是SegNet使用的解碼方式,右側是FCN對應的解碼方式。可以看到,SegNet的做法是先根據位置信息生成稀疏的特征圖,再利用后續的卷積計算恢復稠密特征圖。而FCN則直接利用反卷積操作求得上采樣后的特征圖,再將其與編碼器特征圖相加。
4 總結與思考
關于變體的分析,可以總結為以下三點:
-
保留編碼器所有特征圖所實現的效果最好,在這一點上語義分割邊緣輪廓描述度量(BF)體現最為明顯。
-
當推理過程的內存受限時,可以使用編碼器特征圖的壓縮形式(比如縮小維度、使用池化信息等),但需要搭配合適的解碼器形式(比如SegNet類型的)來提升表現。
-
在給定編碼器時,越大的解碼器效果越好。
?
?
總結
以上是生活随笔為你收集整理的深度学习之语义分割(SegNet)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: M2Det 论文笔记
- 下一篇: 华硕飞行堡垒atk驱动在哪_双11福利大