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

2020-12-05 機器之心Pro

語義分割是計算機視覺中的基礎任務,我們通常會使用基於 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 不同,端到端的技術不需要人們對單獨的組件建模以完善原始預測值。由於這些方法的表現優於多級流程,未來研究可能會越來越重視端到端的算法。

相關焦點

  • 圖像分割系列<->語義分割
    精選文章,第一時間送達 上期講到圖像分割(Image segmentation)根據某些規則把圖片中的像素分為不同的部分(加不同的標籤),它可分為:超像素、語義分割、實例分割、全景分割, 各有聯繫,又有區別。
  • 2019 語義分割指南
    語義分割是指將圖像中的每個像素歸於類標籤的過程,這些類標籤可以包括一個人、汽車、鮮花、一件家具等。我們可以將語義分割認為是像素級別的圖像分類。例如,在有許多汽車的圖像中,分割會將所有對象標記為汽車對象。然後,一個稱為實例分割的模型能夠標記一個出現在圖像中的物體的獨立實例。
  • 語義分割概念及應用介紹
    比如自動駕駛汽車已經逐漸成為可能,但在整個深度學習過程,需要算法識別和學習作為原始數據提供的圖像,在這一過程中,應用到了語義分割技術。下面讓我們來看看語義分割的需求是如何演變的。早期,計算機視覺的初始應用需求只是識別基本元素,例如邊緣(線和曲線)或漸變。然而,僅僅通過全像素語義分割的創造來理解像素級的圖像,它將屬於同一目標的圖像部分聚集在一起,從而擴展了語義分割的應用場景。
  • MMSegmentation:標準統一的語義分割框架
    語義分割作為計算機視覺中一項基礎任務,同時在自動駕駛/視頻編輯等領域中有重要的應用,因此一直受到學術界和工業界的廣泛關注。在近幾年的會議中,語義分割的論文層出不窮,但是市面上一直缺乏一款能夠相對公平比較各種方法的框架。為了方便研究員和工程師們,OpenMMLab開源了一套基於 PyTorch 實現的標準統一的語義分割框架:MMSegmentation。
  • DeepLabv3+:語義分割領域的新高峰
    本文將帶大家回顧 DeepLabv1-v4 系列的發展歷程,看看 Google 團隊這些年都在做什麼。DeepLabv1DeepLab 是結合了深度卷積神經網絡(DCNNs)和概率圖模型(DenseCRFs)的方法。
  • CVPR 2018:新型語義分割模型:動態結構化語義傳播網絡DSSPN
    例如,長頸鹿、斑馬和馬同屬於有蹄類動物,這個大類描繪了它們的共同視覺特徵,使得它們很容易與貓/狗區分開來。此外,由於專業水平和應用目的不同,語義分割的目標概念集本質上可以開放化和高度結構化,以適應特定的任務/數據集。然而,一些技術還通過在最終預測分數上採用複雜圖形推斷 [7]、層級損失 [31] 或詞嵌入先驗 [39] 來探索視覺識別的語義層次。
  • 語義分割領域開山之作:Google提出用神經網絡搜索實現語義分割
    基於 NAS 的圖像分類遷移到高解析度的圖像處理(語義分割、目標識別、實例分割)有很大的挑戰:(1)神經網絡的搜索空間和基本運算單元有本質不同。(2)架構搜索必須固有地在高解析度圖像上運行,因此不能實現從低解析度圖像訓練模型遷移到高解析度圖像。論文首次嘗試將元學習應用於密集圖像預測(本人理解就是像素級圖像分割)。
  • 標準統一的語義分割框架
    在近幾年的會議中,語義分割的論文層出不窮,但是市面上一直缺乏一款能夠相對公平比較各種方法的框架。為了方便研究員和工程師們,我們開源了一套基於 PyTorch 實現的標準統一的語義分割框架:MMSegmentation。
  • 語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab
    原標題:語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab 王小新 編譯自 Qure.ai Blog 量子位 出品 | 公眾號 QbitAI 圖像語義分割就是機器自動從圖像中分割出對象區域,並識別其中的內容
  • 從全卷積網絡到大型卷積核:深度學習的語義分割全指南
    什麼是語義分割?  語義分割指像素級地識別圖像,即標註出圖像中每個像素所屬的對象類別。如下圖:    左:輸入圖像,右:該圖像的語義分割  除了識別車和騎車的人,我們還需要描繪出每個物體的邊界。因此,與圖像分類不同,語義分割需要根據模型進行密集的像素級分類。
  • 重新發現語義分割,一文簡述全卷積網絡
    本文利用筆記本電腦構建了一個小型全卷積網絡,詳細介紹了全卷積網絡的思路、過程等等,值得一看語義分割是一種學習如何識別圖像中對象範圍的機器學習技術。語義分割賦予機器學習系統與人類相似的理解圖像內容的能力。它促使機器學習算法定位對象的精準邊界,無論是街景圖像中的汽車和行人,還是醫療圖像中的心臟、肝臟和腎臟。
  • CVPR 2019 Oral 論文解讀 | 無監督域適應語義分割
    該論文提出了一種從「虛擬域」泛化到「現實域」的無監督語義分割算法,旨在利用易獲取的虛擬場景標註數據來完成對標註成本高昂的現實場景數據的語義分割,大大減少了人工標註成本。 本文是論文作者之一羅亞威為雷鋒網 AI 科技評論提供的論文解讀。
  • 韓國科學技術院在讀博士潘飛:語義分割場景中域適應問題的研究 |...
    基於卷積神經網絡的監督學習方法近幾年在語義分割任務裡取得了顯著進展。但是,這種方法十分依賴於大量帶注釋的數據進行訓練。為了解決這種限制,通常將從圖形引擎生成自動注釋數據,並用來訓練語義分割網絡。但是,從圖形引擎裡生成的數據訓練的模型很難遷移到真實世界採集到的圖像數據。針對遷移學習的問題,目前主流的是使用域適應或遷移學習的方法來解決圖像分割任務中的遷移學習問題。
  • 「計算機視覺必讀乾貨」圖像分類、檢測,語義分割等方法梳理
    本文旨在介紹深度學習在計算機視覺領域四大基本任務中的應用,包括分類(圖a)、定位、檢測(圖b)、語義分割(圖c)、和實例分割(圖d)。圖像分類(image classification)給定一張輸入圖像,圖像分類任務旨在判斷該圖像所屬類別。(1) 圖像分類常用數據集以下是幾種常用分類數據集,難度依次遞增。
  • 如何用PyTorch進行語義分割?一個教程教會你
    正值PyTorch 1.7更新,那麼我們這次便給大家帶來一個PyTorch簡單實用的教程資源:用PyTorch進行語義分割。△圖源:stanford該教程是基於2020年ECCV Vipriors Chalange Start Code實現了語義分割,並且添加了一些技巧。
  • 谷歌開源語義圖像分割模型:該領域當前最優模型
    GitHub 地址:https://github.com/tensorflow/models/tree/master/research/deeplab語義圖像分割任務是指將語義標籤(例如「道路」、「天空」、「人」、「狗」)分配給圖像中的每一個像素,這種技術有很多新應用,例如,Pixel 2 和 Pixel 2 XL 智慧型手機中肖像模式的合成淺景深效應,以及行動裝置的實時語義分割等
  • 谷歌通過深度度量學習,提出新的語義實例分割方法
    它與目標檢測不同之處在於,輸出是表示每個對象的形狀的掩碼,而不僅僅是一個邊界框。而它與語義分割的不同之處在於,研究目標不僅僅是使用標籤(或背景)對每個像素進行分類,而且還要區分同一類別的各個實例。因此,標籤空間是沒有大小限制的(例如,假設有兩個人和一輛車,可能會標記「人-1」,「人-2」和「車-1」)。這個問題在諸如無人駕車、機器人、照片編輯等領域有許多實際應用。
  • 9102年了,語義分割的入坑指南和最新進展都是什麼樣的
    在這篇文章中,作者介紹了近來優秀的語義分割思想與解決方案,它可以稱得上是 2019 語義分割指南了。我們可以認為語義分割是像素級別的圖像分類。例如,在一幅有很多輛車的圖像中,分割模型將會把所有的物體(車)標記為車輛。但是,另一種被稱為實例分割的模型能夠將出現在圖像中的獨立物體標記為獨立的實例。這種分割在被用在統計物體數量的應用中是很有用的(例如,統計商城中的客流量)。
  • 語義分割標註工具Semantic Segmentation Editor 快速安裝指南
    精選作品,第一時間送達簡介:Semantic-Segmentation-Editor是由日立汽車工業實驗室(Hitachi Automotive And Industry Lab)開源的基於Web的語義對象標註編輯器(Semantic Segmentation Editor)
  • ECCV 2020 Oral | 蘇黎世聯邦理工學院提出:弱監督語義分割新網絡
    — 如何改進CAM [1] 只能定位局部判別性區域,提出了不同之前只從改進分割網絡結構或細化分類網絡任務的的方法。本篇文章在pacvoc 2012驗證集上mIoU達到了66.2,在測試集上達到了66.9,均為最高。一、簡介如果閱讀過我之前關於弱監督語義分割(WSSS)的論文閱讀筆記的讀者,就一定知道弱監督語義分割從開始到現在的發展大致分為兩個階段。這兩個階段以CAM [1] 的出現為劃分節點。在CAM這個方法出現之前,WSSS的研究呈現百花齊放的狀態。