從全卷積網絡到大型卷積核:深度學習的語義分割全指南

2021-01-09 機器之心Pro

  By路雪 2017年7月14日

  語義分割一直是計算機視覺中十分重要的領域,隨著深度學習的流行,語義分割任務也得到了大量的進步。本文首先闡釋何為語義分割,然後再從論文出發概述多種解決方案。本文由淺層模型到深度模型,簡要介紹了語義分割各種技術,雖然本文並沒有深入講解語義分割的具體實現,但本文簡要地概述了每一篇重要論文的精要和亮點,希望能給讀者一些指南。

  什麼是語義分割?

  語義分割指像素級地識別圖像,即標註出圖像中每個像素所屬的對象類別。如下圖:

  

  左:輸入圖像,右:該圖像的語義分割

  除了識別車和騎車的人,我們還需要描繪出每個物體的邊界。因此,與圖像分類不同,語義分割需要根據模型進行密集的像素級分類。

  VOC2012和MSCOCO是語義分割領域最重要的數據集。

  有哪些不同的解決方案?

  在深度學習應用到計算機視覺領域之前,人們使用TextonForest和隨機森林分類器進行語義分割。卷積神經網絡(CNN)不僅對圖像識別有所幫助,也對語義分割領域的發展起到巨大的促進作用。

  語義分割任務最初流行的深度學習方法是圖像塊分類(patchclassification),即利用像素周圍的圖像塊對每一個像素進行獨立的分類。使用圖像塊分類的主要原因是分類網絡通常是全連接層(fullconnectedlayer),且要求固定尺寸的圖像。

  2014年,加州大學伯克利分校的Long等人提出全卷積網絡(FCN),這使得卷積神經網絡無需全連接層即可進行密集的像素預測,CNN從而得到普及。使用這種方法可生成任意大小的圖像分割圖,且該方法比圖像塊分類法要快上許多。之後,語義分割領域幾乎所有先進方法都採用了該模型。

  除了全連接層,使用卷積神經網絡進行語義分割存在的另一個大問題是池化層。池化層不僅擴大感受野、聚合語境從而造成了位置信息的丟失。但是,語義分割要求類別圖完全貼合,因此需要保留位置信息。本文將介紹兩種不同結構來解決該問題。

  第一個是編碼器-解碼器結構。編碼器逐漸減少池化層的空間維度,解碼器逐步修復物體的細節和空間維度。編碼器和解碼器之間通常存在快捷連接,因此能幫助解碼器更好地修複目標的細節。U-Net是這種方法中最常用的結構。

  

  U-Net:一種編碼器-解碼器結構

  第二種方法使用空洞/帶孔卷積(dilated/atrousconvolutions)結構,來去除池化層。

  

  Dilated/atrous卷積,rate=1是典型的卷積結構

  條件隨機場(CRF)預處理通常用於改善分割效果。CRF是一種基於底層圖像像素強度進行「平滑」分割的圖模型。它的工作原理是灰度相近的像素易被標註為同一類別。CRF可令分值提高1-2%。

  

  CRF示意圖。(b)一元分類器作為CRF的分割輸入。(c、d、e)是CRF的變體,其中(e)是廣泛使用的一種CRF

  下面,我將總結幾篇論文,介紹分割結構從FCN以來的發展變化。所有這些架構都使用VOC2012評估伺服器進行基準測試。

  論文概述

  下列論文按照時間順序進行介紹:

  1.FCN

  2.SegNet

  3.DilatedConvolutions

  4.DeepLab(v1&v2)

  5.RefineNet

  6.PSPNet

  7.LargeKernelMatters

  8.DeepLabv3

  我列出了每篇論文的主要貢獻,並稍加解釋。同時我還展示了這些論文在VOC2012測試數據集上的基準測試分數(IOU均值)。

  FCN

  使用全卷積網絡進行語義分割(FullyConvolutionalNetworksforSemanticSegmentation)

  2014年11月14日提交

  arXiv連結(https://arxiv.org/abs/1411.4038)

  主要貢獻:

  推廣端到端卷積網絡在語義分割領域的應用

  修改Imagenet預訓練網絡並應用於語義分割領域

  使用解卷積層進行上採樣

  使用跳躍連接,改善上採樣的粒度程度

  相關解釋:

  本論文的關鍵點是分類網絡中的全連接層可視為使用卷積核覆蓋整個輸入區域的卷積操作。這相當於根據重疊的輸入圖像塊評估原始分類網絡,但由於計算過程由圖像塊的重疊部分共同分擔,這種方法比之前更加高效。儘管該結論並非獨一無二,但它顯著提高了VOC2012數據集上模型的最佳效果。

  

  全連接層作為卷積操作

  將全連接層在VGG等Imagenet預訓練網絡中進行卷積操作後,由於CNN中的池化操作,特徵圖仍舊需要上採樣。解卷積層不使用簡單的雙線性插值,而是學習所進行的插值。解卷積層又被稱為上卷積(upconvolution)、完全卷積、轉置卷積或微步卷積(fractionally-stridedconvolution)。

  但是,由於池化過程造成信息丟失,上採樣(即使帶有解卷積層)生成的分割圖較為粗糙。因此我們可以從高解析度的特徵圖中引入跳躍連接(shortcut/skipconnection)來改善上採樣的粗糙程度。

  VOC2012基準測試分數:

  

  個人評價:

  這是一項重要的貢獻,但是當前的技術水平又有了很大發展。

  SegNet

  SegNet:用於圖像分割的一種深度卷積編碼器-解碼器架構(SegNet:ADeepConvolutionalEncoder-DecoderArchitectureforImageSegmentation)

  2015年11月2日提交

  Arxiv連結(https://arxiv.org/abs/1511.00561)

  主要貢獻:

  將最大池化索引(Maxpoolingindices)轉移到解碼器,從而改善分割解析度。

  相關解釋:

  在FCN網絡中,儘管使用了解卷積層和一些跳躍連接,但輸出的分割圖仍然比較粗糙。因此,更多的跳躍連接被引入FCN網絡。但是,SegNet沒有複製FCN中的編碼器特徵,而是複製了最大池化索引。這使得SegNet比FCN更節省內存。

  

  Segnet結構

  

  個人評價:

  FCN和SegNet都是最早出現的編碼器-解碼器結構。

  SegNet的基準測試分數不夠好,不宜繼續使用。

  空洞卷積(DilatedConvolutions)

  使用空洞卷積進行多尺度背景聚合(Multi-ScaleContextAggregationbyDilatedConvolutions)

  2015年11月23日提交

  Arxiv連結(https://arxiv.org/abs/1511.07122)

  主要貢獻:

  使用空洞卷積,一種可進行稠密預測的卷積層。

  提出「背景模塊」(contextmodule),該模塊可使用空洞卷積進行多尺度背景聚合。

  相關解釋:

  池化使感受野增大,因此對分類網絡有所幫助。但池化會造成解析度下降,不是語義分割的最佳方法。因此,論文作者使用空洞卷積層(dilatedconvolutionlayer),其工作原理如圖:

  

  空洞/帶孔卷積

  空洞卷積層(DeepLab將其稱為帶孔卷積)可使感受野呈指數級增長,而空間維度不至於下降。

  從預訓練好的分類網絡(此處指VGG)中移除最後兩個池化層,之後的卷積層都使用空洞卷積。尤其是,pool-3和pool-4之間的卷積是空洞卷積2,pool-4後面的卷積是空洞卷積4。使用這個模塊(論文中稱為前端模塊 frontendmodule)之後,無需增加參數即可實現稠密預測。另一個模塊(論文中稱為背景模塊 contextmodule)將使用前端模塊的輸出作為輸入進行單獨訓練。該模塊是多個不同擴張程度的空洞卷積級聯而成,因此該模塊可聚合多尺度背景,並改善前端模塊獲取的預測結果。

  

  個人評價:

  預測分割圖的大小是圖像大小的1/8。幾乎所有的方法都存在這個現象,通常使用插值的方法獲取最終分割圖。

  DeepLab(v1&v2)

  v1:使用深度卷積網絡和全連接CRF進行圖像語義分割(SemanticImageSegmentationwithDeepConvolutionalNetsandFullyConnectedCRFs)

  2014年12月22日提交

  Arxiv連結(https://arxiv.org/abs/1412.7062)

  v2 :DeepLab:使用深度卷積網絡、帶孔卷積和全連接CRF進行圖像語義分割(DeepLab:SemanticImageSegmentationwithDeepConvolutionalNets,AtrousConvolution,andFullyConnectedCRFs)

  2016年6月2日提交

  Arxiv連結(https://arxiv.org/abs/1606.00915)

  主要貢獻:

  使用帶孔/空洞卷積。

  提出金字塔型的空洞池化(ASPP)

  使用全連接CRF

  相關解釋:

  帶孔/空洞卷積在不增加參數的情況下增大感受野。如上文中空洞卷積論文中所述,分割網絡得到改進。

  將原始圖像的多個重新縮放版本傳遞到CNN網絡的並行分支(圖像金字塔)中,或者使用採樣率不同的多個並行空洞卷積層(ASPP),實現多尺度處理。

  結構化預測可通過全連接CRF實現。CRF的訓練/微調需作為後處理的步驟單獨進行。

  

  DeepLab2 流程圖

  

  RefineNet

  RefineNet:使用多路徑精煉網絡進行高解析度語義分割(RefineNet:Multi-PathRefinementNetworksforHigh-ResolutionSemanticSegmentation)

  2016年11月20日提交

  Arxiv連結(https://arxiv.org/abs/1611.06612)

  主要貢獻:

  具備精心設計解碼器模塊的編碼器-解碼器架構

  所有組件遵循殘差連接設計

  相關解釋:

  使用空洞/帶孔卷積的方法也有弊端。由於空洞卷積需要大量高解析度特徵圖,因此其計算成本高昂,且佔用大量內存。這妨礙了高解析度預測的計算。例如,DeepLab的預測結果大小是原始輸入圖像的1/8。

  因此,這篇論文提出使用編碼器-解碼器結構。編碼器是ResNet-101模塊,解碼器是RefineNet模塊,該模塊融合了編碼器中的高解析度特徵和先前RefineNet模塊中的低解析度特徵。

  

  RefineNet架構

  每一個RefineNet模塊都有兩個組件,一個組件通過對低解析度特徵進行上採樣來融合多解析度特徵,另一個組件基於步幅為1、5x5大小的重複池化層來獲取背景信息。這些組件遵循單位映射的思想,採用殘差連接設計。

  

  RefineNet模塊

  

  PSPNet

  金字塔型場景解析網絡

  2016年12月4日提交

  Arxiv連結(https://arxiv.org/abs/1612.01105)

  主要貢獻:

  提出金字塔池化模塊幫助實現背景聚合。

  使用輔助損失(auxiliaryloss)。

  相關解釋:

  全局場景分類為分割的類別分布提供線索,因此很重要。金字塔池化模塊(Pyramidpoolingmodule)通過應用較大核池化層的獲取這些信息。如上文中空洞卷積論文中所述,PSPNet也使用空洞卷積改善ResNet,並添加一個金字塔池化模塊。該模塊將ResNet的特徵圖與並行池化層的上採樣輸出結果連接起來,其中卷積核核覆蓋了圖像的全部、一半和小塊區域。

  在ResNet的第四階段之後(即輸入到金字塔池化模塊),在主分支損失之外又增加了附加損失。這個想法在其他研究中也被稱為中間監督(intermediatesupervision)。

  

  PSPNet架構

  

  LargeKernelMatters

  大型核的問題——通過全局卷積網絡改善語義分割(LargeKernelMatters--ImproveSemanticSegmentationbyGlobalConvolutionalNetwork)

  2017年3月8日提交

  Arxiv連結(https://arxiv.org/abs/1703.02719)

  主要貢獻:

  提出使用帶有大型卷積核的編碼器-解碼器結構

  相關解釋:

  語義分割不僅需要分割,同時還需要對分割目標進行分類。由於分割結構中無法使用全連接層,因此帶有大核函數的卷積可以替代全連接層得到應用。

  使用大型核的另一個原因是,儘管ResNet等更深層的網絡擁有較大的感受野,但相關研究顯示這樣的網絡更易收集較小範圍(即有效感受野)內的信息。大型核的計算成本高昂,且擁有大量參數。因此,kxk卷積可近似成1xk+kx1、kx1和1xk。這篇論文中將該模塊稱為全局卷積網絡(GCN)。

  再來看結構,ResNet(沒有空洞卷積)構成該結構的編碼器部分,而GCN和反卷積構成了解碼器部分。該結構還採用了一個叫做邊界細化(BR)的簡單殘差塊。

  

  GCN結構

  VOC2012測試分數:

  

  DeepLabv3

  重新思考使用空洞卷積進行圖像語義分割(RethinkingAtrousConvolutionforSemanticImageSegmentation)

  2017年6月17日提交

  Arxiv連結(https://arxiv.org/abs/1706.05587)

  主要貢獻:

  改進了金字塔型的空洞池化(ASPP)

  模型級聯了多個空洞卷積

  相關解釋:

  與DeepLabv2和空洞卷積論文一樣,該研究也使用空洞/擴張卷積來改進ResNet模型。改進後的ASPP包括圖像層級特徵連接、一個1x1的卷積和三個3x3的不同比率空洞卷積。每一個並行卷積層之後使用批量歸一化操作。

  級聯模型是一個ResNet模塊,但其中的卷積層是不同比率的空洞卷積。該模型與空洞卷積論文中的背景模塊相似,但是它直接應用於中間特徵圖,而不是可信度地圖(信念圖是通道數與類別數相同的最終CNN特徵圖)。

  該論文分別評估了這兩個已提出的模型。兩個模型在驗證集上的性能相似,帶有ASPP的模型性能稍好,且未使用CRF。這兩個模型優於DeepLabv2中最優的模型。論文作者還提到性能的改進來自於批量歸一化操作和更好的多尺度背景編碼方式。

  

  DeepLabv3ASPP

  

  原文地址:http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review

相關焦點

  • 重新發現語義分割,一文簡述全卷積網絡
    全卷積網絡自 2012 年出現以來,在圖像分類和圖像檢測領域取得了巨大成功。本文利用筆記本電腦構建了一個小型全卷積網絡,詳細介紹了全卷積網絡的思路、過程等等,值得一看語義分割是一種學習如何識別圖像中對象範圍的機器學習技術。語義分割賦予機器學習系統與人類相似的理解圖像內容的能力。
  • 2019 語義分割指南
    用於語義圖像分割的深度神經網絡弱和半監督學習(ICCV,2015)這篇文章提出了一種解決方法,用於面對深度卷積網絡中處理弱標記數據的難題、以及處理良好標記與未適當標記數據結合。本文應用了一個深度CNNs與全連接條件隨機場的組合。
  • DeepLabv1 & DeepLabv2 - 空洞卷積(語義分割)
    首先,輸入圖像通過網絡中的atrous卷積和ASPP。然後,網絡的輸出圖進行雙線性插值bilinearly interpolated,並通過完全連接的CRF來微調結果並獲得最終輸出。 DeepLabv1和DeepLabv2已經在2015 ICLR和2018 TPAMI上發布,在我寫這篇故事的時候分別引用了400和2000。
  • 語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab
    原標題:語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab 王小新 編譯自 Qure.ai Blog 量子位 出品 | 公眾號 QbitAI 圖像語義分割就是機器自動從圖像中分割出對象區域,並識別其中的內容
  • 谷歌開源語義圖像分割模型:該領域當前最優模型
    自三年前谷歌發布第一個版本的 DeepLab 模型 [4] 以來,CNN 特徵提取器、目標尺度建模技術、語境信息處理、模型訓練流程、深度學習硬體和軟體的不斷改進和優化,促使該模型升級到了 DeepLab-v2 [5] 和 DeepLab-v3 [6]。谷歌通過添加一個簡單而有效的解碼器模塊以精煉分割結果(尤其是在目標邊界處),將 DeepLab-v3 擴展為 DeepLab-v3+。
  • 深度| 理解深度學習中的卷積
    有太多的公開課、教程在反覆傳頌卷積神經網絡的好,卻都沒有講什麼是「卷積」,似乎默認所有讀者都有相關基礎。這篇外文既友好又深入,所以翻譯了過來。文章高級部分通過流體力學量子力學等解釋卷積的做法在我看來有點激進,這些領域恐怕比卷積更深奧,所以只需簡略看看即可。以下是正文:卷積現在可能是深度學習中最重要的概念。正是靠著卷積和卷積神經網絡,深度學習才超越了幾乎其他所有的機器學習手段。
  • 深度學習之卷積神經網絡經典模型
    隨著ReLU與dropout的提出,以及GPU帶來算力突破和網際網路時代大數據的爆發,卷積神經網絡帶來歷史的突破,AlexNet的提出讓深度學習走上人工智慧的最前端。如今在計算機視覺領域,卷積神經網絡的良好效果深得廣大開發者的喜歡,並且上文提到的AlexNet模型擁有更好的效果,所以廣大從業者學習者試圖將其改進以獲得更好地效果。而後來很多人經過驗證認為,AlexNet模型中所謂的局部歸一化響應浪費了計算資源,但是對性能卻沒有很大的提升。VGG的實質是AlexNet結構的增強版,它側重強調卷積神經網絡設計中的深度。
  • 一種基於深度卷積神經網絡(DCNN)用于于頭髮和面部皮膚實時分割方法
    為了解決這個問題,作者提出了一種基於深度卷積神經網絡(DCNN)的高效分割方法,用於頭髮和面部皮膚分割任務,該方法在三個基準數據集上實現了速度和性能之間的顯著權衡。據我們所知,由於外界環境因素(例如照明和背景噪聲)的影響,膚色分類的準確性通常不令人滿意。因此,使用分割後的人臉來獲得特定的人臉區域,並進一步利用色矩算法提取其色彩特徵。
  • 圖像分割系列<->語義分割
    精選文章,第一時間送達 上期講到圖像分割(Image segmentation)根據某些規則把圖片中的像素分為不同的部分(加不同的標籤),它可分為:超像素、語義分割、實例分割、全景分割, 各有聯繫,又有區別。
  • 萬字長文帶你看盡深度學習中的各種卷積網絡(上篇)
    雷鋒網 AI 科技評論按:深度學習中的各種卷積網絡大家知多少?對於那些聽說過卻又對它們沒有特別清晰的認識的小夥伴們,Kunlun Bai 這篇文章非常值得一讀。Kunlun Bai 是一位人工智慧、機器學習、物體學以及工程學領域的研究型科學家,在本文中,他詳細地介紹了 2D、3D、1x1 、轉置 、空洞(擴張)、空間可分離、深度可分離、扁平化、 分組等十多種卷積網絡類型。
  • 9102年了,語義分割的入坑指南和最新進展都是什麼樣的
    在這篇文章中,作者介紹了近來優秀的語義分割思想與解決方案,它可以稱得上是 2019 語義分割指南了。我們可以認為語義分割是像素級別的圖像分類。例如,在一幅有很多輛車的圖像中,分割模型將會把所有的物體(車)標記為車輛。但是,另一種被稱為實例分割的模型能夠將出現在圖像中的獨立物體標記為獨立的實例。這種分割在被用在統計物體數量的應用中是很有用的(例如,統計商城中的客流量)。
  • 基於完全卷積神經網絡的多模態嬰兒腦圖分割技術
    為了解決這一難題,在本文中,我們提出使用全連接卷積網絡(FCNs)來分割等強度相位的腦磁振造影圖像。我們不是簡單地將三種模式疊加在一起,而是針對每幅圖像訓練一個網絡,然後將它們的高層特徵融合在一起進行最終的分割。具體來說。我們分別對 T1、T2 和 FA 圖像的多模態信息進行卷積池流,然後在高層結合,最終生成分割圖作為輸出。通過與現有的方法進行對比表明,我們提出的模型在精度上明顯優於以往的方法。
  • 深度卷積神經網絡演化歷史及結構改進脈絡-40頁長文全面解讀
    該網絡的特點為: 1.延續NAS論文的核心機制,通過強化學習自動產生網絡結構。 2.採用ResNet和Inception等成熟的網絡拓撲結構減少了網絡結構優化的搜索空間,大型網絡直接由大量的同構模塊堆疊而成,提高學習效率。
  • 語義分割領域開山之作:Google提出用神經網絡搜索實現語義分割
    在過去的一年中,元學習(meta-learning)在大規模圖像分類問題上,性能已經實現超越人類手工設計的神經網架構。基於 NAS 的圖像分類遷移到高解析度的圖像處理(語義分割、目標識別、實例分割)有很大的挑戰:(1)神經網絡的搜索空間和基本運算單元有本質不同。(2)架構搜索必須固有地在高解析度圖像上運行,因此不能實現從低解析度圖像訓練模型遷移到高解析度圖像。
  • 形象理解深度學習中八大類型卷積
    本文總結了深度學習中常用的八大類型的卷積,以非常形象的方式幫助你建立直覺理解,為你的深度學習提供有益的參考。分別是單通道卷積、多通道卷積、3D卷積、1 x 1卷積、轉置卷積、擴張卷積、可分離卷積、分組卷積。
  • 從基本組件到結構創新,67頁論文解讀深度卷積神經網絡架構
    卷積核的輸出被分配給非線性處理單元,這不僅有助於學習抽象表示,而且還將非線性嵌入到特徵空間中。這種非線性為不同的響應生成了不同的激活模式,因此有助於學習圖像中的語義差異。非線性函數的輸出通常經過下採樣,這有助於總結結果,並使輸入對於幾何變形不變[12],[13]。
  • CVPR2017精彩論文解讀:結合序列學習和交叉形態卷積的3D生物醫學...
    現在大多數的3D醫學圖像分割方法都只用了一個形態或把多個形態堆起來變成不同的通道,該工作中提出了一個包含交叉形態卷積層(cross-modality convolution layer)的深度編碼-解碼的網絡結構(deep encoder-decoder structure)來合併核磁共振的不同形態,還利用卷積LSTM來對2D切片序列建模,並且把多形態卷積和LSTM網絡結合在一起,做到端到端的學習。
  • 100個深度圖像分割算法,紐約大學UCLA等最新綜述論文
    在本次綜述中,我們全面回顧了撰寫本文時的論文,涵蓋了語義級和實例級分割的廣泛先驅工作,包括全卷積像素標記網絡、編碼器-解碼器架構、基於多尺度和金字塔的方法、遞歸網絡、視覺注意力模型和在對抗環境下的生成模型。我們調研了這些深度學習模型的相似性、優勢和挑戰,研究了最廣泛使用的數據集,報告了性能,並討論了該領域未來的研究方向。
  • 入門| 一文了解什麼是語義分割及常用的語義分割方法有哪些
    因此,本文討論的主題是使用深度學習方法進行有監督的語義分割。他們將推理逼近算法的步驟重整為卷積,並使用循環神經網絡(RNN)對具有完全迭代性質的推理算法進行建模。來自 FCN-8s、DeepLab 和 CRF-RNN 的兩個示例圖及其分割結果。注意 CRF-RNN,它在端到端的模型中優化了 CRF,因而產生了更少的斑點,圖像也更準確。
  • 膨脹卷積學習筆記
    膨脹卷積 (Dilated Convolution,也稱為空洞卷積),與標準的卷積核不同,膨脹卷積在 kernel 中增加了一些空洞,從而可以擴大模型的感受野。2.為什麼需要膨脹卷積用 CNN 進行圖像處理時,通常需要經過多次卷積和 pooling 操作增大模型的感受野。pooling 可以減少圖像的尺寸,再使用卷積核可以增大感受野;多個卷積核堆疊也可以增大感受野。經過卷積和 pooling 的 feature map 會比較小,這時可以傳到全連接網絡進行分類。