1. 程式人生 > >分割演算法——可以分割一切目標(各種分割總結)

分割演算法——可以分割一切目標(各種分割總結)

週末應該是一個好好休息的時間,但是一定會有在默默努力科研的你,由於最近是開學季,很多關注的朋友一直會問“計算機視覺戰隊平臺有基礎性的內容嗎?”,今天我和大家說一次,我們平臺之前有推送很多基礎的知識,有興趣的或者是剛剛接觸CV&DL的你,可以去歷史訊息閱讀,在這也感謝所有一直關注和支援我們的您!

今天其實是一個重要的日子!不告訴大傢什麼事情,但是我會把自己喜悅的心情與大家分享,接下來就和大家說說目標分割的事吧~

640?wx_fmt=png

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

01 概述

大多數目標例項分割的方法都要求所有的訓練樣本帶有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年,來自伯克利的【點選藍色,有連結直接可以閱讀全卷積網路相關資料】卷積網路,去掉了末端的全連線層。隨後的語義分割模型基本上都採用了這種結構。除了全連線層,語義分割另一個重要的問題是池化層。池化層能進一步提取抽象特徵增加感受域,但是丟棄了畫素的位置資訊。但是語義分割需要類別標籤和原影象對齊,因此需要從新引入畫素的位置資訊。有兩種不同的架構可以解決此畫素定位問題。

  • 第一種是編碼-譯碼架構。編碼過程通過池化層逐漸減少位置資訊、抽取抽象特徵;譯碼過程逐漸恢復位置資訊。一般譯碼與編碼間有直接的連線。該類架構中U-net 是最流行的。

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

640?wx_fmt=png

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

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

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

1)FCN 2014年

640?wx_fmt=png

主要的貢獻:

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

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

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

  • 引入跳躍連線來改善上取樣粗糙的畫素定位

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

2)SegNet 2015年

640?wx_fmt=png

編碼-譯碼架構

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

3)U-Net 2015 

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

640?wx_fmt=jpeg

4)Dilated Convolutions 2015年

通過膨脹卷積操作聚合多尺度的資訊

640?wx_fmt=gif

主要貢獻:

  • 使用膨脹卷積

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

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

640?wx_fmt=png

5)DeepLab (v1 & v2) 2014 & 2016

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

6)RefineNet 2016年

640?wx_fmt=png

640?wx_fmt=png

主要貢獻:

  • 精心設計的譯碼模組

  • 所有模組遵循殘餘連線設計

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

7)PSPNet 2016年

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

640?wx_fmt=png

主要貢獻:

  • 提出了金字塔池化模組來聚合圖片資訊

  • 使用附加的損失函式

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

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

8)Large Kernel Matters 2017

640?wx_fmt=png

主要貢獻:

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

理論上更深的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

640?wx_fmt=png

主要貢獻:

  • 改進 ASPP

  • 序列部署 ASPP 的模組

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

小總結:

640?wx_fmt=png

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


02 學習分割Every Thing

—————————

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引數,該函式可以作為整個模型的一部分進行聯合訓練。

具體如下如所示:

640?wx_fmt=png

  • 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。

03 實驗

——

表1 Ablation on input to T

640?wx_fmt=png

表2 Ablation on the structure of T

640?wx_fmt=png

表3 Impact of the MLP mask branch

640?wx_fmt=png

表4 Ablation on the training strategy

640?wx_fmt=png

640?wx_fmt=png

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

效果圖

640?wx_fmt=jpeg

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}.

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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.

如果想加入我們“計算機視覺戰隊”,請掃二維碼加入學習群,我們一起學習進步,探索領域中更深奧更有趣的知識!

640?wx_fmt=jpeg