語義分割乙個review

2021-08-10 05:22:02 字數 1819 閱讀 4783

翻譯自【

寫了一半發現已經有現成的翻譯了:【

大多數對於語義分割的研究,都是基於自然的或者真實世界的影象資料集。儘管這些結果並不能直接應用於醫學影象,但是我仍然對這些文獻進行了學習,因為這些研究遠比醫學影象領域內的要成熟。

本報告組織如下:

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

什麼是語義分割?

語義分割是給定一幅影象,我們希望能夠從畫素級別來實現影象理解。也就是說,對於一幅影象,對於其中的每乙個畫素,我們都能給它分配乙個類別標籤。舉個例子,如下影象:

除了識別出影象中的電單車和駕駛員,我們也需要描繪出每乙個目標的輪廓。因此,和分類不同的是,我們需要乙個模型,對於給定影象,能夠實現稠密的,畫素級別的**。

voc2012和mscoco都是語義分割領域內最重要的資料集。

有哪些不同的方法?

在深度學習全面進入計算機視覺領域之前,語義分割通常是通過textonforest和random forest based classifiers來實現的。正如影象分類一樣,卷積神經網路(cnn)已經在分割問題上實現了巨大的成就。

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

2023年,berkeley的long等人提出了**全卷積網路**fully convolutional networks(fcn)是乙個不需要通過全連線層的,用於稠密**的卷積網路。該方法使得對於任意大小的影象,都能實現有效分割,並且和按patch分類的方法比,要快得多。後續幾乎所有的比較先進的方法都是採用了該範例。

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

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

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

語義分割演算法總結(一)

在本文中經常會提到輸出資料的維度,為了防止讀者產生錯誤的理解,在本文的開頭做一下說明。如上圖,原始影象大小為5 5,經過一次卷積後,影象變為3 3。那就是5 5的輸入,經過乙個卷積層後,輸出的維度變為3 3,再經過乙個卷積層,輸出的維度變為1 1,這裡的5 5,3 3和1 1即為本文提到的資料的維度...

pytorch框架下語義分割訓練實踐(一)

目錄 環境準備 開始訓練 torch 1.1.0 torchvision 0.3.0 tqdm 4.32.2 tensorboard 1.14.0 pillow 6.2.0 opencv python 4.1.0.25 這裡面幾個只有torch比較大,其他都很小,很快就裝完,安裝庫前務必裝下pip,...

語義分割 基於openCV和深度學習(一)

語義分割 基於opencv和深度學習 一 semantic segmentation with opencv and deep learning 傳統的分割方法是將影象分割為若干部分 標準化切割 圖形切割 抓取切割 超畫素等 然而,演算法並沒有真正理解這些部分所代表的內容。另一方面,語義分割演算法試...