【CV】Mask R-CNN:用于目标实例分割的通用框架
論文名稱:Mask R-CNN
論文下載:https://arxiv.org/abs/1703.06870
論文年份:2017
論文被引:18354(2022/05/03)
Abstract
We present a conceptually simple, flexible, and general framework for object instance segmentation. Our approach efficiently detects objects in an image while simultaneously generating a high-quality segmentation mask for each instance. The method, called Mask R-CNN, extends Faster R-CNN by adding a branch for predicting an object mask in parallel with the existing branch for bounding box recognition. Mask R-CNN is simple to train and adds only a small overhead to Faster R-CNN, running at 5 fps. Moreover , Mask R-CNN is easy to generalize to other tasks, e.g., allowing us to estimate human poses in the same framework. We show top results in all three tracks of the COCO suite of challenges, including instance segmentation, boundingbox object detection, and person keypoint detection. Without bells and whistles, Mask R-CNN outperforms all existing, single-model entries on every task, including the COCO 2016 challenge winners. We hope our simple and effective approach will serve as a solid baseline and help ease future research in instance-level recognition.
我們提出了一個(gè)概念上簡單、靈活和通用的目標(biāo)實(shí)例分割框架(object instance segmentation)。我們的方法有效地檢測圖像中的目標(biāo),同時(shí)為每個(gè)實(shí)例生成高質(zhì)量的分割掩碼(mask)。該方法稱為 Mask R-CNN,通過添加用于預(yù)測目標(biāo)掩碼的分支與用于邊界框識(shí)別的現(xiàn)有分支并行來擴(kuò)展 Faster R-CNN。 Mask R-CNN 很容易訓(xùn)練,并且只為 Faster R-CNN 增加了一點(diǎn)開銷,運(yùn)行速度為 5 fps。此外,Mask R-CNN 很容易推廣到其他任務(wù),例如,允許我們在同一框架中估計(jì)人體姿勢。我們?cè)?COCO 挑戰(zhàn)套件的所有三個(gè)軌道中展示了最佳結(jié)果,包括實(shí)例分割、邊界框目標(biāo)檢測和人物關(guān)鍵點(diǎn)檢測。沒有花里胡哨的東西,Mask R-CNN 在每項(xiàng)任務(wù)上都優(yōu)于所有現(xiàn)有的單一模型條目,包括 COCO 2016 挑戰(zhàn)賽的獲勝者。我們希望我們簡單而有效的方法將作為一個(gè)堅(jiān)實(shí)的基準(zhǔn),并有助于簡化未來在實(shí)例級(jí)識(shí)別方面的研究。代碼已在以下位置提供:https://github.com/facebookresearch/Detectron。
1. Introduction
視覺社區(qū)在短時(shí)間內(nèi)迅速改進(jìn)了目標(biāo)檢測和語義分割結(jié)果。在很大程度上,這些進(jìn)步是由強(qiáng)大的基線系統(tǒng)推動(dòng)的,例如分別用于目標(biāo)檢測和語義分割的 Fast/Faster RCNN [12, 36] 和全卷積網(wǎng)絡(luò) (FCN) [30] 框架。這些方法在概念上很直觀,提供了靈活性和魯棒性,以及快速的訓(xùn)練和推理時(shí)間。我們?cè)谶@項(xiàng)工作中的目標(biāo)是為實(shí)例分割開發(fā)一個(gè)類似的支持框架。
實(shí)例分割(Instance segmentation)具有挑戰(zhàn)性,因?yàn)樗枰_檢測圖像中的所有目標(biāo),同時(shí)還要精確分割每個(gè)實(shí)例。因此,它結(jié)合了目標(biāo)檢測的經(jīng)典計(jì)算機(jī)視覺任務(wù)中的元素,其中目標(biāo)是對(duì)單個(gè)目標(biāo)進(jìn)行分類并使用邊界框定位每個(gè)目標(biāo),以及語義分割,其中目標(biāo)是將每個(gè)像素分類為一組固定的類別而不區(qū)分目標(biāo)實(shí)例。鑒于此,人們可能會(huì)期望需要一種復(fù)雜的方法才能獲得良好的結(jié)果。然而,我們表明,一個(gè)令人驚訝的簡單、靈活和快速的系統(tǒng)可以超越先前最先進(jìn)的實(shí)例分割結(jié)果。
我們的方法稱為 Mask R-CNN,擴(kuò)展了 Faster R-CNN [36],方法是在每個(gè)感興趣區(qū)域 (Region of Interest , RoI) 上添加一個(gè)用于預(yù)測分割掩碼的分支,與用于分類和邊界框回歸的現(xiàn)有分支并行(圖 1)。掩碼分支 (mask branch) 是應(yīng)用于每個(gè) RoI 的小型 FCN,以像素到像素的方式預(yù)測分割掩碼。鑒于 Faster R-CNN 框架,Mask R-CNN 易于實(shí)現(xiàn)和訓(xùn)練,這有助于廣泛的靈活架構(gòu)設(shè)計(jì)。此外,掩碼分支僅增加了少量計(jì)算開銷,從而實(shí)現(xiàn)了快速系統(tǒng)和快速實(shí)驗(yàn)。
原則上,Mask R-CNN 是 Faster R-CNN 的直觀擴(kuò)展,但正確構(gòu)建 mask 分支對(duì)于獲得良好結(jié)果至關(guān)重要。最重要的是,Faster R-CNN 并不是為網(wǎng)絡(luò)輸入和輸出之間的像素到像素對(duì)齊(pixel-to-pixel alignment)而設(shè)計(jì)的。這在 RoIPool [18, 12](用于處理實(shí)例的事實(shí)上的核心操作)如何為特征提取執(zhí)行粗略空間量化時(shí)最為明顯。為了解決錯(cuò)位(misalignment)問題,我們提出了一個(gè)簡單的無量化層(quantization-free layer),稱為 RoIAlign,它忠實(shí)地保留了精確的空間位置。盡管看起來很小的變化,但 RoIAlign 產(chǎn)生了很大的影響:它將掩碼準(zhǔn)確率提高了 10% 到 50%,在更嚴(yán)格的定位指標(biāo)(localization metrics)下顯示出更大的收益。其次,我們發(fā)現(xiàn)解耦(decouple)掩碼和類別預(yù)測至關(guān)重要:我們獨(dú)立地為每個(gè)類別預(yù)測一個(gè)二進(jìn)制掩碼,沒有類別之間的競爭,并依靠網(wǎng)絡(luò)的 RoI 分類分支來預(yù)測類別。相比之下,FCN 通常執(zhí)行逐像素多類分類,將分割和分類結(jié)合起來,并且根據(jù)我們的實(shí)驗(yàn),實(shí)例分割效果不佳。
沒有花里胡哨的東西,Mask R-CNN 在 COCO 實(shí)例分割任務(wù) [28] 上超越了所有以前最先進(jìn)的單模型結(jié)果,包括 2016 年競賽獲勝者的精心設(shè)計(jì)的條目。作為副產(chǎn)品,我們的方法在 COCO 目標(biāo)檢測任務(wù)上也表現(xiàn)出色。在消融實(shí)驗(yàn)中,我們?cè)u(píng)估了多個(gè)基本實(shí)例,這使我們能夠證明其穩(wěn)健性并分析核心因素的影響。
我們的模型可以在 GPU 上以每幀約 200 毫秒的速度運(yùn)行,而在 COCO 上的訓(xùn)練在單個(gè) 8-GPU 機(jī)器上需要一到兩天時(shí)間。我們相信,快速的訓(xùn)練和測試速度,以及框架的靈活性和準(zhǔn)確性,將有利于并簡化未來對(duì)實(shí)例分割的研究。
最后,我們通過在 COCO 關(guān)鍵點(diǎn)數(shù)據(jù)集 [28] 上進(jìn)行人體姿態(tài)估計(jì)的任務(wù)展示了我們框架的通用性。通過將每個(gè)關(guān)鍵點(diǎn)視為 one-hot 二進(jìn)制掩碼,只需進(jìn)行最小修改,Mask R-CNN 就可以用于檢測特定于實(shí)例的姿勢。 Mask R-CNN 超越了 2016 年 COCO 關(guān)鍵點(diǎn)競賽的獲勝者,同時(shí)以 5 fps 的速度運(yùn)行。因此,Mask R-CNN 可以被更廣泛地視為實(shí)例級(jí)識(shí)別的靈活框架,并且可以很容易地?cái)U(kuò)展到更復(fù)雜的任務(wù)。
我們已經(jīng)發(fā)布了代碼以促進(jìn)未來的研究。
2. Related Work
R-CNN:基于區(qū)域的 CNN (Region-based CNN, R-CNN) 方法 [13] 進(jìn)行邊界框目標(biāo)檢測是關(guān)注可管理數(shù)量的候選目標(biāo)區(qū)域 [42, 20] 并在每個(gè) RoI 獨(dú)立評(píng)估卷積網(wǎng)絡(luò) [25, 24]。
-
R-CNN 被擴(kuò)展 [18, 12] 以允許使用 RoIPool 在特征圖上處理 RoI,從而實(shí)現(xiàn)更快的速度和更好的準(zhǔn)確性。
-
Faster R-CNN [36] 通過使用區(qū)域建議網(wǎng)絡(luò) (RPN) 學(xué)習(xí)注意機(jī)制來推進(jìn)這一流。 Faster R-CNN 對(duì)許多后續(xù)改進(jìn)(例如 [38、27、21])具有靈活性和魯棒性,并且是當(dāng)前多個(gè)基準(zhǔn)測試中的領(lǐng)先框架。
實(shí)例分割(Instance Segmentation):在 RCNN 的有效性驅(qū)動(dòng)下,許多實(shí)例分割方法都基于分割提議(segment proposals)。
-
早期的方法 [13, 15, 16, 9] 采用自下而上的分段 [42, 2]。
-
DeepMask [33] 和后續(xù)作品 [34, 8] 學(xué)習(xí)提出候選片段(propose segment candidates),然后由 Fast R-CNN 分類。
-
在這些方法中,分割先于識(shí)別,這是緩慢且不太準(zhǔn)確的。同樣,[10] 提出了一個(gè)復(fù)雜的多階段級(jí)聯(lián)(multiple-stage cascade),從邊界框建議中預(yù)測分段建議,然后進(jìn)行分類。
相反,我們的方法基于掩碼和類標(biāo)簽的并行預(yù)測,更簡單、更靈活。
最近,[26] 將 [8] 中的分割提議系統(tǒng)(segment proposal system)和 [11] 中的目標(biāo)檢測系統(tǒng)結(jié)合起來,用于“全卷積實(shí)例分割”(fully convolutional instance segmentation, FCIS)。[8, 11, 26] 中的共同思想是全卷積地預(yù)測一組位置敏感的輸出通道。這些通道同時(shí)處理目標(biāo)類、框和掩碼,使系統(tǒng)運(yùn)行速度更快。但是 FCIS 在重疊實(shí)例上表現(xiàn)出系統(tǒng)錯(cuò)誤并產(chǎn)生虛假邊緣(圖 6),表明它受到分割實(shí)例的基本困難的挑戰(zhàn)。
實(shí)例分割的另一類解決方案 [23, 4, 3, 29] 是由語義分割(semantic segmentation)的成功驅(qū)動(dòng)的。從每個(gè)像素的分類結(jié)果(例如,FCN 輸出)開始,這些方法試圖將同一類別的像素切割成不同的實(shí)例。與這些方法的分割優(yōu)先策略相比,Mask R-CNN 基于實(shí)例優(yōu)先策略。我們預(yù)計(jì)未來將研究更深入地整合這兩種策略。
3. Mask R-CNN
Mask R-CNN 在概念上很簡單:Faster R-CNN 對(duì)每個(gè)候選目標(biāo)有兩個(gè)輸出,一個(gè)類標(biāo)簽和一個(gè)邊界框偏移量;為此,我們添加了輸出目標(biāo)掩碼的第三個(gè)分支。因此,Mask R-CNN 是一個(gè)自然而直觀的想法。但是額外的掩碼輸出與類和框輸出不同,需要提取更精細(xì)的目標(biāo)空間布局。接下來,我們介紹 Mask R-CNN 的關(guān)鍵元素,包括像素到像素對(duì)齊(pixel-to-pixel alignment),這是 Fast/Faster R-CNN 的主要缺失部分。
Faster R-CNN:我們首先簡要回顧 Faster R-CNN 檢測器 [36]。 Faster R-CNN 由兩個(gè)階段組成。
-
第一階段稱為區(qū)域提議網(wǎng)絡(luò)(RPN),提出候選目標(biāo)邊界框。
-
第二階段本質(zhì)上是 Fast R-CNN [12],使用 RoIPool 從每個(gè)候選框中提取特征,并執(zhí)行分類和邊界框回歸。
兩個(gè)階段使用的特征可以共享以加快推理速度。我們推薦讀者參考 [21],以了解 Faster R-CNN 和其他框架之間的最新、全面的比較。
Mask R-CNN:Mask R-CNN 采用相同的兩階段過程,
- 具有相同的第一階段(即 RPN)。
- 在第二階段,在預(yù)測類和框偏移的同時(shí),Mask R-CNN 還為每個(gè) RoI 輸出一個(gè)二進(jìn)制掩碼。這與最近的系統(tǒng)形成對(duì)比,其中分類取決于掩碼預(yù)測(例如 [33、10、26])。
我們的方法遵循了 Fast R-CNN [12] 的精神,它并行應(yīng)用邊界框分類和回歸(結(jié)果在很大程度上簡化了原始 R-CNN [13] 的多階段管道)。
正式地,在訓(xùn)練期間,我們將每個(gè)采樣 RoI 上的多任務(wù)損失定義為 L = Lcls + Lbox + Lmask。
- 分類損失 Lcls 和邊界框損失 Lbox 與 [12] 中定義的相同。
- 掩碼分支對(duì)每個(gè) RoI 都有一個(gè) Km2Km^2Km2 維輸出,它對(duì)分辨率為 m × m 的 K 個(gè)二進(jìn)制掩碼進(jìn)行編碼,K 個(gè)類中的每一個(gè)對(duì)應(yīng)一個(gè)。為此,我們應(yīng)用每像素 sigmoid,并將 Lmask 定義為平均二元交叉熵?fù)p失。對(duì)于與 ground-truth 類 k 相關(guān)的 RoI,Lmask 僅在第 k 個(gè) mask 上定義(其他 mask 輸出對(duì)損失沒有貢獻(xiàn))。
我們對(duì) Lmask 的定義允許網(wǎng)絡(luò)為每個(gè)類生成掩碼,而不會(huì)在類之間進(jìn)行競爭;我們依靠專用的分類分支來預(yù)測用于選擇輸出掩碼的類標(biāo)簽。這將掩碼和類別預(yù)測解耦。這與將 FCN [30] 應(yīng)用于語義分割時(shí)的常見做法不同,FCN通常使用每像素 softmax 和多項(xiàng)交叉熵?fù)p失。在這種情況下,不同類別的掩碼會(huì)相互競爭;在我們的例子中,對(duì)于每像素 sigmoid 和二元損失,它們不會(huì)。我們通過實(shí)驗(yàn)表明,該公式是獲得良好實(shí)例分割結(jié)果的關(guān)鍵。
掩碼表示:掩碼對(duì)輸入目標(biāo)的空間布局進(jìn)行編碼。因此,與通過全連接(fc)層不可避免地折疊成短輸出向量的類標(biāo)簽或框偏移(box offsets)不同,提取掩碼的空間結(jié)構(gòu)可以通過卷積提供的像素到像素的對(duì)應(yīng)關(guān)系自然地解決。
具體來說,我們使用 FCN [30] 從每個(gè) RoI 預(yù)測一個(gè) m × m 掩碼。這允許掩碼分支中的每一層保持明確的 m × m 目標(biāo)空間布局,而不會(huì)將其折疊成缺乏空間維度的向量表示。與以前使用 fc 層進(jìn)行掩碼預(yù)測的方法不同 [33、34、10],我們的完全卷積表示需要更少的參數(shù),并且如實(shí)驗(yàn)所示更準(zhǔn)確。
這種像素到像素的行為要求我們的 RoI 特征(它們本身就是小特征圖)能夠很好地對(duì)齊,以忠實(shí)地保留顯式的每像素空間對(duì)應(yīng)關(guān)系。這促使我們開發(fā)以下 RoIAlign 層,該層在掩碼預(yù)測中起關(guān)鍵作用。
RoIAlign:RoIPool [12] 是一種標(biāo)準(zhǔn)操作,用于從每個(gè) RoI 中提取一個(gè)小的特征圖(例如,7×7)。 RoIPool 首先將一個(gè)浮點(diǎn)數(shù) RoI 量化為特征圖的離散粒度,然后將這個(gè)量化的 RoI 細(xì)分為空間 bin,這些空間 bin 本身也進(jìn)行了量化,最后聚合每個(gè) bin 覆蓋的特征值(通常通過最大池化)。例如,通過計(jì)算 [x/16] 在連續(xù)坐標(biāo) x 上執(zhí)行量化,其中 16 是特征圖步幅,[·] 是舍入;同樣,在劃分為 bin(例如,7×7)時(shí)執(zhí)行量化。這些量化引入了 RoI 和提取的特征之間的錯(cuò)位(misalignments)。雖然這可能不會(huì)影響分類,分類對(duì)小翻譯很穩(wěn)健,但它對(duì)預(yù)測像素精確的掩碼有很大的負(fù)面影響。
圖 3. RoIAlign:虛線網(wǎng)格表示特征圖,實(shí)線表示 RoI(在本例中為 2×2 箱),點(diǎn)表示每個(gè)箱中的 4 個(gè)采樣點(diǎn)。 RoIAlign 通過特征圖上附近網(wǎng)格點(diǎn)的雙線性插值計(jì)算每個(gè)采樣點(diǎn)的值。不對(duì)任何涉及 RoI、其 bin 或采樣點(diǎn)的坐標(biāo)執(zhí)行量化。
為了解決這個(gè)問題,我們提出了一個(gè) RoIAlign 層,它消除了 RoIPool 的苛刻量化(harsh quantization),將提取的特征與輸入正確對(duì)齊。我們提出的改變很簡單:我們避免對(duì) RoI 邊界或 bin 進(jìn)行任何量化(即,我們使用 x/16 而不是 [x/16])。我們使用雙線性插值(bilinear interpolation) [22] 來計(jì)算每個(gè) RoI bin 中四個(gè)定期采樣位置的輸入特征的精確值,并聚合結(jié)果(使用最大值或平均值),詳見圖 3。我們注意到,只要不執(zhí)行量化,結(jié)果對(duì)確切的采樣位置或采樣的點(diǎn)數(shù)不敏感。
如第 4.2 節(jié)所示,RoIAlign 帶來了巨大的改進(jìn)。我們還比較了 [10] 中提出的 RoIWarp 操作。與 RoIAlign 不同,RoIWarp 忽略了對(duì)齊問題,并在 [10] 中實(shí)現(xiàn)為像 RoIPool 一樣量化 RoI。因此,即使 RoIWarp 也采用了由 [22] 推動(dòng)的雙線性重采樣,它的性能與實(shí)驗(yàn)所示的 RoIPool 相當(dāng)(表 2c 中的更多細(xì)節(jié)),證明了對(duì)齊的關(guān)鍵作用。
網(wǎng)絡(luò)架構(gòu):為了展示我們方法的通用性,我們用多種架構(gòu)實(shí)例化了 Mask R-CNN。為清楚起見,我們區(qū)分:
i)用于對(duì)整個(gè)圖像進(jìn)行特征提取的卷積骨干架構(gòu)
ii)用于邊界框識(shí)別(分類和回歸)和掩碼預(yù)測的網(wǎng)絡(luò)頭,分別應(yīng)用于每個(gè) RoI
我們使用命名網(wǎng)絡(luò)深度特征(network-depth-features)來表示骨干架構(gòu)。我們?cè)u(píng)估深度為 50 或 101 層的 ResNet [19] 和 ResNeXt [45] 網(wǎng)絡(luò)。使用 ResNets [19] 的 Faster R-CNN 的原始實(shí)現(xiàn)從第 4 階段的最終卷積層中提取特征,我們稱之為 C4。例如,具有 ResNet-50 的主干由 ResNet-50-C4 表示。這是 [19, 10, 21, 39] 中使用的常見選擇。
我們還探索了 [27] 最近提出的另一個(gè)更有效的骨干網(wǎng)絡(luò),稱為特征金字塔網(wǎng)絡(luò)(FPN)。 FPN 使用帶有橫向連接的自上而下的架構(gòu),從單尺度輸入構(gòu)建網(wǎng)絡(luò)內(nèi)特征金字塔。具有 FPN 主干的 Faster R-CNN 根據(jù)其規(guī)模從特征金字塔的不同級(jí)別提取 RoI 特征,但除此之外,該方法的其余部分類似于 vanilla ResNet。使用 ResNet-FPN 骨干網(wǎng)和 Mask RCNN 進(jìn)行特征提取可以在準(zhǔn)確度和速度上獲得出色的提升。有關(guān) FPN 的更多詳細(xì)信息,我們請(qǐng)讀者參考 [27]。
圖 4. 頭部架構(gòu):我們擴(kuò)展了兩個(gè)現(xiàn)有的 Faster RCNN 頭部 [19, 27]。左/右面板分別顯示了來自 [19] 和 [27] 的 ResNet C4 和 FPN 主干的頭部,其中添加了掩碼分支。數(shù)字表示空間分辨率和通道。箭頭表示可以從上下文推斷的 conv、deconv 或 fc 層(conv 保留空間維度,而 deconv 增加它)。所有的 conv 都是 3×3,除了輸出 conv 是 1×1,deconv 是 2×2,步長為 2,我們?cè)陔[藏層中使用 ReLU [31]。左:“res5”表示 ResNet 的第五階段,為簡單起見,我們對(duì)其進(jìn)行了更改,以便第一個(gè) conv 在 7×7 的 RoI 上運(yùn)行,步幅為 1(而不是 [19] 中的 14×14 / 步幅 2)。右圖:“×4”表示四個(gè)連續(xù)轉(zhuǎn)換的堆棧。
對(duì)于網(wǎng)絡(luò)頭,我們密切遵循之前工作中提出的架構(gòu),我們?cè)谄渲刑砑恿艘粋€(gè)完全卷積的掩碼預(yù)測分支。具體來說,我們從 ResNet [19] 和 FPN [27] 論文中擴(kuò)展了 Faster R-CNN box head。詳細(xì)信息如圖 4 所示。ResNet-C4 主干上的頭部包括 ResNet 的第 5 階段(即 9 層“res5”[19]),這是計(jì)算密集型的。對(duì)于 FPN,主干已經(jīng)包含 res5,因此允許使用更少過濾器的更高效的部。
我們注意到我們的掩碼分支具有簡單的結(jié)構(gòu)。更復(fù)雜的設(shè)計(jì)有可能提高性能,但不是這項(xiàng)工作的重點(diǎn)。
3.1. Implementation Details
我們根據(jù)現(xiàn)有的 Fast/Faster R-CNN 工作 [12、36、27] 設(shè)置超參數(shù)。盡管這些決策是在原始論文 [12、36、27] 中針對(duì)目標(biāo)檢測做出的,但我們發(fā)現(xiàn)我們的實(shí)例分割系統(tǒng)對(duì)它們來說是穩(wěn)健的。
訓(xùn)練(Traning):與 Fast R-CNN 一樣,如果 RoI 的 IoU 與 ground-truth box 至少為 0.5,則認(rèn)為 RoI 為正,否則為負(fù)。掩碼損失 Lmask 僅在正 RoI 上定義。掩碼目標(biāo)是 RoI 與其關(guān)聯(lián)的真實(shí)掩碼之間的交集。
我們采用以圖像為中心的訓(xùn)練[12]。圖像被調(diào)整大小,使其比例(較短的邊緣)為 800 像素 [27]。每個(gè) mini-batch 每個(gè) GPU 有 2 個(gè)圖像,每個(gè)圖像有 N 個(gè)采樣的 RoI,正負(fù)比為 1:3 [12]。對(duì)于 C4 主干網(wǎng)絡(luò),N 為 64(如 [12, 36] 中),對(duì)于 FPN 為 512(如 [27] 中)。我們在 8 個(gè) GPU(因此有效的 minibatch 大小為 16)上訓(xùn)練 160k 次迭代,學(xué)習(xí)率為 0.02,在 120k 次迭代時(shí)降低了 10。我們使用 0.0001 的權(quán)重衰減和 0.9 的動(dòng)量。使用 ResNeXt [45],我們使用每個(gè) GPU 的 1 張圖像和相同的迭代次數(shù)進(jìn)行訓(xùn)練,起始學(xué)習(xí)率為 0.01。
RPN 錨點(diǎn)跨越 5 個(gè)尺度和 3 個(gè)縱橫比(aspect ratios),遵循 [27]。為了方便消融,RPN 是單獨(dú)訓(xùn)練的,不與 Mask R-CNN 共享特征,除非另有說明。對(duì)于本文中的每個(gè)條目,RPN 和 Mask R-CNN 具有相同的主干,因此它們是可共享的。
推斷(Inference):在測試時(shí),C4 骨干網(wǎng)的提案編號(hào)為 300(如 [36] 中),FPN 為 1000(如 [27] 中)。我們?cè)谶@些提議上運(yùn)行框預(yù)測分支,然后是非最大抑制(non-maximum suppression) [14]。然后將掩碼分支應(yīng)用于得分最高的 100 個(gè)檢測框。盡管這與訓(xùn)練中使用的并行計(jì)算不同,但它加速了推理并提高了準(zhǔn)確性(由于使用了更少、更準(zhǔn)確的 RoI)。mask 分支可以為每個(gè) RoI 預(yù)測 K 個(gè) mask,但我們只使用第 k 個(gè) mask,其中 k 是分類分支預(yù)測的類。然后將 m×m 浮點(diǎn)數(shù)掩碼輸出調(diào)整為 RoI 大小,并以 0.5 的閾值進(jìn)行二值化。
請(qǐng)注意,由于我們只計(jì)算前 100 個(gè)檢測框上的掩碼,Mask R-CNN 為其 Faster R-CNN 對(duì)應(yīng)物增加了少量開銷(例如,在典型模型上約為 20%)。
4. Experiments: Instance Segmentation
我們對(duì) Mask R-CNN 與最先進(jìn)的技術(shù)進(jìn)行了徹底的比較,并對(duì) COCO 數(shù)據(jù)集 [28] 進(jìn)行了全面的消融。我們報(bào)告標(biāo)準(zhǔn) COCO 指標(biāo),包括 AP(IoU 閾值的平均值)、AP50、AP75 和 APS、APM、APL(不同尺度的 AP)。除非另有說明,否則 AP 正在使用掩碼 IoU 進(jìn)行評(píng)估。與之前的工作 [5, 27] 一樣,我們使用 80k 訓(xùn)練圖像和 35k val 圖像子集 (trainval35k) 的聯(lián)合進(jìn)行訓(xùn)練,并在剩余的 5k val 圖像 (minival) 上報(bào)告消融。我們還報(bào)告了 test-dev [28] 的結(jié)果。
4.1. Main Results
我們將 Mask R-CNN 與表 1 中實(shí)例分割中最先進(jìn)的方法進(jìn)行了比較。我們模型的所有實(shí)例都優(yōu)于先前最先進(jìn)模型的基線變體。這包括 MNC [10] 和 FCIS [26],分別是 COCO 2015 和 2016 細(xì)分挑戰(zhàn)賽的獲勝者。沒有花里胡哨的東西,帶有 ResNet-101-FPN 主干的 Mask R-CNN 優(yōu)于 FCIS+++ [26],其中包括多尺度訓(xùn)練/測試、水平翻轉(zhuǎn)測試和在線硬示例挖掘 (OHEM) [38]。雖然超出了這項(xiàng)工作的范圍,但我們希望許多這樣的改進(jìn)適用于我們。
Mask R-CNN 輸出在圖 2 和圖 5 中可視化。即使在具有挑戰(zhàn)性的條件下,Mask R-CNN 也能取得良好的效果。在圖 6 中,我們比較了我們的 Mask R-CNN 基線和 FCIS+++ [26]。 FCIS+++ 在重疊實(shí)例上表現(xiàn)出系統(tǒng)性偽影(systematic artifacts),這表明它受到實(shí)例分割基本困難的挑戰(zhàn)。 Mask R-CNN 沒有顯示出這樣的偽影。
4.2. Ablation Experiments
我們運(yùn)行了許多消融來分析 Mask R-CNN。結(jié)果如表 2 所示,接下來將詳細(xì)討論。
架構(gòu):表 2a 顯示了具有各種主干的 Mask R-CNN。它受益于更深層次的網(wǎng)絡(luò)(50 對(duì) 101)和先進(jìn)的設(shè)計(jì),包括 FPN 和 ResNeXt。我們注意到,并非所有框架都會(huì)自動(dòng)受益于更深或更高級(jí)的網(wǎng)絡(luò)(參見 [21] 中的基準(zhǔn)測試)。
多項(xiàng)式與獨(dú)立掩碼:掩碼 R-CNN 將掩碼和類預(yù)測解耦:由于現(xiàn)有的框分支預(yù)測類標(biāo)簽,我們?yōu)槊總€(gè)類生成一個(gè)掩碼,而不會(huì)在類之間進(jìn)行競爭(通過逐像素 sigmoid 和二元損失)。在表 2b 中,我們將其與使用每像素 softmax 和多項(xiàng)式損失(如 FCN [30] 中常用的)進(jìn)行比較。這種替代方案將掩碼和類別預(yù)測的任務(wù)結(jié)合起來,并導(dǎo)致掩碼 AP 的嚴(yán)重?fù)p失(5.5 分)。這表明,一旦實(shí)例被分類為一個(gè)整體(通過框分支),就足以預(yù)測二進(jìn)制掩碼而無需考慮類別,這使得模型更容易訓(xùn)練。
Class-Specific vs. Class-Agnostic Masks:我們的默認(rèn)實(shí)例預(yù)測類特定掩碼,即每個(gè)類一個(gè) m×m 掩碼。有趣的是,具有類別不可知掩碼的 Mask R-CNN(即預(yù)測單個(gè) m×m 輸出而不管類別)幾乎同樣有效:它具有 29.7 的掩碼 AP,而 ResNet-50-C4 上的特定類別對(duì)應(yīng)物的掩碼 AP 為 30.3。這進(jìn)一步突出了我們方法中的分工,該方法在很大程度上分離了分類和分割。
RoIAlign:我們提出的 RoIAlign 層的評(píng)估如表 2c 所示。在這個(gè)實(shí)驗(yàn)中,我們使用 ResNet50-C4 主干,其步長為 16。RoIAlign 比 RoIPool 提高了大約 3 個(gè)點(diǎn)的 AP,其中大部分增益來自高 IoU (AP75)。 RoIAlign 對(duì)最大/平均池不敏感;我們?cè)诒疚牡钠溆嗖糠质褂闷骄?/strong>。
此外,我們與同樣采用雙線性采樣的 MNC [10] 中提出的 RoIWarp 進(jìn)行了比較。如第 3 節(jié)所述,RoIWarp 仍然量化了 RoI,失去了與輸入的對(duì)齊。從表 2c 中可以看出,RoIWarp 的性能與 RoIPool 相當(dāng),但比 RoIAlign 差得多。這突出表明正確對(duì)齊是關(guān)鍵。
我們還使用 ResNet-50-C5 主干評(píng)估 RoIAlign,其步幅更大,為 32 像素。我們使用與圖 4(右)相同的頭,因?yàn)?res5 頭不適用。表 2d 顯示 RoIAlign 將 mask AP 提高了 7.3 個(gè)點(diǎn),將 mask AP75 提高了 10.5 個(gè)點(diǎn)(相對(duì)提高了 50%)。此外,我們注意到使用 RoIAlign,使用 stride-32 C5 特征(30.9 AP)比使用 stride-16 C4 特征(30.3 AP,表 2c)更準(zhǔn)確。 RoIAlign 在很大程度上解決了使用大步長特征進(jìn)行檢測和分割的長期挑戰(zhàn)。
最后,RoIAlign 在與 FPN 一起使用時(shí)顯示了 1.5 mask AP 和 0.5 box AP 的增益,FPN 具有更精細(xì)的多級(jí)步幅。對(duì)于需要更精細(xì)對(duì)齊的關(guān)鍵點(diǎn)檢測,即使使用 FPN,RoIAlign 也顯示出很大的增益(表 6)。
掩碼分支:分割是一個(gè)像素到像素的任務(wù),我們通過使用 FCN 來利用掩碼的空間布局。在表 2e 中,我們使用 ResNet-50-FPN 主干比較了多層感知器 (MLP) 和 FCN。與 MLP 相比,使用 FCN 可提供 2.1 掩碼 AP 增益。我們注意到我們選擇了這個(gè)主干,以便 FCN 頭部的卷積層沒有預(yù)先訓(xùn)練,以便與 MLP 進(jìn)行公平比較。
4.3. Bounding Box Detection Results
我們將 Mask R-CNN 與表 3 中最先進(jìn)的 COCO 邊界框目標(biāo)檢測進(jìn)行了比較。對(duì)于這個(gè)結(jié)果,即使訓(xùn)練了完整的 Mask R-CNN 模型,也只使用了分類和框輸出推理(掩碼輸出被忽略)。使用 ResNet-101FPN 的 Mask R-CNN 優(yōu)于所有先前最先進(jìn)模型的基本變體,包括 GRMI [21] 的單模型變體,它是 COCO 2016 檢測挑戰(zhàn)賽的獲勝者。使用 ResNeXt-101-FPN,Mask R-CNN 進(jìn)一步改進(jìn)了結(jié)果,與 [39](使用 Inception-ResNet-v2-TDM)的最佳先前單個(gè)模型條目相比,框 AP 的邊距為 3.0 點(diǎn)。
作為進(jìn)一步的比較,我們訓(xùn)練了一個(gè)版本的 Mask R-CNN,但沒有掩碼分支,在表 3 中用“Faster R-CNN, RoIAlign”表示。由于 RoIAlign,該模型的性能優(yōu)于 [27] 中提出的模型。另一方面,它比 Mask R-CNN 低 0.9 點(diǎn) box AP。因此,Mask R-CNN 在框檢測方面的差距完全是由于多任務(wù)訓(xùn)練的好處。
最后,我們注意到 Mask R-CNN 在其 mask 和 box AP 之間獲得了一個(gè)小的差距:例如,在 37.1(mask,表 1)和 39.8(box,表 3)之間有 2.7 個(gè)點(diǎn)。這表明我們的方法在很大程度上縮小了目標(biāo)檢測和更具挑戰(zhàn)性的實(shí)例分割任務(wù)之間的差距。
4.4. Timing
推理:我們訓(xùn)練了一個(gè) ResNet-101-FPN 模型,該模型在 RPN 和 Mask R-CNN 階段之間共享特征,遵循 Faster R-CNN [36] 的 4 步訓(xùn)練。該模型在 Nvidia Tesla M40 GPU 上以每張圖像 195 毫秒的速度運(yùn)行(加上將輸出大小調(diào)整為原始分辨率的 15 毫秒 CPU 時(shí)間),并且在統(tǒng)計(jì)上實(shí)現(xiàn)了與非共享模型相同的掩碼 AP。我們還報(bào)告說,ResNet-101-C4 變體需要 ~400 毫秒,因?yàn)樗哂休^重的 box head(圖 4),因此我們不建議在實(shí)踐中使用 C4 變體。
盡管 Mask R-CNN 速度很快,但我們注意到我們的設(shè)計(jì)并未針對(duì)速度進(jìn)行優(yōu)化,并且可以實(shí)現(xiàn)更好的速度/準(zhǔn)確性權(quán)衡 [21],例如,通過改變圖像大小和提議數(shù)量,這超出了本文的范圍。
訓(xùn)練:Mask R-CNN 訓(xùn)練也很快。在 COCO trainval35k 上使用 ResNet-50-FPN 進(jìn)行訓(xùn)練在我們同步的 8-GPU 實(shí)現(xiàn)中需要 32 小時(shí)(每 16 張圖像小批量 0.72 秒),而使用 ResNet-101-FPN 需要 44 小時(shí)。事實(shí)上,在訓(xùn)練集上訓(xùn)練時(shí),可以在不到一天的時(shí)間內(nèi)完成快速原型制作。我們希望如此快速的訓(xùn)練能夠消除這一領(lǐng)域的主要障礙,并鼓勵(lì)更多人對(duì)這一具有挑戰(zhàn)性的課題進(jìn)行研究。
5. Mask R-CNN for Human Pose Estimation
我們的框架可以很容易地?cái)U(kuò)展到人體姿態(tài)估計(jì)。我們將關(guān)鍵點(diǎn)的位置建模為 one-hot 掩碼,并采用 Mask R-CNN 預(yù)測 K 個(gè)掩碼,K 個(gè)關(guān)鍵點(diǎn)類型(例如左肩、右肘)中的每一個(gè)對(duì)應(yīng)一個(gè)掩碼。此任務(wù)有助于展示 Mask R-CNN 的靈活性。
我們注意到,我們的系統(tǒng)利用了人體姿勢的最小領(lǐng)域知識(shí),因?yàn)閷?shí)驗(yàn)主要是為了證明 Mask R-CNN 框架的通用性。我們期望領(lǐng)域知識(shí)(例如,modeling structures [6])將補(bǔ)充我們的簡單方法。
實(shí)施細(xì)節(jié):在為關(guān)鍵點(diǎn)調(diào)整分割系統(tǒng)時(shí),我們對(duì)分割系統(tǒng)進(jìn)行了微小的修改。對(duì)于一個(gè)實(shí)例的 K 個(gè)關(guān)鍵點(diǎn)中的每一個(gè),訓(xùn)練目標(biāo)是一個(gè)單一的 m × m 二進(jìn)制掩碼,其中只有一個(gè)像素被標(biāo)記為前景(foreground)。在訓(xùn)練過程中,對(duì)于每個(gè)可見的 ground-truth 關(guān)鍵點(diǎn),我們最小化 m2-way softmax 輸出的交叉熵?fù)p失(這鼓勵(lì)檢測單個(gè)點(diǎn))。我們注意到,在實(shí)例分割中,K 個(gè)關(guān)鍵點(diǎn)仍然是獨(dú)立處理的。
我們采用 ResNet-FPN 變體,關(guān)鍵點(diǎn)頭架構(gòu)類似于圖 4(右)。關(guān)鍵點(diǎn)頭由八個(gè) 3×3 512-d 卷積層的堆棧組成,然后是一個(gè)反卷積層和 2× 雙線性放大,產(chǎn)生 56×56 的輸出分辨率。我們發(fā)現(xiàn)關(guān)鍵點(diǎn)級(jí)別的定位精度需要相對(duì)高分辨率的輸出(與掩碼相比)。
模型在所有包含注釋關(guān)鍵點(diǎn)的 COCO trainval35k 圖像上進(jìn)行訓(xùn)練。為了減少過擬合,由于該訓(xùn)練集較小,我們使用從 [640, 800] 像素中隨機(jī)采樣的圖像比例進(jìn)行訓(xùn)練;推理是在 800 像素的單一尺度上進(jìn)行的。我們訓(xùn)練 90k 次迭代,從 0.02 的學(xué)習(xí)率開始,在 60k 和 80k 次迭代時(shí)將其減少 10。我們使用閾值為 0.5 的邊界框 NMS。其他細(xì)節(jié)與§3.1 相同。
主要結(jié)果和消融:我們?cè)u(píng)估人員關(guān)鍵點(diǎn) AP (APkp) 并使用 ResNet-50-FPN 主干進(jìn)行實(shí)驗(yàn);更多的主干將在附錄中研究。表 4 顯示我們的結(jié)果(62.7 APkp)比使用多級(jí)處理管道的 COCO 2016 關(guān)鍵點(diǎn)檢測獲勝者 [6] 高 0.9 個(gè)點(diǎn)(參見表 4 的標(biāo)題)。我們的方法相當(dāng)簡單和快速。更重要的是,我們有一個(gè)統(tǒng)一的模型,可以同時(shí)預(yù)測框、段和關(guān)鍵點(diǎn),同時(shí)以 5 fps 運(yùn)行。添加一個(gè)段分支(針對(duì)人員類別)在 test-dev 上將 APkp 提高到 63.1(表 4)。更多關(guān)于 minival 的多任務(wù)學(xué)習(xí)的消融在表 5 中。將掩碼分支添加到僅框(即 Faster R-CNN)或僅關(guān)鍵點(diǎn)版本始終可以改進(jìn)這些任務(wù)。然而,添加關(guān)鍵點(diǎn)分支會(huì)略微減少框/掩碼 AP,這表明雖然關(guān)鍵點(diǎn)檢測受益于多任務(wù)訓(xùn)練,但它反過來并不能幫助其他任務(wù)。然而,聯(lián)合學(xué)習(xí)所有三個(gè)任務(wù)使統(tǒng)一系統(tǒng)能夠同時(shí)有效地預(yù)測所有輸出(圖 7)。
我們還研究了 RoIAlign 對(duì)關(guān)鍵點(diǎn)檢測的影響(表 6)。盡管這個(gè) ResNet-50-FPN 主干具有更精細(xì)的步幅(例如,在最好的水平上有 4 個(gè)像素),但 RoIAlign 仍然顯示出比 RoIPool 有顯著改進(jìn),并將 APkp 提高了 4.4 個(gè)百分點(diǎn)。這是因?yàn)?strong>關(guān)鍵點(diǎn)檢測對(duì)定位精度更敏感。這再次表明對(duì)齊對(duì)于像素級(jí)定位至關(guān)重要,包括掩碼和關(guān)鍵點(diǎn)。
鑒于 Mask R-CNN 在提取對(duì)象邊界框、掩碼和關(guān)鍵點(diǎn)方面的有效性,我們希望它成為其他實(shí)例級(jí)任務(wù)的有效框架。
Appendix A: Experiments on Cityscapes
我們進(jìn)一步報(bào)告了 Cityscapes [7] 數(shù)據(jù)集上的實(shí)例分割結(jié)果。該數(shù)據(jù)集具有 2975 個(gè)訓(xùn)練、500 個(gè)驗(yàn)證和 1525 個(gè)測試圖像的精細(xì)注釋。它有 20k 個(gè)沒有實(shí)例注釋的粗訓(xùn)練圖像,我們不使用這些圖像。所有圖像均為 2048×1024 像素。實(shí)例分割任務(wù)涉及 8 個(gè)目標(biāo)類別,
此任務(wù)上的實(shí)例分割性能由 COCO 樣式的掩碼 AP 測量(平均超過 IoU 閾值);還報(bào)告了 AP50(即 IoU 為 0.5 的掩碼 AP)。
Appendix B: Enhanced Results on COCO
作為一個(gè)通用框架,Mask R-CNN 與為檢測/分割開發(fā)的互補(bǔ)技術(shù)兼容,包括對(duì) Fast/Faster R-CNN 和 FCN 的改進(jìn)。在本附錄中,我們描述了一些改進(jìn)原始結(jié)果的技術(shù)。由于其通用性和靈活性,Mask R-CNN 在 COCO 2017 實(shí)例分割競賽中被三個(gè)獲勝團(tuán)隊(duì)用作框架,均顯著優(yōu)于之前的最先進(jìn)技術(shù)。
Instance Segmentation and Object Detection
Keypoint Detection
總結(jié)
以上是生活随笔為你收集整理的【CV】Mask R-CNN:用于目标实例分割的通用框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cartographer 源码解析 (五
- 下一篇: linux服务器清除cdn,Linux服