深度學習中圖像分割經典算法和必備知識點整理

點擊下方AI算法與圖像處理”,一起進步!

重磅乾貨,第一時間送達



1


前言

很多關注的朋友一直會問“計算機視覺研究院“有基礎性的內容嗎?”,今天我和大家說一次,我們平臺之前有推送很多基礎的知識,有興趣的或者是剛剛接觸CV&DL的你,可以去歷史消息閱讀,在這也感謝所有一直關注和支持我們的小夥伴!接下來就和大家說說目標分割的事吧~

分割其實在很多領域是非常重要的研究對象,現在也有很多研究者在該領域大展身手,比如何大神,一直在該方面的做的最優秀之一,今天就基於他CVPR 2018的一篇優秀Paper說起。


2


概述

大多數目標實例分割的方法都要求所有的訓練樣本帶有segmentation masks。這種要求就使得註釋新類別的開銷很大,並且將實例分段模型限制爲∼100註釋良好的類。

本次技術目的是提出一種新的部分監督的訓練模式,該模式具有一種新的權重傳遞函數,結合一種新的權重傳遞函數,可以在一大組類別上進行訓練實例分割模型,所有這些類別都有框註釋,但只有一小部分有mask註釋。這些設計允許我們訓練MASK R-CNN,使用VisualGenome數據集的框註釋和COCO數據集中80個類的mask註釋來檢測和分割3000種視覺概念。

最終,在COCO數據集的對照研究中評估了提出的方法。這項工作是邁向對視覺世界有廣泛理解的實例分割模型的第一步。

在正式細說本次分割技術之前,還是簡單說下分割的事,有一個簡單的引言和大家分享下,沒有興趣的您可以直接跳過,閱讀關鍵技術部分,謝謝!

目標檢測器已經變得更加精確,並獲得了重要的新功能。最令人興奮的是能夠預測每個檢測到的目標前景分割mask,這是一個稱爲instance segmentation的任務。在實踐中,典型的instance segmentation系統僅限於僅包含大約100個目標類別的廣闊視覺世界的一小部分。

  • 會有很多人問:什麼是語義分割?

語義分割其實就是對圖片的每個像素都做分類。其中,較爲重要的語義分割數據集有:VOC2012 以及 MSCOCO 。
  • 比較流行經典的幾種方法

傳統機器學習方法:如像素級的決策樹分類,參考 TextonForest 以及 Random Forest based classifiers 。再有就是深度學習方法。
深度學習 最初流行的分割方法是,打補丁式的分類方法 (patch classification) 。逐像素地抽取周圍像素對中心像素進行分類。由於當時的卷積網絡末端都使用全連接層 (full connected layers) ,所以只能使用這種逐像素的分割方法。
但是到了2014年,來自伯克利的 Fully Convolutional Networks(FCN) 【點擊藍色,有鏈接直接可以閱讀全卷積網絡相關資料】 卷積網絡,去掉了末端的全連接層。隨後的語義分割模型基本上都採用了這種結構。除了全連接層,語義分割另一個重要的問題是池化層。池化層能進一步提取抽象特徵增加感受域,但是丟棄了像素的位置信息。但是語義分割需要類別標籤和原圖像對齊,因此需要從新引入像素的位置信息。有兩種不同的架構可以解決此像素定位問題。
  • 第一種是編碼-譯碼架構。編碼過程通過池化層逐漸減少位置信息、抽取抽象特徵;譯碼過程逐漸恢復位置信息。一般譯碼與編碼間有直接的連接。該類架構中U-net 是最流行的。

  • 第二種是膨脹卷積 (dilated convolutions) 【這個核心技術值得去閱讀學習】,拋棄了池化層。使用的卷積核如下圖所示:

居然都說到這裏,那我繼續來簡單說一些相關的文獻吧。

按時間順序總結,大概我能總結9篇paper,看語義分割的結構是如何演變的。分別有 FCN  、 SegNet  U-Net Dilated Convolutions  、 DeepLab (v1 & v2)  、 RefineNet  PSPNet  、 Large Kernel Matters  、 DeepLab v3  。

參考文章:(“計算機視覺戰隊”微信公衆平臺推送)

1)FCN 2014年

主要的貢獻:

  • 爲語義分割引入了 端到端 的卷積網絡,並流行開來

  • 重新利用 ImageNet 的預訓練網絡用於語義分割

  • 使用 反捲積層 進行上採樣

  • 引入跳躍連接來改善上採樣粗糙的像素定位

比較重要的發現是,分類網絡中的全連接層可以看作對輸入的全域卷積操作,這種轉換能使計算更爲高效,並且能重新利用ImageNet的預訓練網絡。經過多層卷積及池化操作後,需要進行上採樣,FCN使用反捲積(可學習)取代簡單的線性插值算法進行上採樣。

2)SegNet 2015年

編碼-譯碼架構

主要貢獻:將池化層結果應用到譯碼過程。引入了更多的編碼信息。使用的是pooling indices而不是直接複製特徵,只是將編碼過程中 pool 的位置記下來,在 uppooling 是使用該信息進行 pooling 。

3)U-Net 2015 

U-Net有更規整的網絡結構,通過將編碼器的每層結果拼接到譯碼器中得到更好的結果。

4)Dilated Convolutions 2015年

通過膨脹卷積操作聚合多尺度的信息

主要貢獻:

  • 使用膨脹卷積

  • 提出 ’context module‘ ,用來聚合多尺度的信息

池化在分類網絡中能夠擴大感知域,同樣降低了分辨率,所以提出了膨脹卷積層。

5)DeepLab (v1 & v2) 2014 & 2016

“計算機視覺戰隊”微信公衆平臺推送過,可以查閱:

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

DeepLab v2及調試過程

Deeplab v2 安裝及調試全過程

6)RefineNet 2016年

主要貢獻:

  • 精心設計的譯碼模塊

  • 所有模塊遵循殘餘連接設計

膨脹卷積有幾個缺點,如計算量大、需要大量內存。這篇文章採用編碼-譯碼架構。編碼部分是ResNet-101模塊。譯碼採用RefineNet模塊,該模塊融合了編碼模塊的高分辨率特徵和前一個RefineNet模塊的抽象特徵。每個RefineNet模塊接收多個不同分辨率特徵,並融合。

7)PSPNet 2016年

Pyramid Scene Parsing Network 金字塔場景解析網絡

主要貢獻:

  • 提出了金字塔池化模塊來聚合圖片信息

  • 使用附加的損失函數

金字塔池化模塊通過應用大核心池化層來提高感知域。使用膨脹卷積來修改ResNet網,並增加了金字塔池化模塊。金字塔池化模塊對ResNet輸出的特徵進行不同規模的池化操作,並作上採樣後,拼接起來,最後得到結果。

本文提出的網絡結構簡單來說就是將DeepLab(不完全一樣)aspp之前的feature map pooling了四種尺度之後將5種feature map concat到一起經過卷積最後進行prediction的過程。 

8)Large Kernel Matters 2017

主要貢獻:

  • 提出了使用大卷積核的編碼-譯碼架構

理論上更深的ResNet能有很大的感知域,但研究表明實際上提取的信息來自很小的範圍,因此使用大核來擴大感知域。但是核越大,計算量越大,因此將k x k的卷積近似轉換爲1 x k + k x 1和k x 1 + 1 x k卷積的和,稱爲GCN

本文的架構是:使用ResNet作爲編譯器,而GCN和反捲積作爲譯碼器。還使用了名爲Boundary Refinement的殘餘模塊。

9)DeepLab v3 2017(這個我們即將給大家接着上次系列繼續分享)

主要貢獻:

  • 改進 ASPP

  • 串行部署 ASPP 的模塊

和DeepLab v2一樣,將膨脹卷積應用於ResNet中。改進的ASPP指的是將不同膨脹率的膨脹卷積結果拼接起來,並使用了BN 。與 Dilated convolutions (2015) 不一樣的是,v3直接對中間的特徵圖進行膨脹卷積,而不是在最後做。

小總結:

現在把之前較爲典型的簡單介紹了一遍,現在接下來我們繼續說今天這個分割技術。


3


學習分割Everything

讓C是一組目標類別,希望爲其訓練一個instance segmentation模型。大多數現有方法假設C中的所有訓練樣本都帶有instance mask。
於是,本次放寬了這一要求,而是假設C=A∪B,其中來自A中類別的樣本有mask,而B中的只有邊界框。由於B類的樣本是弱標記的w.r.t.目標任務(instance segmentation),將強標籤和弱標籤組合的訓練作爲一個部分監督的學習問題。注意到可以很容易地將instance mask轉換爲邊界框,假設邊界框註釋也適用於A中的類。
給出了一個包含邊界框檢測組件和mask預測組件的MASK R-CNN instance segmentation模型,提出了MaskX R-CNN方法,該方法將特定類別的信息從模型的邊界框檢測器轉移到其instance mask預測器。
  • 權重傳遞來Mask預測

本方法是建立在Mask R-CNN,因爲它是一個簡單的instance segmentation模型,也取得了最先進的結果。簡單地說,MASK R-CNN可以被看作是一個更快的R-CNN邊界框檢測模型,它有一個附加的mask分支,即一個小的全卷積網絡(FCN)。

在推理時,將mask分支應用於每個檢測到的對象,以預測instance-level的前景分割mask。在訓練過程中,mask分支與Faster R-CNN中的標準邊界框head並行訓練。在Mask R-CNN中,邊界框分支中的最後一層和mask分支中的最後一層都包含特定類別的參數,這些參數分別用於對每個類別執行邊界框分類和instance mask預測。與獨立學習類別特定的包圍框參數和mask參數不同,我們建議使用一個通用的、與類別無關的權重傳遞函數來預測一個類別的mask參數,該函數可以作爲整個模型的一部分進行聯合訓練。

具體如下如所示:

  • Training

在訓練期間,假設對於A和B兩組類,instance mask註釋僅適用於A中的類,而不適用於B中的類,而A和B中的所有類都有可用的邊界框註釋。如上圖所示,我們使用A∪B中所有類的標準框檢測損失來訓練邊界框head,但只訓練mask head和權重傳遞函數T(·),在A類中使用mask loss,考慮到這些損失,我們探索了兩種不同的訓練過程:分階段訓練端到端訓練

分階段訓練

由於Mask R-CNN可以被看作是用mask head增強Faster R-CNN,一種可能的訓練策略是將訓練過程分爲檢測訓練(第一階段)和分割訓練(第二階段)。

在第一階段,只使用A∪B中類的邊界框註釋來訓練一個Faster R-cnn,然後在第二階段訓練附加的mask head,同時保持卷積特徵和邊界框head的固定。這樣,每個c類的類特定檢測權重wc可以被看作是在訓練第二階段時不需要更新的固定類emdet層疊向量。

該方法具有很好的實用價值,使我們可以對邊界框檢測模型進行一次訓練,然後對權重傳遞函數的設計方案進行快速評估。它也有缺點,這是我們接下來要討論的。

端到端聯合訓練

結果表明,對於MASK R-CNN來說,多任務訓練比單獨訓練更能提高訓練效果。上述分階段訓練機制將檢測訓練和分割訓練分開,可能導致性能低下。

因此,我們也希望以一種端到端的方式,聯合訓練邊界框head和mask head。原則上,可以直接使用A∪B中類的box損失和A中類的mask loss來進行反向傳播訓練,但是,這可能導致A組和B組之間的類特定檢測權重Wc的差異,因爲只有c∈A的Wc會通過權重傳遞函數T(·)從mask loss得到梯度。

我們希望Wc在A和B之間是均勻的,這樣在A上訓練的預測Wc=T(Wc;θ)可以更好地推廣到B。


4


實驗

表1 Ablation on input to T

表2 Ablation on the structure of T

表3 Impact of the MLP mask branch

表4 Ablation on the training strategy

Each point corresponds to our method on a random A/Bsplit of COCO classes.

效果圖

Mask predictions from the class-agnostic baseline (top row) vs. our MaskX R-CNN approach (bottom row). Green boxes are classes in set A while the red boxes are classes in set B. The left 2 columns are A = {voc} and the right 2 columns are A = {non-voc}.

Example mask predictions from our MaskX R-CNN on 3000 classes in Visual Genome. The green boxes are the 80 classes that overlap with COCO (set A with mask training data) while the red boxes are the remaining 2920 classes not in COCO (set B without mask training data). It can be seen that our model generates reasonable mask predictions on many classes in set B. See §5 for details.


© THE END 


努力分享優質的計算機視覺相關內容,歡迎關注:

交流羣


歡迎加入公衆號讀者羣一起和同行交流,目前有美顏、三維視覺計算攝影、檢測、分割、識別、醫學影像、GAN算法競賽等微信羣


     
               
               
               
個人微信(如果沒有備註不拉羣!
請註明: 地區+學校/企業+研究方向+暱稱



下載1:何愷明頂會分享


AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析


下載2:終身受益的編程指南:Google編程風格指南


AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!



   
             
             
             
下載3 CVPR2021

AI算法與圖像處公衆號後臺回覆: CVPR 即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文


本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章