語義分割一個review

翻譯自【http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review
寫了一半發現已經有現成的翻譯了:【http://www.myzaker.com/article/5968490c1bc8e00302000033/
大多數對於語義分割的研究,都是基於自然的或者真實世界的圖像數據集。儘管這些結果並不能直接應用於醫學圖像,但是我仍然對這些文獻進行了學習,因爲這些研究遠比醫學圖像領域內的要成熟。

本報告組織如下:
首先,我解釋了什麼叫做語義分割;然後,對於現有的方法進行了一個綜述;最後簡單總結了幾篇有意思的文獻。

什麼是語義分割?
語義分割是給定一幅圖像,我們希望能夠從像素級別來實現圖像理解。也就是說,對於一幅圖像,對於其中的每一個像素,我們都能給它分配一個類別標籤。舉個例子,如下圖像:
這裏寫圖片描述
source:PASCAL VOC2011

除了識別出圖像中的摩托車和駕駛員,我們也需要描繪出每一個目標的輪廓。因此,和分類不同的是,我們需要一個模型,對於給定圖像,能夠實現稠密的,像素級別的預測。

VOC2012MSCOCO都是語義分割領域內最重要的數據集。

有哪些不同的方法?
在深度學習全面進入計算機視覺領域之前,語義分割通常是通過TextonForestRandom Forest based classifiers來實現的。正如圖像分類一樣,卷積神經網絡(CNN)已經在分割問題上實現了巨大的成就。

其中一個早期比較流行的深度學習方法是patch classification,對於每一個像素,根據其在圖像中的patch,而將其分爲某個類。使用patch的主要原因是,分類網絡通常都有全連接層,因此需要固定大小的圖像。【對於CNN來說,直到第一個全連接層之前,它的輸入圖片大小是可以不固定的,但是有了全連接層之後,就要求輸入大小保持一致,第二種方法是先把任意大小的圖片進行輸入CNN直到第一個全連接層,然後再在它的基礎上進行固定大小的滑動窗口輸入到全連接層中,由於第一個全連接層之前進行了大量的下采樣操作,所以這時候的滑動窗口的數目就大大的減少了,而且前面的卷積操作就要計算一次,沒有重複計算的問題。CNN裏面有一個trick就是把訓練好了的用於分類的網絡,把它的全連接層參數轉化爲卷積層參數。這樣改造後的CNN就成了全卷積CNN,它的輸入是可以任意的,而它的輸出是patch 的類別得分。本段source

2014年,Berkeley的Long等人提出了**全卷積網絡**Fully Convolutional Networks(FCN)是一個不需要通過全連接層的,用於稠密預測的卷積網絡。該方法使得對於任意大小的圖像,都能實現有效分割,並且和按patch分類的方法比,要快得多。後續幾乎所有的比較先進的方法都是採用了該範例。

除了全連接層,使用卷積神經網絡來實現分割的另一個主要問題是池化層(pooling layers)。池化層擴大了視場(filed of view),聚合上下文信息,但是同時丟棄“where”信息(位置信息)。然而,語義分割要求的是對於分類結果的絕對匹配,所以,又需要良好保留“where”信息。因此,爲了解決這個問題,有兩類網絡架構不斷髮展進化。

第一類就是編碼器-解碼器架構。編碼器能夠逐步降低池化層的空間維度,解碼器則一步步恢復目標細節和空間維度。通常從編碼器到解碼器之間,會存在一些快捷的連接(shortcut connections),是的解碼器能夠更好地恢復目標細節。在這類架構中,U-Net就是非常流行的一個。
這裏寫圖片描述
source:U-Net

第二類架構,我們稱爲空洞/帶孔卷積(dilated/atrous convolutions) ,去除了池化層。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章