當前位置:
首頁 > 最新 > 細說語義分割,不只是畫個邊框那麼簡單

細說語義分割,不只是畫個邊框那麼簡單

來源:The Gradient

編譯:Bing

人類如何描述一個場景?我們可能會說「窗戶下面有一張桌子」或者「沙發右邊有一盞檯燈」。將場景分割成獨立的實體是理解一張圖像的關鍵,它讓我們了解目標物體的行為。

當然,目標檢測方法可以幫我們在特定實體周圍畫出邊界框。但是要想像人類一樣對場景有所了解還需要對每個實體的邊界框將進行監測和標記,並精確到像素級。這項任務變得越來越重要,因為我們開始創建自動汽車和智能機器人,它們都需要對周圍環境有著精確的理解。來自斯坦福大學的Andy Chen和Chaitanya Asawa就為我們詳細介紹了進行精確語義分割都需要哪些條件。以下是論智的編譯。

什麼是語義分割

語義分割是計算機視覺中的任務,在這一過程中,我們將視覺輸入中的不同部分按照語義分到不同類別中。通過「語義理解」,各類別有一定的現實意義。例如,我們可能想提取圖中所有關於「汽車」的像素,然後把顏色塗成藍色。

GIF

雖然例如聚類等無監督的方法可以用於分割,但是這樣的結果並不是按照語義分類的。這些方法並非按照訓練方法進行分割,而是按照更通用的方法。

語義分割讓我們對圖像的理解比圖像分類和目標物體檢測更詳細。這種對細節的理解在很多領域都非常重要,包括自動駕駛、機器人和圖片搜索引擎。這篇文章將重點講解利用深度學習模型實現監督式語義分割。

數據集和標準

經常用於訓練語義分割模型的數據集有:

Pascal VOC 2012:其中有20個類別,包括人物、交通工具等等。目的是為了分割目標物體類別或背景。

Cityscapes:從50個城市收集的景觀數據集。

Pascal Context:有超過400種室內和室外場景。

Stanford Background Dataset:該數據集全部由室外場景組成,但每張圖片都有至少一個前景。

用來評估語義分割演算法性能的標準是平均IoU(Intersection Over Union),這裡IoU被定義為:

這一標準能保證我們不僅能捕捉到每個目標對象,還能非常精確地完成這一任務。

語義分割過程(Pipeline)

在高級過程中,通常應用語義分割模型的過程如下:

輸入→分類器→後處理→最終結果

之後我們將詳細討論分類器和後處理的過程。

結構和分割方法

用卷積神經網路進行分類

最近進行語義分割的結構大多用的是卷積神經網路(CNN),它首先會給每個像素分配最初的類別標籤。卷積層可以有效地捕捉圖像的局部特徵,同時將這樣的圖層分層嵌入,CNN嘗試提取更寬廣的結構。隨著越來越多的卷積層捕捉到越來越複雜的圖像特徵,一個卷積神經網路可以將圖像中的內容編碼成緊湊的表示。

但是想要將單獨的像素映射到標籤,我們需要在一個編碼-解碼器設置中增強標準的CNN編碼器。在這個設置中,編碼器用卷積層和池化層減少圖像的寬度和高度,達到一個更低維的表示。之後將其輸入到解碼器中,通過上採樣「恢復」空間維度,在每個解碼器的步驟上擴大表示的尺寸。在一些情況中,編碼器中間的步驟是用來幫助解碼器的步驟的。最終,解碼器生成了一群表示原始圖像的標籤。

SCNet的編碼-解碼設置

在許多語義分割結構中,CNN想要最小化的損失函數是交叉熵損失。這一目標函數測量每個像素的預測概率分布與它實際概率分布的距離。

然而,交叉熵損失對語義分割並不理想,因為一張圖像的最終損失僅僅是每個像素損失的總和,而交叉熵損失不是並行的。由於交叉熵損失無法在像素間添加更高級的架構,所以最小化交叉熵的標籤會經常變得不完整或者失真,這時候就需要後處理了。

用條件隨機場進行改進

CNN中的原始標籤經常是經過補綴的圖像,其中可能有一些地方是錯誤的標籤,與周圍的像素標籤不一致。為了解決這一不連貫的問題,我們可以應用一種領其變光滑的技術。我們想保證目標物體所在圖像區域是連貫的,同時任何像素都與其周圍有著相同的標籤。

為了解決這一問題,一些架構用到了條件隨機場(CRFs),它利用原始圖像中像素的相似性調整CNN的標籤。

條件隨機場的示例

一個條件隨機場是由隨機變數組成的圖形。在這一語境中,每個節點代表:

特定像素的CNN標籤(綠色)

特定像素的實際物體標籤(黃色)

每個連接線中編碼了兩個類型的信息:

藍色:兩像素中實際標籤之間的相關性

紅色:CNN原始預測和給定像素的實際標籤之間的依賴關係

每種依賴關係都與潛力有關,它是由兩個相關隨機變數表示的函數。例如,當相鄰像素的實際標籤相同時,第一種依賴關係的可能性更高。更直接地說,對象標籤起到隱藏變數的作用,可以根據某些概率分布生成可觀察的CNN像素標籤。

要用CRF調整標籤,我們首先用訓練數據學習圖像模型的參數。然後,我們再調整參數使概率最大化。CRF推斷的輸出就是原始圖像像素的最終目標標籤。

在實際中,CRF圖形是完全連接的,這意味著即使與節點相對的像素距離很遠,仍然可以在一條連接線上。這樣的圖形有幾十億條連接線,在計算實際的推斷時非常耗費計算力。CRF架構將用高效的估算技術進行推斷。

分類器結構

CNN分類之後的CRF調整隻是語義分割過程的一個示例。許多研究論文都討論過這一過程的變體:

U-Net通過生成原始訓練數據的變形版本增強其訓練數據。這一步驟讓CNN的編碼-解碼器在應對這樣的變形時更加穩定,同時能在更少的訓練圖像中學習。當在一個不到40張的醫學圖像集中訓練時,模型的IoU分數依然達到了92%。

DeepLab結合了CNN編碼-解碼器和CRF調整,生成了它的對象標籤(作者強調了解碼過程中的上採樣)。空洞卷積使用每層不同尺寸的過濾器,讓每個圖層捕捉到不同規模大小的特徵。在Pascal VOC 2012測試集上,這一結構的平均IoU分數為70.3%。

Dilation10是空洞卷積的替代方法。在Pascal VOC 2012測試集上,它的平均IoU分數為75.3%。

其他訓練過程

現在我們關注一下最近的訓練案例,與含有各種元素、優化不同的是,這些方法都是端到端的。

完全差分條件隨機場

Zheng等人提出的CRF-RNN模型介紹了一種將分類和後處理結合到一種端到端模型的方法,同時優化兩個階段。因此,例如CRF高斯核的權重參數就可以自動學習。它們浮現了推理近似演算法作為卷積而達到這一目的,同時使用循環神經網路模擬推理演算法的完全迭代本性。

分別用FCN-8s、DeepLab和CRF-RNN生成的兩張圖片的分割

對抗訓練

最近,還有人研究了利用對抗訓練幫助開發更高程度的一致性。受到生成對抗網路的啟發,Luc等人訓練了一個標準的CNN用來做語義分割,同時還有一個對抗網路,試著學習標準分割與預測分割之間的區別。分割網路的目的是生成對抗網路無法分辨的語義分割。

這裡的中心思想是,我們想讓我們的分割看起來儘可能真實。如果其他網路可以輕易識破,那麼我們做出的分割預測就不夠好。

隨時間進行分割

我們如何預測目標物體在未來會如何呢?我們可以對某一場景中的分割動作建模。這可以應用到機器人或自動交通工具中,這些產品需要對物體的移動進行建模,從而做計劃。

Luc等人在2017年討論了這一問題,在論文中他們表示直接預測未來的語義分割會生成比預測未來框架然後再分割更好的性能。

他們用了自動回歸模型,用過去的分割預測下一個分割,以此類推。

最終發現這種方法長期的性能不太好,中短期來看效果不錯。

結語

在這之中的很多方法,例如U-Net,都遵循了一個基礎結構:我們引用深度學習(或卷積網路),之後用傳統概率的方法進行後處理。雖然卷積網路的原始輸出不太完美,後處理能將分割的標籤調整到接近人類的水平。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 論智 的精彩文章:

FaceForensics:一個用於人臉偽造檢測的大型視頻數據集
當Node.js遇上OpenCV深度神經網路

TAG:論智 |