圖像語義分割之特徵整合和結構預測

2020-12-06 機器之心Pro

餘昌黔華中科技大學碩士研究方向為圖像語義分割知乎專欄https://zhuanlan.zhihu.com/semantic-segmentation前言

近來閱讀了 PASCAL VOC 2012 排行榜上前幾的文章,包括 PSPNet 和林國省老師的幾篇論文,覺得現在在 semantic segmentation 領域對於 Multi-scale Features ensembling 的關注又多起來了(當然其實一直都應用的挺多),然後林國省老師對 CRF 有一些新的認識和解讀。這些都將總結於此。

兩個發展方向

特徵整合(Feature Ensembling)

又分為:多尺度(multi-scale) 特徵整合多級(multi-level)特徵整合結構預測(Structure Prediction)

比如之前經常使用的條件隨機場

特徵整合

多尺度整合

PSPNet

這個方法在前一段時間是 PASCAL VOC 2012 排行榜上的第一,現在的第二。

語義分割中常見問題

關係不匹配(Mismatched Relationship)

場景中存在著可視模式的共現。比如,飛機更可能在天上或者在跑道上,而不是公路上。

易混淆的類別(Confusion Categories)

許多類別具有高度相似的外表。

不顯眼的類別(Inconspicuous Classes)

場景中包括任意尺寸的物體,小尺寸的物體難以被識別但是有時候對於場景理解很重要。

Note:這些大多數錯誤都部分或者完全和上下文關係以及全局信息有關係,而 PSPNet 就是為了整合不同區域的 context 來獲取全局的 context 信息。

網絡結構

其中的一些tricks:

圖片輸入的 CNN 是 ResNet,使用了 dilated convolution

Pyramid Pooling Module 中的 conv 是1×1的卷積層,為了減小維度和維持全局特徵的權重

Pyramid Pooling Module 中的 pooling 的數量以及尺寸都是可以調節的

上採樣使用的雙線性插值

poly learning rate policy

數據擴增用了:random mirror, random resize(0.5-2), random rotation(-10 到 10 度), random Gaussian blur

選取合適的 batchsize

結構還是很清晰明確的,沒太多可說的。

此外,文中還提到了為了訓練使用了一個輔助的 loss,並不在我們討論內容之內,僅展示一下示意圖:

PSPNet 在 PASCAL VOC 2012 上測試的結果如下:

FeatMap-Net

這是林國省老師兩篇論文中提到的網絡結構的前面一部分,我把它抽取出來在此討論特徵整合,這部分網絡結構利用多尺度 CNN和sliding pyramid pooling來獲取 patch-background 的上下文信息。

網絡結構

其中:

圖片進來先進行 0.4, 0.8, 1.2 的放縮

前 1-5 conv block 是共享參數的

向上採樣還是我們熟悉的雙線性插值

Sliding Pyramid Pooling

其中使用的是滑動的 pooling,即 stride 為 1,所以不降低 feature map 的尺寸。不同尺寸的窗口有利於獲得不同大小的背景信息,而且增加了 field-of-view,這樣 feature vector 能編碼更大範圍的信息(feature vector 會在之後的結構中使用,下文會介紹到)。

多級整合

RefineNet

這個方法在前一段時間是 PASCAL VOC 2012 排行榜上的第三,現在的第四。本方法主要想解決的限制是:多階段的卷積池化會降低最後預測結果圖片的尺寸,從而損失很多精細結構信息。

現有方法的解決辦法:

反卷積作為上採樣的操作

反卷積不能恢復低層的特徵,畢竟已經丟失了

Atrous Convolution(Deeplab提出的)

帶孔卷積的提出就是為了生成高解析度的 feature map,但是計算代價和存儲代價較高

利用中間層的特徵

最早的 FCN-8S 就是這樣做的,但是始終還是缺少強的空間信息

以上所說方法在我之前的文章中都有提到,感興趣的同學可以猛戳以下連結,這裡就不贅述了。

圖像語義分割之FCN和CRF: https://zhuanlan.zhihu.com/p/22308032?group_id=820586814145458176

作者主張所有層的特徵都是有用的,高層特徵有助於類別識別,低層特徵有助於生成精細的邊界。所以有了接下來的網絡結構,說實話我是覺得有點複雜。

網絡結構

可以看見,整個結構其實是類似於 FCN-8S 的結構的,只是抽出特徵更早,而且經過了 RefineNet 進行處理。

整個流程就是,1/32 的 feature map 輸入 RefineNet 處理後和 1/16 的 feature map 再一起又輸入一個 RefineNet 優化,後面的過程類似。

RefineNet

可以看出,每個 RefineNet 的輸入是可以調整的,所以整個網絡的連接也是可以修改的,當然作者做實驗說明在他提出的其他變體中這種連接的效果最好。

Residual Convolution Unit (RCU)

Multi-resolution Fusion

這裡將輸入的不同解析度的 feature map 上採樣到和最大 feature map 等尺寸然後疊加,此處的 conv 用於輸入的參數自適應。

Chained Residual Pooling

文中提到:

conv 作為之後加和的權重

relu 對接下來 pooling 的有效性很重要,而且使得模型對學習率的變化沒這麼敏感

這個鏈式結構能從大範圍區域上獲取背景 context

此處不得不提到,這個結構中大量使用了identity mapping這樣的連接,無論長距離或者短距離的,這樣的結構允許梯度從一個 block 直接向其他任一 block 傳播。

現在回過頭來看看 RefineNet 整個網絡結構還是有些複雜的,但是確實還是有一些效果,這種直接將低層特徵抽取來優化高層特徵的措施可以想像能對結果進行一些優化。但是始終還是覺得這樣的處理有點太複雜了。

接下來看一下 RefineNet 在 PASCAL VOC 2012 上測試的結果:

結構預測 (CRF)

其實在語義分割這個領域很早就開始使用 CRF 或者 MRF 等對語義信息進行建模,在深度學習火起來之前就有不少這樣的方法了。所以後來大家很自然地想到了深度學習和條件隨機場的結合。但是,林國省老師指出現在利用條件隨機場的方法都不太「地道」。

現有方法:

dense CRF 作為 FCN 輸出的後處理,並沒有真正地結合進 CNN

CRFasRNN 中將二者真正結合了,但是只有其中一元勢函數的輸入來自 CNN,二元勢函數的輸入來自於一元以及迭代,而且這裡的二元勢函數被強制考慮為局部平滑度

以上所說方法在我之前的文章中都有提到,感興趣的同學可以猛戳以下連結,這裡就不贅述了。

圖像語義分割之FCN和CRF: https://zhuanlan.zhihu.com/p/22308032?group_id=820586814145458176

Contextual CRF

此處提到的結構是和前文所述 FeatMap-Net 為統一網絡結構

整體結構

此處我們主要討論 FeatMap-Net 之後的 CRF 的處理。林老師提出的這個方法對一元勢函數和二元勢函數都用 CNN 來直接進行處理,而且二元勢函數是直接對空間語義建模更精確。

feature map 中的每個空間位置(即每個像素點)對應 CRF 圖中的一個節點

Pairwise connection 就是通過每個節點與預定義的 spatial range box 中其他節點連接來體現的

不同的空間關係通過定義不同類型的 range box 來實現的,每種空間關係通過特定的 pairwise potential function 來建模

不同空間關係:

Surrounding 這樣的關係就在對應節點的周圍畫框,Above/Below 這樣的關係就讓節點在一條邊的中間然後在其上方或者下方畫框,此處的框是原圖最短邊的 0.4.

此處我們回顧一下 CRF 的公式:

其中,Ψω是不同類型一元勢函數的集合,Ω是一元勢函數對應的節點集合;θ是不同類型二元勢函數的集合,Φ是二元勢函數對應的邊的集合

Unary Potential Functions

這裡,Zp,yp 對應與第 P 個節點和第 Yp個類別

一元勢函數對應的處理就是從 Feature map 上的一個節點提取出 feature vector,然後連接幾層全連接層,輸出K個值,這個K就是需要預測的類別數。

Pairwise Potential Functions

我覺得這裡對二元勢函數的處理很巧妙,將兩個節點對應的 feature vector 提取出來然後連接到一起來學習兩個節點之間的邊,很棒!之後自然也是連接幾層全連接層輸出的是k個值,為了將所有類別之間的配對關係都考慮進去,但是這裡產生的值應該有很多冗餘。

Asymmetric Pairwise Functions

對於不對稱的關係比如 Above\Below 就需要這樣的不對稱二元勢函數進行學習,而這種勢函數主要依賴於兩個節點輸入的順序,這個可以通過兩個 feature vector 連接的順序來體現,所以我說這樣的處理很巧妙啊。

至此,這種對 CRF 的解讀講完了~但是這篇文章中的有一些內容還不得不提一下:

這些 CRF 是用於 coarse prediciton stage 的,為了提升低解析度的預測;文中提到在最後的輸出的時候還是使用來的 dense crf 進行細化輸出的(這就比較尷尬了,最開始還說人家不好,現在還是要使用……)

文中提到Piecewise Learning作為新的一種對 CRF 的訓練方法,這裡就沒有闡述了,感興趣的同學可以看看原文。

參考文獻

1. Zhao H, Shi J, Qi X, et al.Pyramid Scene Parsing Network[J]. 2016.

2. Lin G, Shen C, Hengel A V D, et al.Efficient Piecewise Training of Deep Structured Models for Semantic Segmentation[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2016:3194-3203.

3. Lin G, Shen C, Hengel A V D, et al.Exploring Context with Deep Structured models for Semantic Segmentation[J]. 2016.

4. Lin G, Milan A, Shen C, et al.RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation[J]. 2016.

相關焦點

  • 圖像分割系列<->語義分割
    這期我們就來講講語義分割(Semantic Segmantation), 語義分割是指將圖像中的每一個像素都賦予一個類別標籤,用不同的顏色表示。 二、語義分割SegNet的來源 Segnet模型由Vijat Badrinarayanan, Alex Kendall, Roberto Cipolla在2015年發表, 在FCN的語義分割任務基礎上,搭建編碼器-解碼器對稱結構,實現端到端的像素級別圖像分割。
  • CVPR 2018:新型語義分割模型:動態結構化語義傳播網絡DSSPN
    例如,長頸鹿、斑馬和馬同屬於有蹄類動物,這個大類描繪了它們的共同視覺特徵,使得它們很容易與貓/狗區分開來。此外,由於專業水平和應用目的不同,語義分割的目標概念集本質上可以開放化和高度結構化,以適應特定的任務/數據集。然而,一些技術還通過在最終預測分數上採用複雜圖形推斷 [7]、層級損失 [31] 或詞嵌入先驗 [39] 來探索視覺識別的語義層次。
  • 2019 語義分割指南
    Convolution for Semantic Image Segmentation(語義分割中的空洞卷積的再思考)Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation( 空間金字塔池化模塊和編碼-解碼結構用於語義分割的深度網絡結構.)
  • 語義分割領域開山之作:Google提出用神經網絡搜索實現語義分割
    Google 儼然已是圖像語義分割領域的高產霸主,Liang-Chieh 從 Deeplabv1- Deeplabv3+ 持續發力,還是 MobileNetV2 共同作者,如今在 NAS 領域開發處女地:基於 NAS 的語義分割模型,性能超過之前的基於 MobileNetV2 的 Network Backbone。2.
  • 入門| 一文了解什麼是語義分割及常用的語義分割方法有哪些
    什麼是語義分割?語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。例如,我們可能需要區分圖像中屬於汽車的所有像素,並把這些像素塗成藍色。
  • 9102年了,語義分割的入坑指南和最新進展都是什麼樣的
    選自Medium作者:Derrick Mwiti機器之心編譯參與:Nurhachu Null,Geek AI語義分割指的是將圖像中的每一個像素關聯到一個類別標籤上的過程,這些標籤可能包括一個人、一輛車、一朵花、一件家具等等。
  • 「計算機視覺必讀乾貨」圖像分類、檢測,語義分割等方法梳理
    新智元專欄 作者:張皓【新智元導讀】本文作者來自南京大學計算機系機器學習與數據挖掘所(LAMDA),本文直觀系統地梳理了深度學習在計算機視覺領域四大基本任務中的應用,包括圖像分類、定位、檢測、語義分割和實例分割。
  • CVPR 2019 Oral 論文解讀 | 無監督域適應語義分割
    然而虛擬圖像和現實圖像間存在嚴重的視覺差異(域偏移),如紋理、光照、視角差異等等,這些差異導致在虛擬圖像上訓練出的深度模型往往在真實圖像數據集上的分割精度很低。當兩個分類器給出的預測很一致時,我們認為該特徵已經能被很好的分類,語義一致性較高,所以應減少全局對齊策略對這些特徵產生的負面影響。反之,當兩個分類器給出的預測不一致,說明該目標域特徵還未被很好地分類,依然需要用對抗損失進行與源域特徵的對齊。所以應加大對齊力度,使其儘快和源域特徵對應。
  • 深度| 2017 CV 技術報告之圖像分割、超解析度和動作識別
    該材料共包括四大部分,在本文中機器之心對第二部分做了編譯介紹,第一部分和第四部分詳見《計算機視覺這一年:這是最全的一份 CV 技術報告》和《計算機視覺這一年:2017 CV 技術報告 Plus 之卷積架構、數據集與新趨勢》。圖像分割計算機視覺任務的核心是分割(Segmentation)處理,它將整幅圖片分割成可被標記和分類的像素組。
  • 谷歌開源語義圖像分割模型:該領域當前最優模型
    剛剛,谷歌開源了語義圖像分割模型 DeepLab-v3+,DeepLab-v3+結合了空間金字塔池化模塊和編碼器-解碼器結構的優勢,是自三年前的 DeepLab 以來的最新、性能最優的版本。GitHub 地址:https://github.com/tensorflow/models/tree/master/research/deeplab語義圖像分割任務是指將語義標籤(例如「道路」、「天空」、「人」、「狗」)分配給圖像中的每一個像素,這種技術有很多新應用,例如,Pixel 2 和 Pixel 2 XL 智慧型手機中肖像模式的合成淺景深效應,以及行動裝置的實時語義分割等
  • 從全卷積網絡到大型卷積核:深度學習的語義分割全指南
    什麼是語義分割?  語義分割指像素級地識別圖像,即標註出圖像中每個像素所屬的對象類別。如下圖:    左:輸入圖像,右:該圖像的語義分割  除了識別車和騎車的人,我們還需要描繪出每個物體的邊界。因此,與圖像分類不同,語義分割需要根據模型進行密集的像素級分類。
  • 金字塔注意力網絡:一種利用底層像素與高級特徵的語義分割網絡
    選自arXiv機器之心編譯參與:機器之心編輯部目前很多語義分割方法在細節方面做得都不好,近日北京理工、曠視科技、北京大學機器感知重點實驗室的研究者提出金字塔形注意力網絡,它結合注意力機制和空間金字塔去提取精準的密集特徵而用於像素級標註任務,這種方法不再使用複雜化的擴張卷積和人工設計的解碼網絡。
  • DeepLabv3+:語義分割領域的新高峰
    DeepLabv1DeepLab 是結合了深度卷積神經網絡(DCNNs)和概率圖模型(DenseCRFs)的方法。在實驗中發現 DCNNs 做語義分割時精準度不夠的問題,根本原因是 DCNNs 的高級特徵的平移不變性,即高層次特徵映射,根源於重複的池化和下採樣。
  • 語義分割概念及應用介紹
    比如自動駕駛汽車已經逐漸成為可能,但在整個深度學習過程,需要算法識別和學習作為原始數據提供的圖像,在這一過程中,應用到了語義分割技術。下面讓我們來看看語義分割的需求是如何演變的。早期,計算機視覺的初始應用需求只是識別基本元素,例如邊緣(線和曲線)或漸變。然而,僅僅通過全像素語義分割的創造來理解像素級的圖像,它將屬於同一目標的圖像部分聚集在一起,從而擴展了語義分割的應用場景。
  • 語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab
    原標題:語義分割中的深度學習方法全解:從FCN、SegNet到各版本DeepLab 王小新 編譯自 Qure.ai Blog 量子位 出品 | 公眾號 QbitAI 圖像語義分割就是機器自動從圖像中分割出對象區域,並識別其中的內容
  • 重新發現語義分割,一文簡述全卷積網絡
    選自Medium,作者:Farhan Ahmad,機器之心編譯,參與:李詩萌、路。全卷積網絡自 2012 年出現以來,在圖像分類和圖像檢測領域取得了巨大成功。本文利用筆記本電腦構建了一個小型全卷積網絡,詳細介紹了全卷積網絡的思路、過程等等,值得一看語義分割是一種學習如何識別圖像中對象範圍的機器學習技術。語義分割賦予機器學習系統與人類相似的理解圖像內容的能力。它促使機器學習算法定位對象的精準邊界,無論是街景圖像中的汽車和行人,還是醫療圖像中的心臟、肝臟和腎臟。
  • 2020入坑圖像分割,我該從哪兒入手?
    初識圖像分割顧名思義,圖像分割就是指將圖像分割成多個部分。在這個過程中,圖像的每個像素點都和目標的種類相關聯。圖像分割方法主要可分為兩種類型:語義分割和實例分割。語義分割會使用相同的類標籤標註同一類目標(下圖左),而在實例分割中,相似的目標也會使用不同標籤進行標註(下圖右)。
  • 學界| 雙重注意力網絡:中科院自動化所提出新的自然場景圖像分割...
    場景分割是語義分割領域中重要且具有挑戰的方向。為了有效完成場景分割任務,需要區分一些容易混淆的類別,並考慮不同外觀的物體。本文提出了一個新的自然場景圖像分割框架,稱為雙重注意力網絡(DANet),引入了一種自注意力機制來分別捕捉空間維度和通道維度上的視覺特徵關聯。
  • 100個深度圖像分割算法,紐約大學UCLA等最新綜述論文
    圖像分割可以表示為帶有語義標籤的像素分類問題(語義分割)或單個對象的分割問題(實例分割)。語義分割是對所有圖像像素進行一組對象類別(如人、車、樹、天空)的像素級標記,因此通常比圖像分類更難,因為後者預測整個圖像的單個標籤。實例分割進一步擴展了語義分割的範圍,通過檢測和描繪圖像中每個感興趣的對象(例如,對個人的分割)。
  • 光學精密工程 | 實例特徵深度鏈式學習全景分割網絡
    在利用Mask RCNN和語義分割融合處理方面,UPSNet(Unified Panoptic Segmentation Network)提出一種全景融合機制來合併兩結構分割結果,通過對分割結果進行拆分等處理生成一個待定區來避免錯誤的分類預測。