一文了解什麼是語義分割及常用的語義分割方法有哪些

 2018-06-05 17:01:00.0

語義分割是計算機視覺中的基礎任務,我們通常會使用基於 CNN 加 CRF 的方法或直接使用對抗性的訓練實現端到端的分割。本文簡要介紹了這兩種方法及它們的特點。

人類是如何描述場景的?我們可能會說「窗戶下有一張桌子」,或者「沙發右邊有一盞燈」。圖像理解的關鍵在於將一個整體場景分解成幾個單獨的實體,這也有助於我們推理目標的不同行爲。

當然,目標檢測方法可以幫助我們繪製某些確定實體的邊框,但人類對場景的理解能以像素級的精細程度對每一個實體進行檢測並標記精確的邊界。我們已經開始發展自動駕駛汽車和智能機器人,這些都需要深入理解周圍環境,因此精確分割實體變得越來越重要。

什麼是語義分割?

語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分爲不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。例如,我們可能需要區分圖像中屬於汽車的所有像素,並把這些像素塗成藍色。

來源:Zhao 等人的 ICNet(2017):語義分割的演示視頻。

雖然像聚類這樣的無監督方法可以用於分割,但其結果不一定是有語義的。這些方法無法對它們訓練的類進行細分,但是在搜索區域界限方面更加擅長。

與圖像分類或目標檢測相比,語義分割使我們對圖像有更加細緻的瞭解。這種瞭解在諸如自動駕駛機器人以及圖像搜索引擎等許多領域都是非常重要的。因此,本文討論的主題是使用深度學習方法進行有監督的語義分割。

數據集和指標

目前有一些常用於訓練語義分割模型的數據集:

  • Pascal VOC 2012:有 20 類目標,這些目標包括人類、機動車類以及其他類,可用於目標類別或背景的分割

  • Cityscapes:50 個城市的城市場景語義理解數據集

  • Pascal Context:有 400 多類的室內和室外場景

  • Stanford Background Dataset:至少有一個前景物體的一組戶外場景。

來自 Stanford Background Dataset 的示例圖像,該數據集的圖像大致爲 320 *240 像素,還包括指向每塊像素所屬類別的整數矩陣。

用於評估語義分割算法性能的標準指標是平均 IOU(Intersection Over Union,交併比),IoU 定義如下:

這樣的評價指標可以判斷目標的捕獲程度(使預測標籤與標註儘可能重合),也可以判斷模型的精確程度(使並集儘可能重合)。

流程

一般而言,在高層次上,應用於語義分割模型的流程是:

我們將在下文中繼續討論流程中的分類器和後處理階段。

架構和方法

卷積神經網絡分類

最近的語義分割架構一般都用卷積神經網絡(CNN)爲每個像素分配一個初始類別標籤。卷積層可以有效地捕捉圖像中的局部特徵,並以層級的方式將許多這樣的模塊嵌套在一起,這樣 CNN 就可以試着提取更大的結構了。通過一系列卷積捕捉圖像的複雜特徵,CNN 可以將一張圖的內容編碼爲緊湊表徵。

但爲了將單獨的像素映射給標籤,我們需要將標準 CNN 編碼器擴展爲編碼器-解碼器架構。在這個架構中,編碼器使用卷積層和池化層將特徵圖尺寸縮小,使其成爲更低維的表徵。解碼器接收到這一表徵,用通過轉置卷積執行上採樣而「恢復」空間維度,這樣每一個轉置卷積都能擴展特徵圖尺寸。在某些情況下,編碼器的中間步驟可用於調優解碼器。最終,解碼器生成一個表示原始圖像標籤的數組。

Yasrab 等人文章(2016)中 SCNet 的編碼器-解碼器架構。

在許多語義分割架構中,CNN 旨在最小化的損失函數交叉熵損失。該目標函數度量的是預測像素概率分佈(在所有類上)和實際的概率分佈的差異。

然而,對語義分割來說,交叉熵損失並不理想。因爲對一張圖來說,交叉熵損失是每一個像素損失的和,它並不鼓勵鄰近像素保持一致。因爲交叉熵損失無法在像素間採用更高級的結構,所以交叉熵最小化的標籤預測一般都是不完整或者是模糊的,它們都需要進行後續處理。

條件隨機場優化

來自 CNN 的原始標籤一般都是「缺失(patchy)」圖像,在圖像中有一些小區域的標籤可能不正確,因此無法匹配其周圍的像素標籤。爲了解決這種不連續性,我們可以用一種平滑的形式。我們需要確保目標占據圖片中的連續區域,這樣給定的像素和其周圍像素的標籤就是一樣的。

爲了解決這個問題,有一些架構使用了條件隨機場(CRF),使用原始圖像中像素的相似性重新精煉 CNN 的標籤。

條件隨機場案例。

條件隨機場是由隨機變量組成的圖,在這種情況下,每個頂點表示:

  • 確定像素的 CNN 標籤(綠色頂點 X_i)

  • 確定像素的實際類別標籤(黃色頂點 Y_i)

邊會編碼兩類信息:

  • (1)藍色:兩個像素的實際類別,即它們之間的依賴關係

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

每個依賴性關係都具有勢能,這是一個關於兩個相關隨機變量值的函數。例如,當相鄰像素的實際目標標籤相同時,第一類依存關係的勢能較高。直觀地講,當目標標籤是隱藏變量時,會根據概率分佈產生可觀察的 CNN 像素標籤。

爲了用 CRF 精煉標籤,我們首先通過交叉驗證用訓練數據學習圖模型的參數。然後,爲了使概率 P(Y_1, Y_2, … Y_n | X_1, X_2,…X_n)最大化,對參數進行調整。CRF 的輸出是原始圖像像素的最終的目標標籤。

實際上,CRF 圖是完全連接的,也就意味着即使是從物理角度上講相距很遠的像素節點也可以共享邊。這樣的圖有數十億的邊,從計算上講難以進行精確處理。CRF 架構傾向於使用高效的近似技術進行處理。

分類器架構

CNN 分類後跟着 CRF 精煉只是一個可能的語義分割解決方法。也有論文敘述了其它的一些優秀方法:

  • U-Net(2015,https://arxiv.org/pdf/1505.04597.pdf)通過產生原始訓練數據的扭曲版而增加訓練數據。這一步使 CNN 編碼器-解碼器變得更加魯棒以抵抗這些形變,並能從更少的訓練圖像中進行學習。當它在少於 40 張圖的生物醫學數據集上訓練時,IOU 值仍能達到 92%。

  • DeepLab(2016,https://arxiv.org/pdf/1606.00915.pdf)將 CNN 編碼器-解碼器和 CRF 精煉過程相結合以產生目標標籤(如前文所述,作者強調了解碼器的上採樣)。空洞卷積(也稱擴張卷積)在每一層都使用大小不同的卷積核,使每一層都能捕獲各種比例的特徵。在 Pascal VOC 2012 測試集中,這個架構的平均 IOU 達到了 70.3%。

  • Dilation10(2016,https://arxiv.org/pdf/1511.07122.pdf)是一種擴張卷積的替代方法。完整流程是將擴張卷積的「前端模塊」連接到內容模塊上,再用 CRF-RNN 進行下一步處理。通過這樣的構造,Dilation10 在 Pascal VOC 2012 測試集上的平均 IOU 值達到了 75.3%。

其他訓練方案

我們最近的訓練方案偏離了分類器和 CRF 模型。這些方法不是獨立地優化不同模塊,而是採用端到端的方法。

完全可微分的條件隨機場

Zheng 等人建立的 CRF-RNN 模型引入了一種可以將分類和後處理合併爲單一端到端的模型,該模型可以同時優化這兩個階段。因此可以自動學習諸如 CRF 高斯核權重這樣的參數。他們將推理逼近算法的步驟重整爲卷積,並使用循環神經網絡(RNN)對具有完全迭代性質的推理算法進行建模。

來自 FCN-8s、DeepLab 和 CRF-RNN 的兩個示例圖及其分割結果。注意 CRF-RNN,它在端到端的模型中優化了 CRF,因而產生了更少的斑點,圖像也更準確。

對抗訓練

近期的另一個工作重點是使用對抗性訓練獲得更高階的一致性。受生成對抗網絡(GAN)的啓發,Luc 等人訓練了用於語義分割的標準 CNN 以及試着學習區分真實圖分割和預測圖分割的對抗網絡。分割網絡旨在產生對抗網絡無法從真實分割中區別出來的預測分割。

這個方法的直觀想法是希望我們的分割看起來儘可能真是。如果其它網絡可以從真實分割中簡單地將我們的預測結果區別出來,那麼就說明我們的預測結果不夠好。

來源:Luc 等人的論文,使用對抗性網絡進行語義分割

隨時間的分割

我們要如何預測未來目標會在哪呢?我們可以建模場景中的分割過程而解決這一問題。這適用於機器人自動駕駛,在這兩個問題中對物體的運動建模有助於計劃。

我們首先在 Luc 等人(2017)的文章中發現了這一點。這篇文章說到,與預測未來的幀然後再進行分割相比,直接預測未來的語義分割則要求更高的性能。

他們使用了自迴歸模型,在自迴歸模型中他們用過去的分割預測下一次分割 S_t+1。爲了預測之後的分割 S_t+2,他們將過去的 S_i 與預測出的 S_t+1 相結合再推斷,依此類推得出所有的序列。

該訓練策略用於從之前的分割預測未來的分割。L_t 是一個可以捕獲預測分割和真實分割之間差異的損失函數。來源:Luc 等人的論文,Predicting Deeper into the Future of Semantic Segmentation。

他們比較了模型在不同時間尺度的表現:在 Cityscapes 數據集上評估下一幀(短時間)、下一個 0.5 秒(中等時間)和下一個 10 秒(長時間)的表現。他們發現,在時間較長時模型的表現不佳,但是在短期和中期時間範圍中,模型性能都很好。

結語

許多諸如 U-Net 這樣的方法,遵循最基本的結構:我們應用深度學習(卷積網絡),其次是用經典概率技術進行後處理。雖然卷積網絡的原始輸出並不完美,但是後處理能利用人類先驗知識更好地進行分割,以得到「好的」標籤。

其餘諸如對抗學習這樣的方法,作爲分割的端到端解決方案有非常強大的性能。與之前討論的 CRF 不同,端到端的技術不需要人們對單獨的組件建模以完善原始預測值。由於這些方法的表現優於多級流程,未來研究可能會越來越重視端到端的算法。

原文鏈接:https://thegradient.pub/semantic-segmentation/

文章來源:機器之心