BlendMask 論文學習

Abstract

實例分割是計算機視覺中非常基礎的任務。近來,全卷積實例分割方法得到了更多的注意力,因爲它們要比雙階段的方法(如Mask R-CNN)更簡單、高效。到目前爲止,在計算複雜度相同的情況下,幾乎所有的方法在掩碼準確率上都落後於雙階段的 Mask R-CNN 方法,給了很大的提升空間。本文將實例級別信息和較低細粒度的語義信息結合,提升了掩碼的預測。本文主要貢獻就是,提出了一個混合模塊,它受到自上而下實例分割方法和自下而上方法的啓發。BlendMask 僅用少數幾個通道,就能有效地預測密集的逐像素點的位置-敏感實例特徵,只用一個卷積層就可以學習每個實例的注意力圖,因此推理時非常快速。BlendMask 可以很容易地加到 state of the art 的單階段檢測器中,並且在性能上超過 Mask R-CNN,速度要快20%20\%。在單張1080ti顯卡上,BlendMask 的一個輕量級版本取得的mAP 是34.2%34.2\%,速度爲25FPS。由於其簡潔性和有效性,BlendMask 能夠作爲一個簡單而有效的基線模型,供實例預測任務使用。

1. Introduction

表現最優的目標檢測器和分割器都延續了一個雙階段流程。它們由一個全卷積網絡、RPN構成,在興趣區域RoI上進行密集的預測。人們使用了一系列的輕量級網絡(head)來重新對齊 RoI 的特徵,進行預測。生成掩碼的質量和速度與掩碼 head 的結構息息相關。此外,各獨立的 heads 很難與相關的任務(如語義分割任務)來共享特徵,造成網絡結構優化很困難。

最近一些單階段目標檢測方法如FCOS證明了它們可以在準確率上超過雙階段方法。在實例分割任務上也能進行單階段檢測就很誘人了:1)僅有卷積操作的模型更簡單、更容易進行跨平臺部署,2)一個統一的框架可以爲多任務網絡結構的優化提供便利和靈活度。

密集的實例分割方法可以追溯到 DeepMask,它是一個自上而下的方法,通過滑動窗的方式產生密集的實例掩碼。在每個空間位置上,掩碼的特徵表示被編碼爲一個一維的向量。儘管結構上很簡單,但在訓練過程中存在多個障礙,使其無法取得優異的性能:1)特徵和掩碼之間的局部一致性丟失了;2)特徵表示是冗餘的,因爲每個前景特徵都重複編碼了掩碼信息;3)卷積中的下采樣造成位置信息退化。

Dai 等人[8] 探索了第一個問題,他們嘗試通過保留多個位置敏感圖,保留局部一致性。Chen 等人[7] 研究了這個想法,針對目標實例掩碼上的每個位置,提出了一個密集的表徵對齊方法。但是,這個方法爲了對齊而犧牲了表徵的效率,造成第二個問題難以解決。第三個問題造成下采樣過多的特徵無法提供實例的細節信息。

鑑於這些難點,另一些人提出了一個自下而上的策略。這些方法生成大量的逐像素點的 embedding 特徵,然後使用一些技巧來組合它們。取決於 embedding 的特徵,這些組合方法包括簡單的聚類,以及基於圖的算法等。通過逐像素點的預測,局部一致性和位置信息就很好地保留了下來。自下而上方法的缺點有:1)過於依賴密集預測的質量,導致性能不佳,造成掩碼的割裂與錯誤連接;2)對於類別較多的複雜場景泛化能力有限;3)需要非常複雜的後處理技術。

本文中作者將自上而下和自下而上的方法結合起來。作者研究了兩個重要的方法:FCIS 和 YOLACT。它們都是預測實例級別的信息,如邊框位置,然後利用裁剪手段(FCIS)或加權和(YOLACT)將其與逐像素點的預測結合起來。本文認爲,這些過度簡化的合併設計可能無法平衡頂層和底層特徵表示的能力

較高層級的特徵對應着更大的感受野,可以獲取實例的全局信息,如姿勢,而較低層級的特徵則保留了更好的位置信息,可以提供更精細的細節信息。本文的一個關注點在於,如何以全卷積實例分割的方式,更好地融合這兩種特徵。更具體點就是,作者把實例級別的信息變得更加豐富,並且進行細粒度更高的位置敏感掩碼預測,爲基於候選框的掩碼方法提供通用性的操作。作者進行了廣泛的研究,探索了最優的維度、分辨率、對齊方法,以及特徵定位方法等。具體點就是:

  • 對於基於候選框方式的實例掩碼生成,設計了一個靈活的方法:Blender,它將實例級別的豐富信息和準確的密集的像素特徵融合起來。在COCO 數據集的比較中,該方法的mAP要比 YOLACT 和 FCIS 的融合方法準確率高1.9和1.3分。
  • 提出了一個簡單的網絡結構,BlendMask,基於目前 state of the art 的單階段目標檢測器 FCOS,在既有的網絡結構之上增加了少許的計算量。
  • BlendMask 一個明顯的優勢就是,它的推理時間不會像雙階段方法一樣,隨着預測數量的增加而增加,對實時場景更加地魯棒。
  • 在COCO數據集上,當BlendMask 在主幹網絡爲 ResNet-50 時,它取得的 mAP 爲 37.0%37.0\%,而當主幹網絡爲 ResNet-101 時,它可以取得 38.4%38.4\% 的mAP,這超越了 Mask R-CNN,而且要快20%20\%。該方法創下了全卷積實例分割的新記錄,掩碼mAP 要比 TensorMask 高 1.11.1 個點,而只需一半的訓練次數,推理時間也僅爲1/51/5。BlendMask 可能是第一個在掩碼 AP 和推理效率上超過 Mask R-CNN 的算法。
  • 因爲 BlendMask 的底部模塊可以同時分割 “things and stuff”,BlendMask 可以自然地解決全景分割問題,而無需改動。
  • 對於 Mask R-CNN 的掩碼 head,它的分辨率通常爲28×2828\times 28,而由於 BlendMask 更加靈活,底部模塊沒有嚴格地綁定到FPN上,其底部模塊輸出的掩碼的分辨率要更高。因此,BlendMask 輸出掩碼的邊界可以更加準確,如圖4所示。
  • BlendMask 非常通用而且靈活。只需稍微的改動,就可以將 BlendMask 應用到實例級別的識別任務上,如關鍵點檢測。

2. Related Work

Anchor-free 目標檢測。最近目標檢測領域的一些進展使我們無需邊框 anchors 也能進行目標檢測,大大簡化了目標檢測流程。與基於anchor 的方法 RetinaNet 相比,這項更簡單的設計提升了邊框平均精度(APbbAP^{bb}2.7%2.7\%。該提升的一個可能原因就是,沒有了預定義的 anchors,目標可以自由地根據其有效感受野匹配到預測特徵上。其意義有兩方面。首先,將目標大小映射到相應的金字塔層級,與該特徵的有效感受野相匹配。其次,沒有了 anchors,我們就可以給 top-level 的實例預測模塊更重的任務,而不會帶來整體計算量的增加。例如,基於anchor的方法與本文的方法相比,在邊框檢測之外,要想得到形狀和姿態信息,就得花費多8倍的計算量。這使得基於anchor 的檢測器無法平衡 top vs. bottom 的工作量(即學習實例-感知圖 vs. bases)。作者假設這就是爲什麼給定一個實例,YOLACT 對於每個 prototype/basis 只能學習單個標量係數,因爲要考慮到計算量。只有當我們使用 anchor-free 的邊框檢測器時,這項約束纔會消失

先檢測再分割的實例分割。主流的實例分割方式都採用了雙階段方法,首先檢測物體,再在每個候選框中預測前景掩碼。該方式比較成功,因爲它有一個對齊操作 — RoIAlign,它給第二階段的 RoI heads 提供了局部一致性,而在所有單階段方法中沒有 RoI heads。但是,雙階段方法中有兩個問題。在多實例的複雜場景中,雙階段方法的推理時間與實例個數成正比。而且,RoI 特徵和掩碼結果的分辨率有限。

將 RoI head 替換爲一個簡單的裁剪-組合模塊,這些問題可以得到部分解決。在FCIS中,Li 等人在檢測網絡中增加了一個底部模塊,預測位置敏感得分圖,該得分圖被所有的實例共享。R-FCN和MaskLab 首先使用了這個技術。k2k^2個得分圖中的每一個通道都對應着候選邊框中k×kk\times k個平均劃分的網格中的一個。每個得分圖都代表該像素點屬於某物體的概率。更高分辨率的位置裁剪,預測準確率就會更高,但是計算量也會指數級地增加。而且,存在一些特殊情況,使得 FCIS 的表示不充分。當兩個實例的中心位置接近時,該裁剪區域的得分圖表示就比較模糊,很難去說這個裁剪區域是哪個實例。

在 YOLACT 中,作者使用了一個改進的方法。除了邊框預測之外,它也學習一組掩碼係數。然後這些係數指導裁剪區域的掩碼 bases 進行線性組合,生成最終的掩碼。和 FCIS 相比,預測實例級別的信息的責任就指派給了 top-level。本文認爲,用標量係數來編碼實例信息不是最優的。

爲了突破這些侷限,本文提出了一個新的基於候選框的掩碼生成方法,BlendMask。通過一個混合模塊來平衡頂部和底部的工作量。這兩個層級都確保可以表示實例的信息。如第4節本文實驗所述,與YOLACT和FCIS方法相比,該混合模塊可以提升bases組合方法的表現,不會增加計算複雜度。

利用低層級特徵來優化掩碼。BlendMask 將高層級粗糙的實例信息和低層級的細粒度信息融合起來。其思想與MaskLab 和 IMP 方法類似,將掩碼預測與網絡較低層的特徵拼接起來。區別很明顯。本文將粗糙的掩碼用作爲注意力圖。其生成的過程非常輕量級,無需使用語義或位置信息來監督,而且與目標邊框的生成緊密聯繫。如3.4節所述,本文較低層級的特徵包含清晰的上下文信息。而且,該混合方法不需要 MaskLab 或 IMP 中的,融合特徵後的子網絡,這使得本文方法更加有效。

3. BlendMask

3.1 Overall pipeline

BlendMask 由一個檢測網絡和一個掩碼分支構成。掩碼分支有三個部分,一個預測得分圖的底部模塊,一個預測實例注意力的頂部模塊,以及一個將得分和注意力融合起來的混合模塊。圖2展示了整個網絡結構。

底部模塊。與其它基於候選框的全卷積網絡類似,作者增加了一個底部模塊來預測得分圖,稱之爲 bases,B\text{B}B\text{B}的形狀爲N×K×Hs×WsN\times K\times \frac{H}{s} \times \frac{W}{s},其中NN 是 batch size,KK 是bases 的個數,H×WH\times W 是輸入的大小,ss 是得分圖輸出的步長。作者在實驗部分使用 DeepLab V3+作爲 decoder。底部模塊的輸入可以作爲主幹網絡特徵,跟傳統的語義分割網絡,或者YOLACT和全景FPN中的特徵金字塔一樣。

Top layer 作者在每個檢測tower 之上都附加了單個卷積層,預測 top-level 的注意力 A\text{A}。與YOLACT中的掩碼係數不同,它在每個分辨率爲 Wl×HlW_l \times H_l 的金字塔中,輸入的形狀爲N×K×Hl×WlN\times K\times H_l \times W_l,而本文的A\text{A} 則是一個張量,形狀爲N×(KMM)×Hl×WlN\times (K\cdot M\cdot M)\times H_l \times W_l,其中M×MM\times M 是注意力圖的分辨率。有了三維結構,我們的注意力圖就可以對實例級別信息進行編碼,如物體的形狀和姿態。在自上而下的方法中,MM通常要比掩碼預測小,因爲我們只要一個近似的估計值。作者用一個輸出通道數爲 KMMK\cdot M\cdot M 的卷積來預測。在將它們傳入下一個模塊之前,我們首先要進行 FCOS 的後處理操作,選取前DD個邊框預測,P={pdR04d=1,...,D}P=\{\text{p}_d \in \mathbb{R}_{\geq 0}^4 | d=1,...,D\},以及它們對應的注意力圖A={adRK×M×Md=1,...,D}A=\{a_d \in \mathbb{R}^{K\times M\times M} | d=1,...,D\}

混合模塊 是 BlendMask 的關鍵。它將位置敏感 bases 組合起來,根據注意力圖來產生最終的預測。下一節作者將仔細地討論具體細節。

3.2 混合模塊

Blender 模塊的輸入是底部層級的 bases, B\text{B},篩選出的 top-level 注意力圖A\text{A},以及候選邊框PP。首先作者使用 Mask R-CNN中的 RoIPooler 對每個候選框 pd\text{p}_d 裁剪 bases,然後重新縮放該區域至一個固定的大小 R×RR\times R 的特徵圖rd\text{r}_d

rd=RoIPoolR×R(B,pd),d{1,...,D}r_d = RoIPool_{R\times R}(\text{B,p}_d), \forall d\in \{1,...,D\}

更具體點,在 RoIAlign 中作者使用的採樣率爲1,即每個採樣點都有一個bin。在表6中列覺了 nearest pooling 以及 bilinear pooling 的表現。在訓練中,將 ground truth 邊框作爲候選框。在推理時,使用 FCOS 的預測結果。

注意力圖的大小MM 要小於 RR。作者利用插值ada_d,將注意力圖大小由M×MM\times M變爲R×RR\times R,其中R={rdd=1,...,D}R=\{\text{r}_d | d=1,...,D\}

ad=interpolateM×MR×R(ad),d{1,...,D}\text{a}_d' = interpolate_{M\times M \rightarrow R\times R}(\text{a}_d), \forall d \in \{1,...,D\}

然後ad\text{a}_d' 用 softmax 函數進行歸一化,沿着KK個維度,得到一個由得分圖sds_d組成的集合。

sd=softmax(ad),d{1,...,D}s_d = \text{softmax}(\text{a}_d'), \forall d\in \{1,...,D\}

然後,作者對每個特徵圖區域和得分圖rd,sd\text{r}_d, \text{s}_d 都使用 element-wise 乘積操作,然後將KK個維度的結果求和,得到最終的掩碼 logit md\text{m}_d

md=k=1Ksdkrdk,d{1,...,D}\text{m}_d = \sum_{k=1}^K s_d^k \circ r_d^k, \forall d\in \{1,...,D\}

其中,kk是basis 的索引,在圖1中,作者可視化了掩碼混合的過程,其中K=4K=4

3.3 Configurations and baselines

在 BlendMask 中,作者考慮了下述的配置超參數:

  • RR,底部層級的 RoI 分辨率,
  • MM,頂部層級的預測分辨率,
  • KK,bases 的個數,
  • 底部模塊的輸入特徵,它可以是主幹網絡或FPN的特徵,
  • 底部 bases 的採樣方法,nearest-neighbor 或 bilinear pooling,
  • top-level 特徵的插值方法,nearest-neighbor 或 bilinear pooling.

作者用縮寫 KaTeX parse error: Expected '}', got '_' at position 8: \text{R_̲K_M} 來表示模型。例如KaTeX parse error: Double subscript at position 5: 28_4_̲4表示底部層級區域的分辨率爲28×2828\times 28,它有4個bases,以及4×44\times 4的 top-level 的實例注意力圖。作者默認使用主幹網絡特徵C3C3C5C5,與 DeepLabV3+保持一致。爲了與FCIS 公平比較,本文在 top-level 插值中使用了 Nearest neighbor 插值法。在底部層級中使用了 bilinear 採樣,與 RoIAlign 一致。

3.4 Semantics encoded in learned bases and attentions

在 val2017 上測試生成的 bases 和注意力圖,作者發現了這樣一個模式。在 bases上,BlendMask 編碼了兩種類型的局部信息,1)一個像素點是否在某物體之上,2)是否該像素點是這個物體的某一部分(位置敏感特徵)。

圖3 展示了完整的 bases 和注意力圖映射回原始圖片。前兩個bases(紅色和藍色)檢測物體右上與左下的點。第三個(黃色)base 則觸發物體上的點,第四個(綠色)base 激活物體的邊界。位置敏感特徵幫助我們區分重疊的實例,使得 BlendMask 要比 YOLACT 更高效地表示所有的實例。正語義掩碼使我們的最終的預測要比FCIS更平滑,負語義掩碼則可以進一步抑制實例外的激活。作者在表1中對比了本文的混合模塊和YOLACT與FCIS的類似部分。與YOLACT和FCIS相比,BlendMask 學到的特徵要更加準確,而所需的bases要更少(4 vs. 32 vs. 49)。

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