語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab

2020-11-29 搜狐網

原標題:語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab

王小新 編譯自 Qure.ai Blog

量子位 出品 | 公眾號 QbitAI

圖像語義分割就是機器自動從圖像中分割出對象區域,並識別其中的內容。

量子位今天推薦的這篇文章,回顧了深度學習在圖像語義分割中的發展歷程。

發布這篇文章的Qure.ai,是一家用深度學習來讀取醫學影像的公司,他們在官方博客上梳理了語義分割中的深度學習方法。

他們希望通過這份介紹,能讓大家了解這個已經在自然圖像處理比較成熟、但是在醫學圖像中仍需發展的新興技術。

作者Sasank Chilamkurthy三部分介紹了語義分割相關研究:

以下內容編譯自Qure.ai官方博客:

語義分割是什麼?

語義分割方法在處理圖像時,具體到像素級別,也就是說,該方法會將圖像中每個像素分配到某個對象類別。下面是一個具體案例。

左邊為輸入圖像,右邊為經過語義分割後的輸出圖像。

該模型不僅要識別出摩託車和駕駛者,還要標出每個對象的邊界。因此,與分類目的不同,相關模型要具有像素級的密集預測能力。

目前用於語義分割研究的兩個最重要數據集是VOC2012MSCOCO

VOC2012:

http://host.robots.ox.ac.uk/pascal/VOC/voc2012/

MSCOCO:

http://mscoco.org/explore/

有哪些方法?

在深度學習應用到計算機視覺領域之前,研究人員一般使用紋理基元森林(TextonForest)或是隨機森林(Random Forest)方法來構建用於語義分割的分類器。

卷積神經網絡(CNN)不僅能很好地實現圖像分類,而且在分割問題中也取得了很大的進展。

最初,圖像塊分類是常用的深度學習方法,即利用每個像素周圍的圖像塊分別將各像素分成對應的類別。其中,使用圖像塊的主要原因是分類網絡通常具有全連接層,其輸入需為固定大小的圖像塊。

2014年,加州大學伯克利分校的Long等人提出的完全卷積網絡(Fully Convolutional Networks),推廣了原有的CNN結構,在不帶有全連接層的情況下能進行密集預測。

這種結構的提出使得分割圖譜可以生成任意大小的圖像,且與圖像塊分類方法相比,也提高了處理速度。在後來,幾乎所有關於語義分割的最新研究都採用了這種結構。

除了全連接層結構,在分割問題中很難使用CNN網絡的另一個問題是存在池化層。池化層不僅能增大上層卷積核的感受野,而且能聚合背景同時丟棄部分位置信息。然而,語義分割方法需對類別圖譜進行精確調整,因此需保留池化層中所捨棄的位置信息。

研究者提出了兩個不同形式的結構來解決這個問題。

第一種方法是編碼器-解碼器(encoder-decoder)結構。其中,編碼器使用池化層逐漸縮減輸入數據的空間維度,而解碼器通過反卷積層等網絡層逐步恢復目標的細節和相應的空間維度。從編碼器到解碼器之間,通常存在直接的信息連接,來幫助解碼器更好地恢復目標細節。在這種方法中,一種典型結構為U-Net網絡。

一種典型的編碼器-解碼器結構U-Net

第二種方法使用了稱作空洞卷積的結構,且去除了池化層結構。

空洞卷積,當比率為1時,即為經典的卷積結構。

條件隨機場(Conditional Random Field,CRF)方法通常在後期處理中用於改進分割效果。CRF方法是一種基於底層圖像像素強度進行「平滑」分割的圖模型,在運行時會將像素強度相似的點標記為同一類別。加入條件隨機場方法可以提高1~2%的最終評分值。

發展中的CRF方法效果。b圖中將一維分類器作為CRF方法的分割輸入;c、d、e圖為CRF方法的三種變體;e圖為廣泛使用的一種CRF結構。

接下來,我們會梳理一些代表性論文,來介紹從FCN網絡開始的分割結構演變歷程。

這些結構都使用了VOC2012數據集來測試實際效果。

一些有趣的研究

接下來將按照論文的發表順序來介紹以下論文:

1.FCN網絡;

2.SegNet網絡;

3.空洞卷積(Dilated Convolutions);

4.DeepLab (v1和v2);

5.RefineNet;

6.PSPNet;

7.大內核(Large Kernel Matters);

8.DeepLab v3;

對於上面的每篇論文,下面將會分別指出主要貢獻並進行解釋,也貼出了這些結構在VOC2012數據集中的測試分值IOU。

FCN

論文:

Fully Convolutional Networks for Semantic Segmentation

於2014年11月14日提交到arvix

https://arxiv.org/abs/1411.4038

主要貢獻:

具體解釋:

本文的關鍵在於:分類網絡中的全連接層可以看作是使用卷積核遍歷整個輸入區域的卷積操作。

這相當於在重疊的輸入圖像塊上評估原始的分類網絡,但是與先前相比計算效率更高,因為在圖像塊重疊區域,共享計算結果。

儘管這種方法並不是這篇文章中所特有的,還有一篇關於overfeat的文章也使用了這種思想,但是確實顯著提高了在VOC2012數據集上的實際效果。

用卷積運算實現的全連接層結構

在將VGG等預訓練網絡模型的全連接層卷積化之後,由於CNN網絡中的池化操作,得到的特徵圖譜仍需進行上採樣。

反卷積層在進行上採樣時,不是使用簡單的雙線性插值,而是通過學習實現插值操作。此網絡層也被稱為上卷積、完全卷積、轉置卷積或是分形卷積。

然而,由於在池化操作中丟失部分信息,使得即使加上反卷積層的上採樣操作也會產生粗糙的分割圖。因此,本文還從高解析度特性圖譜中引入了跳躍連接方式。

分值 評論 來源
62.2 排行榜
67.2 增大動量momentum(原文未描述) 排行榜
FCN網絡在VOC2012上測試的基準分值

個人評論:

本文的研究貢獻非常重要,但是最新的研究已經很大程度地改進了這個結果。

SegNet

論文:

SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

於2015年11月2日提交到arvix

https://arxiv.org/abs/1511.00561

主要貢獻:

將最大池化指數轉移至解碼器中,改善了分割解析度。

具體解釋:

在FCN網絡中,通過上卷積層和一些跳躍連接產生了粗糙的分割圖,為了提升效果而引入了更多的跳躍連接。

然而,FCN網絡僅僅複製了編碼器特徵,而Segnet網絡複製了最大池化指數。這使得在內存使用上,SegNet比FCN更為高效。

SegNet網絡結構

SegNet在VOC2012上測試的基準分值

個人評論:

FCN網絡和SegNet網絡都是最先出現的編碼器-解碼器結構,但是SegNet網絡的基準分值還不能滿足可實際使用的需求。

空洞卷積

論文:

Multi-Scale Context Aggregation by Dilated Convolutions

於2015年11月23日提交到arvix

https://arxiv.org/abs/1511.07122

主要貢獻:

具體解釋:

池化操作增大了感受野,有助於實現分類網絡。但是池化操作在分割過程中也降低了解析度。

因此,該論文所提出的空洞卷積層是如此工作的:

空洞卷積示意圖

空洞卷積層在不降低空間維度的前提下增大了相應的感受野指數。

在接下來將提到的DeepLab中,空洞卷積被稱為多孔卷積(atrous convolution)。

從預訓練好的分類網絡中(這裡指的是VGG網絡)移除最後兩個池化層,而用空洞卷積取代了隨後的卷積層。

特別的是,池化層3和池化層4之間的卷積操作為空洞卷積層2,池化層4之後的卷積操作為空洞卷積層4。

這篇文章所提出的背景模型(frontend module)可在不增加參數數量的情況下獲得密集預測結果。

這篇文章所提到的背景模塊單獨訓練了前端模塊的輸出,作為該模型的輸入。該模塊是由不同擴張程度的空洞卷積層級聯而得到的,從而聚集多尺度背景模塊並改善前端預測效果。

分值 評論 來源
71.3 前端 空洞卷積論文
73.5 前端+背景 同上
74.7 前端+背景+ CRF 同上
75.3 前端+背景+ CRF - RNN 同上
空洞卷積在VOC2012上測試的基準分值

個人評論:

需要注意的是,該模型預測分割圖的大小是原圖像大小的1/8。這是幾乎所有方法中都存在的問題,將通過內插方法得到最終分割圖。

DeepLab(v1和v2)

論文1:

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs

於2014年12月22日提交到Arvix

https://arxiv.org/abs/1412.7062

論文2:

DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

於2016年6月2日提交到Arxiv

https://arxiv.org/abs/1606.00915

主要貢獻:

具體解釋:

空洞卷積在不增加參數數量的情況下增大了感受野,按照上文提到的空洞卷積論文的做法,可以改善分割網絡。

我們可以通過將原始圖像的多個重新縮放版本傳遞到CNN網絡的並行分支(即圖像金字塔)中,或是可使用不同採樣率(ASPP)的多個並行空洞卷積層,這兩種方法均可實現多尺度處理。

我們也可通過全連接條件隨機場實現結構化預測,需將條件隨機場的訓練和微調單獨作為一個後期處理步驟。

DeepLab2網絡的處理流程

分值 評論 來源
79.7 ResNet-101 + 空洞卷積 + ASPP + CRF 排行榜
DeepLab2網絡在VOC2012上測試的基準分值 RefineNet

論文:

RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation

於2016年11月20日提交到Arxiv

https://arxiv.org/abs/1611.06612

主要貢獻:

  • 帶有精心設計解碼器模塊的編碼器-解碼器結構;

  • 所有組件遵循殘差連接的設計方式。

具體解釋:

使用空洞卷積的方法也存在一定的缺點,它的計算成本比較高,同時由於需處理大量高解析度特徵圖譜,會佔用大量內存,這個問題阻礙了高解析度預測的計算研究。

DeepLab得到的預測結果只有原始輸入的1/8大小。

所以,這篇論文提出了相應的編碼器-解碼器結構,其中編碼器是ResNet-101模塊,解碼器為能融合編碼器高解析度特徵和先前RefineNet模塊低解析度特徵的RefineNet模塊。

RefineNet網絡結構

每個RefineNet模塊包含一個能通過對較低解析度特徵進行上採樣來融合多解析度特徵的組件,以及一個能基於步幅為1及5×5大小的重複池化層來獲取背景信息的組件。

這些組件遵循恆等映射的思想,採用了殘差連接的設計方式。

RefineNet模塊

分值 評論 來源
84.2 CRF + 多維度輸入 + COCO預訓練 排行榜
RefineNet網絡在VOC2012上測試的基準分值 PSPNet

論文:

Pyramid Scene Parsing Network

於2016年12月4日提交到Arxiv

https://arxiv.org/abs/1612.01105

主要貢獻:

  • 提出了金字塔池化模塊來聚合背景信息;

  • 使用了附加損失(auxiliary loss)。

具體解釋:

全局場景分類很重要,由於它提供了分割類別分布的線索。金字塔池化模塊使用大內核池化層來捕獲這些信息。

和上文提到的空洞卷積論文一樣,PSPNet也用空洞卷積來改善Resnet結構,並添加了一個金字塔池化模塊。該模塊將ResNet的特徵圖譜連接到並行池化層的上採樣輸出,其中內核分別覆蓋了圖像的整個區域、半各區域和小塊區域。

在ResNet網絡的第四階段(即輸入到金字塔池化模塊後),除了主分支的損失之外又新增了附加損失,這種思想在其他研究中也被稱為中級監督(intermediate supervision)。

PSPNet網絡結構

分值 評論 來源
85.4 COCO預訓練,多維度輸入,無CRF方法 排行榜
82.6 無COCO預訓練方法,多維度輸入,無CRF方法 PSPNet論文
PSPNet網絡在VOC2012上測試的基準分值 大內核

論文:

Large Kernel Matters — Improve Semantic Segmentation by Global Convolutional Network

於2017年3月8日提交到Arxiv

https://arxiv.org/abs/1703.02719

主要貢獻:

提出了一種帶有大維度卷積核的編碼器-解碼器結構。

具體解釋:

這項研究通過全局卷積網絡來提高語義分割的效果。

語義分割不僅需要圖像分割,而且需要對分割目標進行分類。在分割結構中不能使用全連接層,這項研究發現可以使用大維度內核來替代。

採用大內核結構的另一個原因是,儘管ResNet等多種深層網絡具有很大的感受野,有相關研究發現網絡傾向於在一個小得多的區域來獲取信息,並提出了有效感受野的概念。

大內核結構計算成本高,且具有很多結構參數。因此,k×k卷積可近似成1×k+k×1和k×1+1×k的兩種分布組合。這個模塊稱為全局卷積網絡(Global Convolutional Network, GCN)。

接下來談結構,ResNet(不帶空洞卷積)組成了整個結構的編碼器部分,同時GCN網絡和反卷積層組成了解碼器部分。該結構還使用了一種稱作邊界細化(Boundary Refinement,BR)的簡單殘差模塊。

GCN網絡結構

分值 評論 來源
82.2 - 詳情見本論文
83.6 改進訓練過程,未在本文中詳細描述 排行榜
GCN網絡在VOC2012上測試的基準分值 DeepLab v3

論文:

Rethinking Atrous Convolution for Semantic Image Segmentation

於2017年6月17日提交到Arxiv

https://arxiv.org/abs/1706.05587

主要貢獻:

具體解釋:

與在DeepLab v2網絡、空洞卷積中一樣,這項研究也用空洞卷積/多空卷積來改善ResNet模型。

這篇論文還提出了三種改善ASPP的方法,涉及了像素級特徵的連接、加入1×1的卷積層和三個不同比率下3×3的空洞卷積,還在每個並行卷積層之後加入了批量歸一化操作。

級聯模塊實際上是一個殘差網絡模塊,但其中的空洞卷積層是以不同比率構建的。這個模塊與空洞卷積論文中提到的背景模塊相似,但直接應用到中間特徵圖譜中,而不是置信圖譜。置信圖譜是指其通道數與類別數相同的CNN網絡頂層特徵圖譜。

該論文獨立評估了這兩個所提出的模型,嘗試結合將兩者結合起來並沒有提高實際性能。兩者在驗證集上的實際性能相近,帶有ASPP結構的模型表現略好一些,且沒有加入CRF結構。

這兩種模型的性能優於DeepLabv2模型的最優值,文章中還提到性能的提高是由於加入了批量歸一化層和使用了更優的方法來編碼多尺度背景。

DeepLabv3 ASPP結構

分值 評論 來源
85.7 使用了ASPP結構,且不帶有級聯模塊 排行榜
DeepLabv3 ASPP結構在VOC2012上測試的基準分值

原文地址:

http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review

【完】

一則通知

量子位讀者5群開放申請,對人工智慧感興趣的朋友,可以添加量子位小助手的微信qbitbot2,申請入群,一起研討人工智慧。

另外,量子位大咖雲集的自動駕駛技術群,僅接納研究自動駕駛相關領域的在校學生或一線工程師。申請方式:添加qbitbot2為好友,備註「自動駕駛」申請加入~

招聘

量子位正在招募編輯/記者等崗位,工作地點在北京中關村。相關細節,請在公眾號對話界面,回覆:「招聘」。

追蹤人工智慧領域最勁內容返回搜狐,查看更多

責任編輯:

相關焦點

  • 谷歌開源語義圖像分割模型:該領域當前最優模型
    GitHub 地址:https://github.com/tensorflow/models/tree/master/research/deeplab語義圖像分割任務是指將語義標籤(例如「道路」、「天空」、「人」、「狗」)分配給圖像中的每一個像素,這種技術有很多新應用,例如,Pixel 2 和 Pixel 2 XL 智慧型手機中肖像模式的合成淺景深效應,以及行動裝置的實時語義分割等
  • DeepLabv1 & DeepLabv2 - 空洞卷積(語義分割)
    它通常用於小波變換,現在它被應用於卷積中以進行深度學習。 但是,CRF是一個後階段的處理過程,它使DeepLabv1和DeepLabv2變為不是端到端的學習框架。並且它是不在DeepLabv3和DeepLabv3 +中使用。
  • 從全卷積網絡到大型卷積核:深度學習的語義分割全指南
    By路雪 2017年7月14日  語義分割一直是計算機視覺中十分重要的領域,隨著深度學習的流行,語義分割任務也得到了大量的進步。本文首先闡釋何為語義分割,然後再從論文出發概述多種解決方案。本文由淺層模型到深度模型,簡要介紹了語義分割各種技術,雖然本文並沒有深入講解語義分割的具體實現,但本文簡要地概述了每一篇重要論文的精要和亮點,希望能給讀者一些指南。
  • 2019 語義分割指南
    用於語義圖像分割的深度神經網絡弱和半監督學習(ICCV,2015)這篇文章提出了一種解決方法,用於面對深度卷積網絡中處理弱標記數據的難題、以及處理良好標記與未適當標記數據結合。本文應用了一個深度CNNs與全連接條件隨機場的組合。
  • 谷歌通過深度度量學習,提出新的語義實例分割方法
    雷鋒網了解到,谷歌研究院近日與UCLA合作,提出了一種新的語義實例分割方法:首先計算兩個像素屬於同一對象的可能性,然後將相似的像素分組在一起。其中,相似性度量是基於深度,完全卷積的嵌入模型,而分組方法是基於選擇所有與一組「種籽點」足夠相似的點,這個選擇模型是一個深度的、完全卷積的評分模型。
  • 入門| 一文了解什麼是語義分割及常用的語義分割方法有哪些
    語義分割是計算機視覺中的基礎任務,我們通常會使用基於 CNN 加 CRF 的方法或直接使用對抗性的訓練實現端到端的分割。本文簡要介紹了這兩種方法及它們的特點。人類是如何描述場景的?我們可能會說「窗戶下有一張桌子」,或者「沙發右邊有一盞燈」。
  • 圖像分割系列<->語義分割
    精選文章,第一時間送達 上期講到圖像分割(Image segmentation)根據某些規則把圖片中的像素分為不同的部分(加不同的標籤),它可分為:超像素、語義分割、實例分割、全景分割, 各有聯繫,又有區別。
  • DeepLab系列
    2014年,正是DCNN在圖像領域爆發後的那段時間,圖像分類、目標檢測等領域基於DCNN取得空前進展,語義分割領域當然也會一頭扎進去。但對於語義分割這一需要準確位置信息的像素級任務,使用DCNN還需要解決如下問題:重複池化下採樣導致解析度大幅下降,位置信息難以恢復。
  • 如何用PyTorch進行語義分割?一個教程教會你
    正值PyTorch 1.7更新,那麼我們這次便給大家帶來一個PyTorch簡單實用的教程資源:用PyTorch進行語義分割。△圖源:stanford該教程是基於2020年ECCV Vipriors Chalange Start Code實現了語義分割,並且添加了一些技巧。
  • 語義分割概念及應用介紹
    近年來,以深度學習為中心的機器學習技術引起了人們的關注。比如自動駕駛汽車已經逐漸成為可能,但在整個深度學習過程,需要算法識別和學習作為原始數據提供的圖像,在這一過程中,應用到了語義分割技術。下面讓我們來看看語義分割的需求是如何演變的。早期,計算機視覺的初始應用需求只是識別基本元素,例如邊緣(線和曲線)或漸變。
  • 100個深度圖像分割算法,紐約大學UCLA等最新綜述論文
    圖像分割(Image Segmentation)是計算機視覺的經典問題之一,受到了廣泛關注,每年在各大會議上都有大量的相關文章發表。在前深度學習時代有大量的方法提出,比如分水嶺、GraphCut等。隨著深度學習的興起,大量的算法提出如R-CNN、Mask-RCNN等。
  • 「計算機視覺必讀乾貨」圖像分類、檢測,語義分割等方法梳理
    新智元專欄 作者:張皓【新智元導讀】本文作者來自南京大學計算機系機器學習與數據挖掘所(LAMDA),本文直觀系統地梳理了深度學習在計算機視覺領域四大基本任務中的應用,包括圖像分類、定位、檢測、語義分割和實例分割。
  • 韓國科學技術院在讀博士潘飛:語義分割場景中域適應問題的研究 |...
    基於卷積神經網絡的監督學習方法近幾年在語義分割任務裡取得了顯著進展。但是,這種方法十分依賴於大量帶注釋的數據進行訓練。為了解決這種限制,通常將從圖形引擎生成自動注釋數據,並用來訓練語義分割網絡。但是,從圖形引擎裡生成的數據訓練的模型很難遷移到真實世界採集到的圖像數據。針對遷移學習的問題,目前主流的是使用域適應或遷移學習的方法來解決圖像分割任務中的遷移學習問題。
  • 光學精密工程 | 實例特徵深度鏈式學習全景分割網絡
    116600)DOI:摘 要 針對全景分割中實例目標邊緣特徵提取不足導致目標邊界分割失效的問題,提出一種創新的實例特徵深度鏈式學習全景分割網絡。該網絡由基本的鏈式單元組合而成,根據單元結構對特徵信息處理方法的不同,鏈式單元分為特徵保持鏈和特徵增強鏈兩種。特徵保持鏈是鏈式網絡特徵提取過程的輸入級,保證輸入信息的完整性,而後將特徵傳遞到特徵增強鏈結構;特徵增強鏈通過自身的拓展來加深網絡深度,提升特徵提取能力。鏈式學習網絡由於具有良好的深度堆疊特性,可以獲取豐富的邊緣特徵信息,提高分割精度。
  • CVPR 2019 Oral 論文解讀 | 無監督域適應語義分割
    該論文提出了一種從「虛擬域」泛化到「現實域」的無監督語義分割算法,旨在利用易獲取的虛擬場景標註數據來完成對標註成本高昂的現實場景數據的語義分割,大大減少了人工標註成本。 本文是論文作者之一羅亞威為雷鋒網 AI 科技評論提供的論文解讀。
  • 語義分割領域開山之作:Google提出用神經網絡搜索實現語義分割
    在過去的一年中,元學習(meta-learning)在大規模圖像分類問題上,性能已經實現超越人類手工設計的神經網架構。基於 NAS 的圖像分類遷移到高解析度的圖像處理(語義分割、目標識別、實例分割)有很大的挑戰:(1)神經網絡的搜索空間和基本運算單元有本質不同。(2)架構搜索必須固有地在高解析度圖像上運行,因此不能實現從低解析度圖像訓練模型遷移到高解析度圖像。
  • CVPR 2018:新型語義分割模型:動態結構化語義傳播網絡DSSPN
    近日,來自 CMU、Petuum 等機構的研究者提出一種新型語義分割模型動態結構化語義傳播網絡 DSSPN,通過將語義概念層次明確地結合到網絡中來構建語義神經元圖。實驗證明 DSSPN 優於當前最優的分割模型。
  • DeepLabv3+:語義分割領域的新高峰
    DeepLabv1DeepLab 是結合了深度卷積神經網絡(DCNNs)和概率圖模型(DenseCRFs)的方法。在實驗中發現 DCNNs 做語義分割時精準度不夠的問題,根本原因是 DCNNs 的高級特徵的平移不變性,即高層次特徵映射,根源於重複的池化和下採樣。
  • 語義分割標註工具Semantic Segmentation Editor 快速安裝指南
    >,該工具專門用於創建機器學習語義分割的訓練數據,為自動駕駛研究開發的,但也可以用於標註其他類型的語義目標資料庫。,現在將我自己的安裝過程記錄如下,希望能夠幫到同樣也需要的人,大家一起相互交流學習。如果在安裝過程中仍然不能夠順利下載所需的安裝包,可以在公眾號後臺回復【分割標註】獲取下載連結,進行下載。
  • MMSegmentation:標準統一的語義分割框架
    語義分割作為計算機視覺中一項基礎任務,同時在自動駕駛/視頻編輯等領域中有重要的應用,因此一直受到學術界和工業界的廣泛關注。在近幾年的會議中,語義分割的論文層出不窮,但是市面上一直缺乏一款能夠相對公平比較各種方法的框架。為了方便研究員和工程師們,OpenMMLab開源了一套基於 PyTorch 實現的標準統一的語義分割框架:MMSegmentation。