目標檢測——Mask R-CNN【請結合其他博客一起食用】

大家好 今天來到了我們Maskrcnn 的分享
由於MaskRCNN網絡包含了很多之前介紹過的知識點,例如RPN,FPN,RoIPooling,RoIAlign,故這遍文章看上去顯得比較‘單薄’,如果想弄清楚Mask RCNN網絡,需要結合之前的博文一同食用! o(=•ェ•=)m

前言

本篇論文其實還是分割爲主,但是目前我們的網絡基礎是分類和檢測,知識積累還不夠,所以如有分割問題解釋的不到位,當我們學習完分割的基礎網絡還會回來修改的!如果大佬看到我講的有問題,期待大佬們的點評。(求讀者對本文多一點容錯,寬容本文~)


另外,本文綜合了主流的各種博文,也算是閱文無數!感謝大佬們的幫助!可能並沒有聯繫大佬就進行了copy,對知識產權的侵犯抱歉!
再次瘋狂給各位大佬打call!感謝大佬們!

0 前情提要

Mask R-CNN是ICCV 2017的best paper,彰顯了計算機視覺領域在2017年的最新成果。在深度學習2017年的最新發展中,單任務的網絡結構已經逐漸不再引人矚目,取而代之的是集成,複雜,一石多鳥的多任務網絡模型。 Mask R-CNN就是典型的代表。本大作的一作是何愷明,在該篇論文發表的時候,大佬已經去了FaceBook。


(感覺大佬有些......小可愛~(๑•ᴗ•๑))

今天的分享,我們想先介紹一下,MaskRCNN有多厲害。 我們可以用它乾點啥?


可以看到,在實例分割Mask R-CNN框架中,還是主要完成了三件事情:
1)目標檢測,直接在結果圖上繪製了目標框。
2)目標分類,對於每一個目標,需要找到對應的類別,區分到底是人,是車,還是其他類別。
3)像素級目標分割,在每個目標中,需要在像素層面區分,什麼是前景,什麼是背景。
Mask rcnn是何愷明基於以往的Faster Rcnn架構提出的新的卷積網絡,一舉完成了物體實例分割,該方法在有效地目標檢測的同時完成了高質量的語義分割。文章的主要思路就是把原有的Faster-RCNN進行擴展,添加一個分支使用現有的檢測對目標進行並行預測。
同時,這個網絡結構比較容易實現和訓練,速度5fps也算比較快,可以很方便的應用到其他的領域,像目標檢測,分割,和人物關鍵點檢測等。並且比現有的算法效果都要好,在後面的實驗結果部分有展示出來。

我們來看一下爲什麼會要提出MaskRCNN?
深度學習的解決任務主要分爲以下幾種(通俗的來解釋一下):
(1)圖像分類 Image Classification
圖像分類,該任務需要我們對出現在某幅圖像中的物體做標註。比如一共有1000個物體類,對一幅圖中所有物體來說,某個物體要麼有,要麼沒有。可實現:輸入一幅測試圖片,輸出該圖片中物體類別的候選集。【即我們要知道某種物體的分類】
(2)物體檢測 Object detection
判斷屬於某個特定類的物體是否出現在圖中且 物體定位,定位常用表徵就是物體的邊界框。可實現:輸入測試圖片,輸出檢測到的物體類別和位置。【即我們要知道物體的分類並且檢測出矩形框的位置】
(3)語義分割 Semantic scene labeling
語義標註/分割:該任務需要將圖中每一點像素標註爲某個物體類別。同一物體的不同實例不需要單獨分割出來。對下圖,標註爲人,羊,狗,草地。而不需要羊1,羊2,羊3,羊4,羊5。像素級別的語義分割,對圖像中的每個像素都劃分出對應的類別,即實現像素級別的分類。【即我們要知道圖像中的不同種類的在哪裏並且分割出來】
(4)實例分割 Instance segment
實例分割是物體檢測+語義分割的綜合體。相對物體檢測的邊界框,實例分割可精確到物體的邊緣;相對語義分割,實例分割可以標註出圖上同一物體的不同個體(羊1,羊2,羊3…)。【即我們要知道每個物體在哪裏並且分割出來】
(5)全景分割(自動駕駛領域中用的比較多,也放上來)
實現實例分割和語義分割的統一,全景分割將傳統意義上相互獨立的實例分割(檢測和分割每個目標實例)和語義分割(爲每個像素分配一個類標籤)任務統一起來了。這種統一是自然的,並在一種孤立的研究狀態中呈現出一種既不存在於實例中,也不存在於語義分割中的全新的挑戰。【有興趣的夥伴們可以瞭解一下】



1 基礎結構


看MaskRCNN的粗略網絡結構,不禁覺得眼熟,這不就是faster rcnn改了一點咩??其實這是大佬工作的歸併。 使用了RCNN系列、FPN、Resnet\ResNeXt、FCN。

1.1 Mask RCNN

【整體來說】一個概念上簡單,靈活和通用的目標分割框架。我們的方法有效地檢測圖像中的目標,同時爲每個實例生成高質量的分割掩碼。添加一個與現有目標檢測框迴歸並行的分支,用於預測目標掩碼,來擴展Faster R-CNN。
【泛化性】Mask R-CNN很容易推廣到其他任務,例如,允許我們在同一個框架中估計人的姿勢。我們在COCO挑戰的所有三個項目中取得了最佳成績,包括目標分割,目標檢測和人體關鍵點檢測。
【簡單且有效】Mask R-CNN訓練簡單,相對於Faster R-CNN,只需增加一個較小的開銷,運行速度可達5 FPS。沒有使用額外技巧,Mask R-CNN優於所有現有的單一模型,包括COCO 2016挑戰優勝者。

簡單而有效的方法----> 促進未來目標級識別領域研究的堅實基礎【baseline】;
快速的訓練和測試速度,以及框架的靈活性和準確性 ----> 將促進未來目標分割的研究;
人體姿態估計任務 ----> 展示我們框架的通用性 ;

通過添加一個:用於在每個感興趣區域(RoI)上預測分割掩碼的分支來擴展Faster R-CNN [34],這個掩碼分支與用於分類和目標檢測框迴歸的分支並行執行,如下圖所示(用於目標分割的Mask R-CNN框架)。掩碼分支是作用於每個RoI的小FCN,以像素到像素的方式預測分割掩碼。


2 Mask RCNN 細節

Faster R-CNN: 我們首先簡要回顧一下Faster R-CNN檢測器。Faster R-CNN由兩個階段組成。稱爲區域提議網絡(RPN)的第一階段提出候選目標邊界框。第二階段,本質上是Fast R-CNN,使用RoI Pool從每個候選框中提取特徵,並進行分類和邊界迴歸。兩個階段使用的特徵可以共享,以便更快的推理。
Mask R-CNN採用相同的兩個階段,具有相同的第一階段(即RPN)。在第二階段,與預測類和框偏移量並行,Mask R-CNN還爲每個RoI輸出二進制掩碼。

2.1 損失函數LmaskL_{mask}

在訓練期間,我們將在每個採樣後的RoI上的多任務損失函數定義爲L=Lcls+Lbox+LmaskL=L_{cls}+L_{box}+L_{mask}。分類損失LclsL_{cls}和檢測框損失LboxL_{box}與Faster rcnn中定義的相同。
掩碼分支對於每個RoI的輸出維度爲KmmK*m*m,即K個分辨率爲m×m的二進制掩碼,每個類別一個,K表示類別數量。我們爲每個像素應用Sigmoid,並將Lmask定義爲平均二進制交叉熵損失。對於真實類別爲k的RoI,僅在第k個掩碼上計算LmaskL_{mask}(其他掩碼輸出不計入損失)。
我們對LmaskL_{mask}的定義允許網絡爲每個類獨立地預測二進制掩碼,這樣不會跨類別競爭。我們依靠專用分類分支預測用於選擇輸出掩碼的類標籤。這將解耦掩碼和類預測。【耦合:兩個或兩個以上的體系或兩種運動形式間通過相互作用而彼此影響以至聯合起來的現象 】這與通常將FCN應用於像素級Softmax和多重交叉熵損失的語義分段的做法不同。在這種情況下,掩碼將在不同類別之間競爭。通過實驗發現,這種方法是改善目標分割效果的關鍵。

我們來詳細介紹一下損失函數LmaskL_{mask}
(1)mask分支採用FCN對每個RoI的分割輸出維數爲KmmK*m*m(其中:m表示RoI Align特徵圖的大小),即K個類別的mmm*m的二值mask ----> 保持mmm*m的空間佈局,pixel-to-pixel操作需要保證RoI特徵 映射到原圖的對齊性,這也是使用RoIAlign解決對齊問題原因,減少像素級別對齊的誤差。KmmK*m*m二值mask結構解釋:最終的FCN輸出一個K層的mask,每一層爲一類,Log輸出,用0.5作爲閾值進行二值化,產生背景和前景的分割Mask;
(2)LmaskL_{mask} 使得網絡能夠輸出每一類的 mask,且不會有不同類別 mask 間的競爭. 分類網絡分支預測 object 類別標籤,以選擇輸出哪個mask,對每一個ROI,如果檢測得到ROI屬於哪一個分類,就只使用哪一個分支的相對熵誤差作爲誤差值進行計算;
(3)(舉例說明:分類有3類(貓,狗,人),檢測得到當前ROI屬於“人”這一類,那麼所使用的LmaskL_{mask}爲“人”這一分支的mask,即,每個class類別對應一個mask可以有效避免類間競爭(其他class不貢獻Loss);
(4)對每一個像素應用sigmoid,然後取RoI上所有像素的交叉熵的平均值作爲LmaskL_{mask}

2.2 FCN分支介紹

FCN可以接受任意尺寸的輸入圖像,採用反捲積層對最後一個卷積層的feature map進行上採樣, 使它恢復到輸入圖像相同的尺寸,從而可以對每個像素都產生了一個預測, 同時保留了原始輸入圖像中的空間信息, 最後在上採樣的特徵圖上進行逐像素分類。 最後逐個像素計算softmax分類的損失, 相當於每一個像素對應一個訓練樣本。


簡單的來說,FCN與CNN的區別在把於CNN最後的全連接層換成卷積層,輸出的是一張已經Label好的圖片。FCN 存在一個問題,輸入經過幾個卷積和池化後,輸出特徵圖的分辨率下降,因此,FCN 的直接預測分辨率低,導致了相對模糊的物體邊界。




掩碼錶示——ROI Align

具體來說,我們使用FCN來爲每個RoI預測一個m×m的掩碼。這允許掩碼分支中的每個層顯式的保持m×m的對象空間佈局,而不會將其縮成缺少空間維度的向量表示。與以前使用fc層掩碼預測的的方法不同,我們的全卷積表示需要更少的參數,並且如實驗所證明的更準確。
這種像素到像素的行爲需要RoI特徵,它們本身就是小特徵圖。爲了更好地對齊,以準確地保留顯式的像素空間對應關係,我們開發出在掩模預測中發揮關鍵作用的以下RoIAlign層。
Faster R-CNN不是爲網絡輸入和輸出之間的像素到像素對齊而設計的。(前文講述roi pooling 時已經預告過了,當faster rcnn時不在乎像素級的差異,是粗略的空間量化特徵提取,進行了多次量化【上/下取整】。而像素級別,對於分割問題至關重要)。
RoIPooling使用取整量化,導致特徵圖RoI映射回原圖RoI時空間不對齊明顯,造成誤差;於是使用RolAlign代替了RoIPooling;爲了修正錯位,我們提出了一個簡單的,量化無關的層,稱爲RoIAlign,可以保留精確的空間位置。儘管是一個看似很小的變化,RoIAlign起到了很大的作用:

  • 它可以將掩碼準確度提高10%至50%;
  • 在更嚴格的位置度量下,顯示出更大的收益;
  • 其次,我們發現解耦掩碼和分類至關重要:我們爲每個類獨立地預測二進制掩碼,這樣不會跨類別競爭,並且依賴於網絡的RoI分類分支來預測類別;
  • 相比之下,FCN通常執行每像素多類分類,分割和分類同時進行,基於我們的實驗,對於目標分割效果不佳;

RoI Pool是從每個RoI提取小特徵圖(例如,7×7)的標準操作。 RoI Pool首先將浮點數表示的RoI縮放到與特徵圖匹配的粒度,然後將縮放後的RoI分塊,最後彙總每個塊覆蓋的區域的特徵值(通常使用最大池化)。例如,對在連續座標系上的xx計算[x/16],其中16是特徵圖步幅,[⋅]表示四捨五入。同樣地,當對RoI分塊時(例如7×7)時也執行同樣的計算。這樣的計算使RoI與提取的特徵錯位。雖然這可能不會影響分類,因爲分類對小幅度的變換具有一定的魯棒性,但它對預測像素級精確的掩碼有很大的負面影響。
爲了解決這個問題,我們提出了一個RoI Align層,可以去除RoI Pool的錯位,將提取的特徵與輸入準確對齊。我們提出的改變很簡單:不再使用量化,避免計算過程中的四捨五入(比如,我們使用x/16代替[x/16])。我們選取分塊中的4個常規的位置,使用雙線性插值來計算每個位置的精確值,並將結果彙總(使用最大或平均池化)。(我們抽取四個常規位置,以便我們可以使用最大或平均池化。事實上,在每個分塊中心取一個值(沒有池化)幾乎同樣有效。我們也可以爲每個塊採樣超過四個位置,我們發現這些位置的收益遞減。)

【雙線性差值】
雙線性插值,又稱爲雙線性內插。在數學上,雙線性插值是有兩個變量的插值函數的線性插值擴展,其核心思想是在兩個方向分別進行一次線性插值。【具體的可以參見博客圖像處理之雙線性插值法,感謝大佬們的分享!】

假如我們想得到點 P = (x, y) 的函數值(比如說在圖像中最簡單的映射就是點(x,y)的像素值,即轉化爲我們想得到點P的像素值);
而我們已知的是Q11=(x1,y1)Q12=(x1,y2)Q21=(x2,y1)Q22=(x2,y2)Q_11= (x1, y1);Q12 = (x1, y2);Q21 = (x2, y1);Q22 = (x2, y2)的四個點的像素值;
【解決方案:雙線性差值】(就是兩次的線性插值)
f(R1)x2xx2x1f(Q11)+xx1x2x1f(Q21),whereR1=(x,y1)f(R2)x2xx2x1f(Q11)+xx1x2x1f(Q22),whereR2=(x,y2) f(R_1) \approx \frac{x_2-x}{x_2-x_1}f(Q_{11}) + \frac{x-x_1}{x_2-x_1}f(Q_{21}) , where R_1=(x,y_1) \\ f(R_2) \approx \frac{x_2-x}{x_2-x_1}f(Q_{11}) + \frac{x-x_1}{x_2-x_1}f(Q_{22}) , where R_2=(x,y_2) \\
然後在 y 方向進行線性插值,綜合起來就是雙線性插值最後的結果。(註明:由於圖像雙線性插值只會用相鄰的4個點,因此上述公式的分母都是1)

如我們在消融實驗(控制變量法)中,RoI Align的改進效果明顯。我們還比較了的RoI Warp操作。 與RoI Align不同,RoI Warp忽略了對齊問題,並在實現中,有像RoI Pool那樣的四捨五入計算。因此,即使RoI Warp也採用雙線性重採樣,如實驗所示(更多細節見表格2c),它與RoI Pool效果差不多。這表明了對齊起到了關鍵的作用。 在相關實驗中,作者發現將採樣點設爲4會獲得最佳性能,甚至直接設爲1在性能上也相差無幾。事實上,ROI Align 在遍歷取樣點的數量上沒有ROI Pooling那麼多,但卻可以獲得更好的性能,這主要歸功於解決了misalignment的問題。

ROI Warp方法比前面提到的ROI Pooling方法稍微好一些。
該方法出現在Instance-aware Semantic Segmentation via Multi-task Network Cascades中。主要的區別在於第二步。還是用上面提到的例子:在該網絡中假設使用的骨架網絡中的 feat_stride=16,且測試圖像中的一個邊界框的大小爲400∗300
1)corp操作。 邊界框在對應feature map上的大小爲200/16∗150/16=25∗18.75,注意這個時候出現小數了。那麼就需要像之前的方法一樣對其進行第一次量化操作,得到的特徵圖上大小爲25∗18。
2)warp操作。 這裏使用的是雙線性差值算法,使corp操作的特徵圖變化到固定的尺度上去,比如14∗14,這樣再去做Pooling得到固定的輸出。這裏的座標就是連續的了,不會存在量化誤差。
可以看出這裏去掉了第二次的量化操作,進而減小了誤差,也提升了檢測的精度。

3 網絡架構

爲了證明我們的方法的普適性,我們構造了多種不同結構的Mask R-CNN。使用不同的:
(i)用於整個圖像上的特徵提取的下層卷積網絡,
(ii)用於檢測框識別(分類和迴歸)和掩碼預測的上層網絡。

我們使用”網絡-深度-特徵輸出層”的方式命名底下層卷積網絡。我們評估了深度爲50或101層的ResNet和ResNeXt網絡。使用ResNet的Faster R-CNN從第四階段的最終卷積層提取特徵,我們稱之爲C4。例如,使用ResNet-50的下層網絡由ResNet-50-C4表示。
我們還探討特徵金字塔網絡(FPN)。 FPN使用具有橫旁路連接的自頂向下架構,以從單尺度輸入構建網絡中的特徵金字塔。使用FPN的Faster R-CNN根據其尺度提取不同級別的金字塔的RoI特徵,不過其它部分和平常的ResNet類似。使用ResNet-FPN進行特徵提取的Mask R-CNN可以在精度和速度方面獲得極大的提升。
對於上層網絡,我們基本遵循了以前論文中提出的架構,我們添加了一個全卷積的掩碼預測分支。具體來說,我們擴展了 ResNet和FPN中提出的Faster R-CNN的上層網絡。詳細信息如下圖(上層網絡架構:我們擴展了兩種現有的Faster R-CNN上層網絡架構,分別添加了一個掩碼分支。圖中數字表示分辨率和通道數,箭頭表示卷積、反捲積或全連接層(可以通過上下文推斷,卷積減小維度,反捲積增加維度。)所有的卷積都是3×3的,除了輸出層,是1×1的。反捲積是2×2的,步進爲2,,我們在隱藏層中使用ReLU。左圖中,“res5”表示ResNet的第五階段,簡單起見,我們修改了第一個卷積操作,使用7×7,步長爲1的RoI代替14×14,步長爲2的RoI。右圖中的“×4”表示堆疊的4個連續的卷積。)

基於FCN(Fully Convolutional Networks,全卷積網絡),把 ROI 區域映射爲一個 mmnumclassm*m*numclass 的特徵層,例如28288028*28*80,論文中結構如右圖:
對 ROIAlign 操作生成的 ROI 區域固定大小的特徵圖,經過 4 個卷積操作後,生成141414*14大小的特徵圖;然後經過上採樣生成 28*28 大小的特徵圖;最後通過卷積操作生成大小爲282828*28,深度爲 80 的特徵圖。
上述過程爲全卷積網絡,這樣可以保證 mask 分支的每一層都有 mmm*m 大小的空間佈局,不會缺少空間維度的向量,並且與全連接層預測 mask 相比,FCN 需要更少的參數,可以得到更好的效果。

ResNet-C4的上層網絡包括ResNet的第五階段(即9層的“res5),這是計算密集型的。
對於FPN,下層網已經包含了res5,因此可以使上層網絡包含更少的卷積核而變的更高效。
我們注意到我們的掩碼分支是一個非常簡單的結構。也許更復雜的設計有可能提高性能,但不是這項工作的重點。

3.1 網絡結構細化圖

代碼中將Resnet101網絡,分成5個stage,記爲 [C1,C2,C3,C4,C5]; 如果瞭解FPN網絡(也可以參看上面提供的FPN網絡博文鏈接),知道這裏的5個階段分別對應着5中不同尺度的feature map輸出,用來建立FPN網絡的特徵金字塔(feature pyramid)
先通過MaskRCNN網絡結構圖,整體瞭解MaskRCNN網絡。

  • 【FPN】雖然事先將ResNet網絡分爲5個stage,但是,並沒有利用其中的Stage1即P1的特徵,官方的說法是因爲P1對應的feature map比較大計算耗時所以棄用; 相反,在Stage5即P5的基礎上進行了下采樣得到P6,故,利用了[P2 P3 P4 P5 P6]五個不同尺度的特徵圖輸入到RPN網絡,分別生成RoI;
  • [P2 P3 P4 P5 P6]五個不同尺度的特徵圖由RPN網絡生成若干個anchor box,經過NMS非最大值抑制操作後保留將近共2000個RoI(2000爲可更改參數),由於步長stride的不同,分開分別對[P2 P3 P4 P5]四個不同尺度的feature map對應的stride進行RoIAlign操作,將經過此操作產生的RoI進行Concat連接,隨即網絡分爲三部分:全連接預測類別class、全連接預測矩形框box、全卷積預測像素分割mask;
3.2 實現細節【略】

(想詳細瞭解的小夥伴請回去看論文~)
超參數的設置與現有的Fast/Faster R-CNN基本一致。雖然這些設定是在原始論文中是用於目標檢測的,但是我們發現我們的目標分割系統也是可以用。
【訓練】:與Faster R-CNN中的設置一樣,如果RoI與真值框的IoU不小於0.5,則爲正樣本,否則爲負樣本。掩碼損失函數Lmask僅在RoI的正樣本上定義。掩碼目標是RoI及其對應的真值框之間的交集的掩碼。
我們採用以圖像爲中心的訓練。圖像被縮放(較短邊)到800像素。批量大小爲每個GPU2個圖像,每個圖像具有N個RoI採樣,正負樣本比例爲1:3。 C4下層網絡的N爲64,FPN爲512。我們使用8個GPU訓練(如此有效的批量大小爲16)160k次迭代,學習率爲0.02,在120k次迭代時學習率除以10。我們使用0.0001的權重衰減和0.9的動量。
RPN錨點跨越5個尺度和3個縱橫比。爲方便消融,RPN分開訓練,不與Mask R-CNN共享特徵。本文中的,RPN和Mask R-CNN具有相同的下層網絡,因此它們是可共享的。
【測試】:在測試時,C4下層網絡中的候選數量爲300,FPN爲1000。我們在這些候選上執行檢測框預測分支,然後執行非極大值抑制。然後將掩碼分支應用於評分最高100個檢測框。儘管這與訓練中使用的並行計算不同,但它可以加速推理並提高精度(由於使用更少,更準確的RoI)。掩碼分支可以預測每個RoI的KK個掩碼,但是我們只使用第kk個掩碼,其中kk是分類分支預測的類別。然後將m×mm×m浮點數掩碼輸出的大小調整爲RoI大小,並使用閾值0.5將其二值化。
請注意,由於我們僅在前100個檢測框中計算掩碼,Mask R-CNN將邊緣運行時間添加到其對應的Faster R-CNN版本(例如,相對約20%)

4 實驗:目標分割

我們對Mask R-CNN與現有技術進行徹底的比較,並且進行了綜合的消融實驗。我們的實驗使用COCO數據集。我們報告標準的COCO指標,包括AP(平均超過IoU閾值),AP50,AP75和APS,APM,APL(不同尺度的AP)。除非另有說明,使用掩碼IoU評估AP
我們訓練使用80k訓練集和35k驗證集的子集(trainval35k)的組合,並在剩下的5k個驗證集子集(minival)上報告消融。

4.1 主要結果
Mask R-CNN在COCO測試集上的結果。這些結果基於ResNet-101,掩碼AP達到了35.7,並可以5FPS的速度運行。掩碼標記爲彩色,並且標記出了邊框、類別和置信度。
Mask R-CNN在COCO測試集上更多的結果。使用ResNet-101-FPN,並可以35FPS運行。掩碼AP爲35.7(表1)
FCIS+++(上)對比 Mask R-CNN(下,ResNet-101-FPN)。 FCIS在部分重疊對象上有問題,Mask R-CNN沒問題。

我們將Mask R-CNN與其它最先進的目標分割方法進行比較,如下表(表1)所示:(COCO test-dev上的目標分割掩碼AP。 MNC和FCIS分別是COCO 2015和2016分割挑戰的獲勝者。Mask R-CNN優於更復雜的,包含多尺度訓練和測試、水平翻轉測試的FCIS+++,和OHEM[ online hard example mining(OHEM)算法訓練基於區域的卷積檢測算子的高效目標檢測算法,能夠對簡單樣本和一些小數量樣本進行抑制,使得訓練過程更加高效。所有條目都是單模型的結果)

4.2 消融實驗

我們進行了一些消融來分析Mask R-CNN。結果顯示在下表(表2)中(Mask R-CNN的消融。我們在trainval35k上訓練,在minival上測試,並報告掩碼AP,除非另有說明。),並在下面詳細討論。


【結構】 表2a顯示了具有各種使用不同下層網絡的Mask R-CNN。它受益於更深層次的網絡(50對比101)和高級設計,包括FPN和ResNeXt(我們使用64×4d的普通的ResNeXt)。我們注意到並不是所有的框架都會從更深層次的或高級的網絡中自動獲益(參見13中的基準測試)。
【獨立與非獨立掩碼】 Mask R-CNN解耦了掩碼和類預測:由於現有的檢測框分支預測類標籤,所以我們爲每個類生成一個掩碼,而不會在類之間產生競爭(通過像素級Sigmoid和二值化損失)。在表2b中,我們將其與使用像素級Softmax和非獨立損失的方法進行比較(常用於FCN)。這些方法將掩碼和類預測的任務結合,導致了掩碼AP(5.5個點)的嚴重損失。這表明,一旦目標被歸類(通過檢測框分支),就可以預測二值化掩碼而不用擔心類別,這樣可以使模型更容易訓練。
【類相關與類無關掩碼】 我們默認預測類相關的掩碼,即每類一個m×m掩碼。有趣的是,這種方法與具有類別無關掩碼的Mask R-CNN(即,預測單個m×m輸出而不論是那一類)幾乎同樣有效:對於ResNet-50-C4掩碼AP爲29.7,而對於類相關的對應的模型AP爲30.3 。這進一步突出了我們的方法中的改進:解耦了分類和分割。
【RoIAlign】 表2c顯示了對我們提出的RoIAlign層的評估。對於這個實驗,我們使用的下層網絡爲ResNet-50-C4,其步進爲16。RoIAlign相對RoIPool將AP提高了約3個點,在高IoU(AP75)結果中增益更多。 RoIAlign對最大/平均池化不敏感,我們在本文的其餘部分使用平均池化。
此外,我們與採用雙線性採樣的MNC [10]中提出的RoI Warp進行比較。如實驗:目標分割所述,RoIWarp仍然四捨五入了RoI,與輸入失去了對齊。從表2c可以看出,RoIWarp與RoIPool效果差不多,比RoIAlign差得多。這突出表明正確的對齊是關鍵。
我們還使用ResNet-50-C5下層網絡評估了RoIAlign,其步進更大,達到了32像素。我們使用與圖3(右)相同的上層網絡,因爲res5不適用。表2d顯示,RoIAlign將掩碼AP提高了7.3個點,並將掩碼的AP75AP75 提高了10.5個點(相對改善了50%)。此外,我們注意到,與RoIAlign一樣,使用步幅爲32的C5特徵(30.9 AP)比使用步幅爲16的C4特徵(30.3 AP,表2c)更加精準。 RoIAlign在很大程度上解決了使用大步進特徵進行檢測和分割的長期挑戰。
最後,當與FPN一起使用時,RoIAlign顯示出1.5個掩碼AP和0.5個檢測框AP的增益,FPN具有更精細的多級步長。對於需要更精細對準的關鍵點檢測,即使使用FPN,RoIAlign也顯示出很大的增益(表6)。
【掩碼分支】 分割是一個像素到像素的任務,我們使用FCN來利用掩碼的空間佈局。在表2e中,我們使用ResNet-50-FPN下層網絡來比較多層感知機(MLP)和FCN。使用FCN可以提供超過MLP 2.1個點的AP增益。爲了與MLP進行公平的比較,FCN的上層網絡的卷積層沒有被預訓練。

【參考博文】
roi pool/ align:https://www.cnblogs.com/wangyong/p/8523814.html
雙線性插值:https://zhuanlan.zhihu.com/p/49832048
全景分割: http://www.sohu.com/a/215073729_297710
https://blog.csdn.net/u010821666/article/details/78697723
https://blog.csdn.net/xiamentingtao/article/details/78598511
http://www.sohu.com/a/215073729_297710
https://cloud.tencent.com/developer/news/189753

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