谷歌經典的語義分割框架系列1——DeepLab v1

2021-02-13 計算機視覺研究院

臨近中國的春節,Google 團隊也從不休假,趁著中國人每年一度大遷徙,他們在 arXiv 放出了 DeepLabv3+,雖然這個技術已經出現很久,但是其在語義分割領域取得新的 state-of-the-art 水平,以及典型的改進型讓大家都能夠熟知。那今天計算機視覺戰隊開始好好說說這一系列的操作,有興趣的同學,我們一起去進行深入學習討論!

今天先講講DeepLab v1的那些知識。

原文地址:Semantic image segmentation with deep convolutional nets and fully connected CRFs

收錄:ICLR 2015 (International Conference on Learning Representations)

DeepLab是結合了深度卷積神經網絡(DCNNs)和概率圖模型(DenseCRFs)的方法。在實驗中發現DCNNs做語義分割時精度不夠的問題,根本原因是DCNNs的高級特徵的平移不變性(即高層次特徵映射)。DeepLab解決這一問題的方法是通過將DCNNs層的響應和全連接的條件隨機場(CRF)結合。同時模型創新性的將Hole(即空洞卷積)算法應用到DCNNs模型上,在現代GPU上運行速度達到了8FPS。

相比於傳統的視覺算法(SIFT或HOG),DCNN以其end-to-end(端到端)方式獲得了很好的效果。這樣的成功部分可以歸功於DCNN對圖像轉換的平移不變性,這根本是源於重複的池化和下採樣組合層。平移不變性增強了對數據分層抽象的能力,但同時可能會阻礙部分視覺任務,例如姿態估計、語義分割等,在這些任務中我們傾向於精確的定位而不是抽象的空間關係。

DCNN在圖像標記任務中存在兩個技術障礙:

第一個問題涉及到:在DCNN中重複最大池化和下採樣帶來的解析度下降問題,解析度的下降會丟失細節。DeepLab是採用的atrous(帶孔)算法擴展感受野,獲取更多的上下文信息。

第二個問題涉及到:分類器獲取以對象中心的決策是需要空間變換的不變性,這天然的限制了DCNN的定位精度,DeepLab採用全連接的條件隨機場(DenseCRF)提高模型捕獲細節的能力。

主要貢獻:

速度:帶atrous算法的DCNN可以保持8FPS的速度,全連接CRF平均推斷只需要0.5s;

準確:在當年PASCAL語義分割挑戰中獲得了第二的成績;

簡單:DeepLab是由兩個非常成熟的模塊(DCNN和CRFs)級聯而成。

相關工作:

DeepLab系統應用在語義分割任務上,目的是做逐像素分類的,這與使用two-stages的DCNN方法形成鮮明對比(指R-CNN等系列的目標檢測工作),R-CNN系列的做法是原先圖片上獲取候選區域,再送到DCNN中獲取結果。雖然這種方法明確地嘗試處理前段分割算法的本質,但在仍沒有明確的利用DCNN的預測圖。

今天提出的算法框架與其他先進模型的主要區別在於DenseCRFs和DCNN的結合。是將每個像素視為CRF節點,利用遠程依賴關係,並使用CRF推理直接優化DCNN的損失函數。Koltun(2011)的工作表明全連接的CRF在語義分割下非常有效。

也有其他研究者採取非常相似的方向,將DCNN和密集的CRF結合起來,作者團隊已經更新提出了DeepLab新框架(此處具體指的是DeepLabV2)。

密集分類下的卷積神經網絡

這裡先描述一下DCNN如何設計,調整VGG16模型,轉為一個可以有效提取特徵的語義分割框架。具體來說,先將VGG16的FC層轉為卷積層,模型變為全卷積的方式,在圖像的原始解析度上產生非常稀疏的計算檢測分數(步幅32,步幅=輸入尺寸/輸出特徵尺寸),為了以更密集(步幅8)的計算得分,我們在最後的兩個最大池化層不下採樣(padding到原大小),再通過2或4的採樣率的空洞卷積對特徵圖做採樣擴大感受野,縮小步幅。

空洞卷積的使用

簡單介紹下空洞卷積在卷積神經網絡的使用(在後期分享的DeepLabv3中有更詳細的討論)。在1-D的情況下,我們擴大輸入核元素之間的步長,如下圖Input stride:

如果不是很直觀,看下面的在二維圖像上應用空洞卷積:

藍色部分是輸入:7×7的圖像;

青色部分是輸出:3×3的圖像;

空洞卷積核:3×3,採樣率(擴展率)為2,無padding。

這種帶孔的採樣又稱atrous算法,可以稀疏的採樣底層特徵映射,該方法具有通常性,並且可以使用任何採樣率計算密集的特徵映射。在VGG16中使用不同採樣率的空洞卷積,可以讓模型在密集的計算時,明確控制網絡的感受野。保證DCNN的預測圖可靠的預測圖像中物體的位置。

訓練時將預訓練的VGG16的權重做fine-tune,損失函數是輸出的特徵圖與ground truth下採樣8倍做交叉熵和;測試時取輸出圖雙線性上採樣8倍得到結果。但DCNN的預測物體的位置是粗略的,沒有確切的輪廓。在卷積網絡中,因為有多個池化層和下採樣的重複組合層使得模型具有平移不變性,我們在其輸出的high-level的基礎上做定位是比較難的。這需要做分類精度和定位精度之間是有一個自然的折中。

解決這個問題的工作,主要分為兩個方向:

第一種是利用卷積網絡中多個層次的信息;

第二種是採樣超像素表示,實質上是將定位任務交給底級的分割方法。

DeepLab是結合了DCNNs的識別能力和全連接的CRF的細粒度定位精度,尋求一個結合的方法,結果證明能夠產生準確的語義分割結果。

CRF在語義分割上的應用

傳統上,CRF已被用於平滑噪聲分割圖。通常,這些模型包含耦合相鄰節點的能量項,有利於相同標籤分配空間近端像素。定性的說,這些短程的CRF主要功能是清除在手工特徵基礎上建立的弱分類器的虛假預測。

與這些弱分類器相比,現代的DCNN體系產生質量不同的預測圖,通常是比較平滑且均勻的分類結果(即以前是弱分類器預測的結果,不是很靠譜,現在DCNN的預測結果靠譜多了)。在這種情況下,使用短程的CRF可能是不利的,因為我們的目標是恢復詳細的局部結構,而不是進一步平滑。而有工作證明可用全連接的CRF來提升分割精度。

CRF在語義分割上的應用:

對於每個像素位置i具有隱變量xi(這裡隱變量就是像素的真實類別標籤,如果預測結果有21類,則(i∈1,2,..,21),還有對應的觀測值yi(即像素點對應的顏色值)。以像素為節點,像素與像素間的關係作為邊,構成了一個條件隨機場(CRF)。通過觀測變量yi來推測像素位置i對應的類別標籤xi。條件隨機場示意圖如下:

多尺度預測

論文還探討了使用多尺度預測提高邊界定位效果。具體的,在輸入圖像和前四個最大池化層的輸出上附加了兩層的MLP(第一層是128個3×3卷積,第二層是128個1×1卷積),最終輸出的特徵映射送到模型的最後一層輔助預測,合起來模型最後的softmax層輸入特徵多了5×128=640個通道,實驗表示多尺度有助於提升預測結果,但是效果不如CRF明顯。

Experiment

測試細節:

項目

設置

數據集

PASCAL VOC 2012 segmentation benchmark

DCNN模型

權重採用預訓練的VGG16

DCNN損失函數

交叉熵

訓練器

SGD,batch=20

學習率

初始為0.001,最後的分類層是0.01。每2000次迭代乘0.1

權重

0.9的動量, 0.0005的衰減

 DeepLab由DCNN和CRF組成,訓練策略是分段訓練,即DCNN的輸出是CRF的一元勢函數,在訓練CRF時是固定的。在對DCNN做了fine-tune後,對CRF做交叉驗證。具體參數請參考論文。

CRF和多尺度的表現

在驗證集上的表現:

可以看到帶CRF和多尺度的(MSc)的DeepLab模型效果明顯上升了。

多尺度的視覺表現:

第一行是普通輸出,第二行是帶多尺度的輸出,可以看出多尺度輸出細節部分要好點。

空洞卷積的表現

在使用空洞卷積的過程中,可控制空洞卷積的採樣率來擴展特徵感受野的範圍,不同配置的參數如下:

同樣的實驗結果: 

帶FOV的即不同空洞卷積的配置,可以看到大的空洞卷積效果會好一點。

與其他模型相比

與其他先進模型相比,DeepLab捕獲到了更細節的邊界。

DeepLab創造性的結合了DCNN和CRF產生一種新的語義分割模型,模型有準確的預測結果同時計算效率高。在PASCAL VOC 2012上展現了先進的水平。DeepLab是卷積神經網絡和概率圖模型的交集,後續可考慮將CNN和CRF結合到一起做end-to-end訓練。

後續我們將進一步討論DeepLabv2~3,他們都是DeepLabv1的升級版,並進一步討論空洞卷積和CRF的使用。

相關焦點

  • DeepLabv1 & DeepLabv2 - 空洞卷積(語義分割)
    本文為 AI 研習社編譯的技術博客,原標題 : Review: DeepLabv1 & DeepLabv2 — Atrous Convolution (Semantic Segmentation) 作者 |Sik-Ho Tsang 翻譯 | 史蒂芬·二狗子
  • Deeplab語義分割的發展
    「經典圖像分割方法—基於深度學習的語義分割—Deeplab及其變形」在計算機視覺中,簡單的圖像分割是將數字圖像分為多個段(像素集)的過程。圖像分割是一個長期存在的計算機視覺問題。但是,語義分割是在像素級別「理解」圖像的圖像分割技術。換句話說,語義分割是將每個像素分析和分類為多個類別(標籤)。
  • 谷歌——DeepLab v1
    那今天就開始好好說說這一系列的操作,有興趣的您,我們一起去進行深入學習討論!今天先講講DeepLab v1的那些知識。相關工作:DeepLab系統應用在語義分割任務上,目的是做逐像素分類的,這與使用兩階段的DCNN方法形成鮮明對比(指R-CNN等系列的目標檢測工作),R-CNN系列的做法是原先圖片上獲取候選區域,再送到DCNN中獲取分割建議,重新排列取結果。雖然這種方法明確地嘗試處理前段分割算法的本質,但在仍沒有明確的利用DCNN的預測圖。
  • 深度 | 語義分割網絡DeepLab-v3的架構設計思想和TensorFlow實現
    這篇文章介紹了語義分割的 TensorFlow 實現,並討論了一篇和通用目標的語義分割最相關的論文——DeepLab-v3。DeepLab-v3 是由谷歌開發的語義分割網絡,近日,谷歌還開源了該系列的最新版本——DeepLab-v3+。
  • 語義分割入門的總結
    語義分割方法發展過程:1.灰度分割(Gray Level Segmentation)語義分割的最簡單形式是對一個區域設定必須滿足的硬編碼規則或屬性,進而指定特定類別標籤. 編碼規則可以根據像素的屬性來構建,如灰度級強度(gray level intensity).
  • 語義分割入門的一點總結
    語義分割方法發展過程:1.灰度分割(Gray Level Segmentation)語義分割的最簡單形式是對一個區域設定必須滿足的硬編碼規則或屬性,進而指定特定類別標籤. 編碼規則可以根據像素的屬性來構建,如灰度級強度(gray level intensity).
  • DeepLab V3
    主要方法這裡主要回顧如何應用atrous convolution來提取緊湊的特徵,以進行語義分割; 然後介紹在串行和並行中採用atrous convolution的模塊。不過,這種連續的步長式設計,對於語義分割是不利的,會破壞圖像的細節信息。因此,這裡採用由期望outpur_stride值來確定rates的atrous convolution 進行模型設計,如上圖(b)。
  • 語義分割丨DeepLab系列總結「v1、v2、v3、v3+」
    DeepLabv2DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFslink:https://arxiv.org/pdf/1606.00915.pdf引言DCNN在語義分割中有三個挑戰:(
  • 語義分割雙料冠軍!微軟 OCRNet化解語義分割上下文信息缺失難題|ECCV 2020
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • MMSegmentation:標準統一的語義分割框架
    語義分割作為計算機視覺中一項基礎任務,同時在自動駕駛/視頻編輯等領域中有重要的應用,因此一直受到學術界和工業界的廣泛關注。在近幾年的會議中,語義分割的論文層出不窮,但是市面上一直缺乏一款能夠相對公平比較各種方法的框架。為了方便研究員和工程師們,OpenMMLab開源了一套基於 PyTorch 實現的標準統一的語義分割框架:MMSegmentation。
  • 筆記 | 深入理解深度學習語義分割
    :最近自動駕駛項目需要學習一些語義分割的內容,所以看了看論文和視頻做了一個簡單的總結。筆記思路是:機器學習-->>深度學習-->>語義分割目錄:機器學習回顧深度學習回顧語義分割簡介語義分割代表算法一、回顧機器學習
  • 標準統一的語義分割框架
    在近幾年的會議中,語義分割的論文層出不窮,但是市面上一直缺乏一款能夠相對公平比較各種方法的框架。為了方便研究員和工程師們,我們開源了一套基於 PyTorch 實現的標準統一的語義分割框架:MMSegmentation。
  • 【NLP】博士筆記 | 深入理解深度學習語義分割
    :最近自動駕駛項目需要學習一些語義分割的內容,所以看了看論文和視頻做了一個簡單的總結。筆記思路是:機器學習-->>深度學習-->>語義分割目錄:機器學習回顧深度學習回顧語義分割簡介語義分割代表算法一、回顧機器學習
  • ECCV 2020 | OCRNet化解語義分割上下文信息缺失難題
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • 如何用PyTorch進行語義分割?一個教程教會你
    正值PyTorch 1.7更新,那麼我們這次便給大家帶來一個PyTorch簡單實用的教程資源:用PyTorch進行語義分割。△圖源:stanford該教程是基於2020年ECCV Vipriors Chalange Start Code實現了語義分割,並且添加了一些技巧。
  • DeepLab系列
    1.DeepLab V1這裡只簡單說下V1做了什麼,詳細的講解我想放到V2裡開始講,因為那時候的研究已經有更深的認識。這裡就當作個前情提要吧。2014年,正是DCNN在圖像領域爆發後的那段時間,圖像分類、目標檢測等領域基於DCNN取得空前進展,語義分割領域當然也會一頭扎進去。
  • 人人必須要知道的語義分割模型:DeepLabv3+
    可以看到語義分割只是簡單地對圖像中各個像素點分類,但是實例分割更進一步,需要區分開不同物體,這更加困難,從一定意義上來說,實例分割更像是語義分割加檢測。這裡我們主要關注語義分割。與檢測模型類似,語義分割模型也是建立是分類模型基礎上的,即利用CNN網絡來提取特徵進行分類。對於CNN分類模型,一般情況下會存在stride>1的卷積層和池化層來降採樣,此時特徵圖維度降低,但是特徵更高級,語義更豐富。這對於簡單的分類沒有問題,因為最終只預測一個全局概率,對於分割模型就無法接受,因為我們需要給出圖像不同位置的分類概率,特徵圖過小時會損失很多信息。
  • 語義分割的經典學習方法和深度學習方法綜述
    語義分割和實例分割之間的比較本文將探討一些使用經典和基於深度學習的方法來執行語義分割的方法。此外,還將討論常用的損失函數的選擇和應用。經典方法在深度學習時代到來之前,大量的圖像處理技術被用來將圖像分割成感興趣的區域。下面列出了一些常用的方法。灰度分割最簡單的語義分段形式涉及分配區域必須滿足的硬編碼規則或屬性,以便為其分配特定標籤。規則可以根據像素的屬性(例如灰度級強度)來構建。使用此技術的一種方法是拆分(Split)和合併(Merge)算法。
  • 語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab
    量子位今天推薦的這篇文章,回顧了深度學習在圖像語義分割中的發展歷程。發布這篇文章的Qure.ai,是一家用深度學習來讀取醫學影像的公司,他們在官方博客上梳理了語義分割中的深度學習方法。他們希望通過這份介紹,能讓大家了解這個已經在自然圖像處理比較成熟、但是在醫學圖像中仍需發展的新興技術。
  • 語義分割+視頻分割開原始碼集合
    來源:CSDN博客(http://blog.csdn.net/zhangjunhit/article/details/78190283)語義分割