Mask R-CNN 解讀:擴展 Faster R-CNN 用於實例分割

Title: Mask R-CNN(2018)
Link: Paper Code
Tips:

  1. 瞭解 Fast R-CNN 如何擴展成 Mask R-CNN(4);
  2. 理解 RoIAlign 爲什麼引入以及如何解決問題(4);
  3. 如何進行 Ablation Experiments,分析框架各部分的作用(4.2);
  4. 如何對模型進行拓展,從分割到關鍵點檢測(5)。

Summary:

這是一篇跨任務的文章,說明了不同任務之間互相借鑑的可行性,也啓發了我們在深鑽某一領域的同時也要涉略廣泛,其他任務的方法也許是解決你問題的新思路。

這篇論文提出的 Mask R-CNN 是一種很直觀的想法:Faster R-CNN 用於檢測,對每個候選物體都有 class 和 bounding box 兩個輸出,在此基礎上加一個分支來預測 mask。沒想到樣的結合可行,比傳統 FCN 的效果要好。更神奇的是,這樣的模型還能繼續拓展到其他任務。


Abstract

本文介紹的是一個實例分割框架 Mask R-CNN。

Mask R-CNN 是檢測框架 Faster R-CNN 的擴展,它通過添加一個分支與現有的用於邊界框識別的分支並行來預測對象蒙版。它可以有效地檢測圖像中的對象,同時爲每個實例生成高質量的分割蒙版。

這個框架容易拓展到其他任務,例如用於人體姿態估計。

1. Introduction

目標檢測和語義分割的快速發展分別得益於 Fast/Faster R- CNNFully Convolutional Network (FCN),本文的目標是開發一個可比較的實例分割框架。

任務——

實例分割 (instance segmentation) 是一個有挑戰的任務,因爲它不但要求檢測出物體,還要精準分割每個實例。因此它需要結合目標檢測( object detection,目標是爲每個物體分類並用一個 bounding box 給物體定位)。

如何擴展——
Mask R-CNN,通過添加一個分支來預測每個關注區域(RoI)上的分割蒙版,並與現有的用於分類和邊界框迴歸的分支並行,從而擴展了Faster R-CNN。

  • 在 Faster R-CNN 框架上改進,促進了多種靈活的體系結構設計;
  • mask 分支是一個小型 FCN,僅增加了少量計算開銷,保證了訓練速度。
    在這裏插入圖片描述

框架特點——
Faster R- CNN並非設計用於網絡輸入和輸出之間的像素到像素對齊。爲了解決爲對齊的問題,我們提出了一個簡單的無量化層,稱爲 RoIAlign,它保留了精確的空間位置。這個小改變將 mask 的精度提高了 10% 到 50%。

我們發現將遮罩與類別預測解耦至關重要:爲每個類別獨立預測二進制掩碼,使用網絡的 RoI 分類分支來預測類別。而 FCN 把分類和分割結合,執行的是每個像素的多類別分類,它在實例分割上表現較差。

比賽成績——
Mask R-CNN在 COCO 實例分割任務上超過了所有先前的 state-of-the-art 單模型結果,包括2016年競賽冠軍的模型。

通用性——
通過在 COCO 關鍵點數據集上進行人體姿勢估計任務來展示該框架的通用性。

2. Related Work

R-CNN——
指目標檢測的三個框架 R-CNN, Fast R-CNN 和 Faster R-CNN,它們用於對象的邊界框檢測。

Instance Segmentation——
受R-CNN有效性的驅動,實例分割的許多方法都基於 segment proposals。這些方法先分割再識別,速度較慢且準確性較低。而本文采用並行預測 mask 和 class lable 的方式,更簡單靈活。

現有的方法中已經有把分割和檢測結合起來的方法 (fully convolutional instance segmentation FCIS),這個系統同時處理類別,邊框和遮罩,運行很快。 但是FCIS在重疊的實例上表現出系統性錯誤併產生虛假的邊緣。

其他的方法就是參考語義分割,把 FCN 的輸出再分割成不同的實例。與這些分割先行策略相比,Mask R-CNN 採取一種實例先行的策略。 (segmentation-first strategy vs instance-first strategy)

3. Mask R-CNN

Mask R-CNN 是一種很直觀的想法:Faster R-CNN 用於檢測,對每個候選物體都有 class 和 bounding box 兩個輸出,在此基礎上加一個分支來預測 mask。

  • 第三個分支與前兩個分支的區別是,它要求更精細的空間佈局特徵;
  • Faster R-CNN 缺少對齊功能,所以 Mask R-CNN 需要添加 pixel-to-pixel alignment 功能。

首先解釋框架的一系列相關概念。

Faster R-CNN——
Faster R-CNN detector 包括兩個階段(two-stage):Region Proposal Network (RPN) + Fast R-CNN,其中 PRN 用於產生候選物體的邊界框,Fast R-CNN 根據前一步產生的候選物體提取特徵,然後進行分類和迴歸。

Mask R-CNN——
Mask R-CNN 也採取了兩階段的流程,第一階段仍然是 RPN,第二階段除了分類與生成 bounding box 外,還同時爲每個 RoI 生成一個二值遮罩

要注意 mask 分支的輸出是 Km² 維的,m×m 是像素, K 是類別。classification 分支輸出的類別標籤用於選擇 mask,這樣就可以分離(decouple) class 和 mask 任務。而通常的 FCN 模型中,mask 和 class 任務相影隨行。

因爲網絡是多任務的,所以 multi-task loss 如下:
在這裏插入圖片描述

Mask Representation——
如何對 mask 進行表示?

mask 對物體空間佈局(spatial layout)編碼,其中空間機構可以通過卷積提供的像素(pixel-to-pixel)間關係解決。

具體來說,使用 FCN 預測每個RoI的 m×m 大小的 mask,這樣可保證不丟失空間信息。

另外,這種 pixel-to-pixel 的方法要求 RoI 特徵對齊,保留逐像素的空間對應關係,這也引出了下面討論的一個層 RoIAlign。

RoIAlign——
RoIPool 用來每個 RoI 提取特徵,它首先需要對浮點數表示的 RoI 進行離散化操作(比如 [x/16]),這些量化操作在 RoI 和提取的特徵之間引入了未對齊的問題。爲了解決這個粗糙的對齊問題,本文引入了 RoIAlign layer。

RoIAlign 的做法:避免量化操作(用 x/16 替代 [x/16]),使用雙線性插值法(bilinear interpolation) 來計算每個RoI bin 中四個定期採樣位置的輸入要素的準確值,並將結果通過取最大值/平均值彙總。

RoIAlign 對性能提升起到很大作用。

Network Architecture——
爲了證明我們方法的通用性,我們使用多種架構實例化了Mask R-CNN。

4. Experiments: Instance Segmentation

4.1. Main Results

在這裏插入圖片描述
Mask R-CNN 與 state of the art 的比較,結果如表 1 所示,可以看出,我們模型的所有實例化都優於先前 state-of-the-art 模型的 baseline 變體。

4.2. Ablation Experiments

這部分實驗用於驗證框架中一些重要成分的作用:
Architecture
從下圖可以看出,框架性能的提升源於更深的網絡和先進的設計(FPN和ResNeXt),但並非所有框架都會自動受益於更深層次的網絡。
在這裏插入圖片描述
Multinomial vs. Independent Masks
Mask R-CNN 把 mask 和 class 的預測任務分開(decouple)了,loss 爲 per-pixel sigmoid 和 binary loss。而傳統的用於語義分割的 FCN 方法將 mask 和 class 的預測任務結合(couple), loss 爲 per-pixel softmax 和 multinomial loss。

看下面的結果也可以看出,Mask R-CNN 的 sigmoid 性能更好,這表明,一旦實例被分類爲一個整體,就足以預測二進制掩碼(binary mask)而無需考慮類別,這使得模型更易於訓練。
在這裏插入圖片描述
RoIAlign
接下來評估 RoIAlign 層的功能。

與 RoIPool 相比,RoIAlign 將 AP 提升了約 3%,RoIWarp 的性能與 RoIPool相當,並且比 RoIAlign 差很多。
在這裏插入圖片描述
Mask Branch
分割是一個像素到像素的任務,我們通過 FCN 利用蒙版的空間佈局。通過比較 FCN 和普通的 MLP,可以看出 FCN 比 MLP 的 mask AP 高 2.1。
在這裏插入圖片描述

4.3. Bounding Box Detection Results

我們將 Mask R-CNN 與 COCO 數據集的 state-of-the-art 邊界框對象檢測方法進行了比較,結果在表 3。

使用 ResNet-101-FPN 的 Mask R-CNN 表現優於所有以前的 state-of- the-art 模型,包括 COCO 2016 檢測挑戰賽冠軍的 G-RMI 的單模型變體。 使用 ResNeXt-101-FPN,Mask R-CNN 可以進一步改善結果,與以前最好的單模型(Inception-ResNet-v2-TDM)相比,AP 可以提升 3%。

爲進一步比較,我們訓練了一個沒有 mask 分支的 Mask R-CNN, 由於RoIAlign,該模型的性能優於Faster R-CNN w FPN 。 另一方面,它的 AP 比Mask R-CNN 低 0.9%。 這說明,Mask R-CNN在Bounding Box Detection 上的提升僅歸因於多任務訓練。
在這裏插入圖片描述

4.4. Timing

Inference
我們訓練了一個 ResNet-101-FPN 模型,該模型在 RPN 和 Mask R-CNN 階段之間共享特徵,並遵循Faster R-CNN 的 4 步訓練。 該模型在Nvidia Tesla M40 GPU上以每張圖像195ms的速度運行。

儘管 Mask R-CNN 速度很快,但我們注意到我們的設計並未針對速度進行優化,因此可以實現更好的速度/精度權衡。
在這裏插入圖片描述

5. Mask R-CNN for Human Pose Estimation

Mask R-CNN 用於人體姿態估計。方法:將關鍵點的位置建模爲 one-hot mask,並採用 Mask R-CNN 預測 K 個Mask。

Implementation Details
把分割系統用於關鍵點時改動很小。對於實例的 K 個關鍵點中的每個關鍵點,我們的訓練目標是將one-hot m×m binary mask 中的單個像素標記爲前景。(也就是 m×m 大小的 mask 中只找關鍵點一個點)

在訓練過程中,對於每個可見的 ground-truth 關鍵點,我們將 m² -way softmax 輸出上的交叉熵損失最小化。

Main Results and Ablations
在 COCO 數據集上的關鍵點檢測結果如表 4 所示:

Mask R-CNN 的結果(62.7 AP)比使用多階段處理流水線的 COCO 2016 關鍵點檢測獲勝者高0.9,而且我們的方法更加簡單快捷。

在這裏插入圖片描述
此外,文章還提出了一個能同時預測邊界框,分割片段和關鍵點的聯合模型(多任務:目標檢測+實例分割+關鍵點檢測),從表 4 可以看出,添加分割分支(針對人員類別)可將 AP 提高到 63.1。

有關最小化的多任務學習的更多信息,請參見表5。將 mask 分支添加到 Faster R-CNN 或僅關鍵點的版本中,可以持續改善這些任務。 但是,添加關鍵點分支會稍微減少 box/mask 的 AP,這表明儘管關鍵點檢測受益於多任務訓練,但反過來並不能幫助其他任務。 儘管如此,共同學習三個任務可以使一個統一的系統有效地同時預測所有輸出。
在這裏插入圖片描述
表 6 展示的是 RoIAlign 在關鍵點檢測中的效果,可以看出,與 RoIPool 相比,RoIAlign 可以顯著改善性能,AP 增加了 4.4 。
在這裏插入圖片描述
在這裏插入圖片描述

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