Paper link: https://arxiv.org/abs/2001.00309
GitHub (PyTorch, 基於Detectron2): https://github.com/aim-uofa/adet
Introduction
實例分割任務需要執行dense per-pixel prediction,在完成像素級語義分類的同時,需要鑑別出目標實例鑑。基於深度學習的實例分割模型,通常包括Top-down架構與Bottom-up架構,兩種結構各有優劣勢。文章提出的BlendMask實例分割模型,以Anchor-free FCOS檢測器爲主體結構,通過融合High-level實例信息與Low-level逐像素預測結果,達到了SOTA的分割效果。mask mAP最高能到41.3,實時版本BlendMask mAP性能和速度分別爲34.2和25FPS (1080ti GPU)。
-
Top-down架構:
Top-down模型先通過一些方法 (如RPN、detector等)獲取bbox,然後從high-level特徵區域中提取ROI特徵,進而對區域內的像素進行mask提取,這種模型一般有以下幾個問題:
- 由於使用了high-level特徵圖,位置信息容易損失;
- 特徵和mask之間的局部一致性會丟失,容易導致mis-align;
- 冗餘的特徵提取,不同的bbox會重新提取一次mask;
以Mask-RCNN爲例:
- 基於Faster-RCNN,屬於two-stage架構,RPN獲取的bbox用於提取ROI特徵;
- mask分支與detection分支共享ROIAlign features;
- Bottom-up架構:
Bottom-up模型先對整圖進行逐像素預測(per-pixel prediction),每個像素生成一維特徵向量 (embedding)。由於進行的是逐像素級預測、且stride很小,局部一致性和位置信息可以很好的保存,但依然存在以下幾個問題:
- 嚴重依賴逐像素預測的質量,context信息匱乏,容易導致非最優分割;
- 由於mask在低維提取,缺乏context信息,對於複雜場景的分割能力有限;
- 由於逐像素生成embedding,需要複雜的後處理方法;
以Deeplab-v3+的Decoder爲例 (語義分割):
- Decoder以low-level特徵爲輸入,執行per-pixel prediction;
- "Two-stage vs. One-stage" and "Anchor-based vs. Anchor-free":
以Mask-RCNN作爲對比模型:
- One-stage模型的執行效率更高;
- Anchor-free模型的優勢:
- 避免了anchor相關的超參設置,包括aspect-ratio、scale以及anchor匹配閾值等;
- Anchor-free模型通常執行per-pixel預測,樣本召回率更高;
- 節省了anchor相關的計算,尤其是anchor數目較多的情況下,能夠提升執行效率;
BlendMask實現結構與算法原理
- 概述:
文章綜合top-down和bottom-up方法,利用instance-level信息 (bbox)對low-level per-pixel prediction進行ROI截取、以及attention加權,進而預測輸出instance mask,主要貢獻有以下幾點:
- 設計了blender,用於生成proposal-based instance mask,在COCO上對比YOLACT和FCIS,分別提升了1.9和1.3 mAP;
- 基於FCOS提出簡潔的算法網絡BlendMask;
- BlendMask的推理時間不會像two-stage detector一樣,隨着預測數量的增加而增加;
- BlendMask的準確率和速度都優於Mask-RCNN,且mask mAP比最好的全卷積實例分割網絡Tensor-Mask高1.1;
- 結合instance-level信息,bottom模塊能同時分割多種物體,因而BlendMask可直接用於全景分割;
- Mask-RCNN的mask輸出固定爲28×28,而BlendMask的mask輸出像素可以很大;
- BlendMask通用且靈活,只要一些小修改,就可以用於其它instance-level識別任務,例如關鍵點檢測;
- 基於FCOS的總體實現結構:
關鍵模塊包括基於FCOS的top layers,執行per-pixel prediction的bottom module,以及融合instance信息與per-pixel score map的blender模塊:
- Top-layers:
主體結構爲FCOS目標檢測模型,FPN輸出的multi-level features一方面應用於常規目標檢測,獲得bbox與 cls score;另一方面接入conv. towers生成spatial attentions: 。
每個pixel位置的spatial attention屬於3D結構: K*M*M。表示bottom module預測的per-pixel score map的embedding維度;M*M表示attention的二維空間維度(通常取值爲4或8等),表明spatial attention具備捕獲instance-level信息的能力,如目標的姿態、粗略形狀信息等。
Top-layers基於cls score對不同目標的bbox與attention進行排序,篩選出Top-D個proposals,應用於blender的信息融合:
- Bottom Module:
Bottom module採用Deeplab-v3+的decoder結構,以backbone的C3、C5特徵作爲輸入 (亦可用FPN特徵),輸出per-pixel score maps (記作B: bases):。表示per-pixel的embedding維度。
- Blender Module:
Blender是BlendMask的核心模塊,其輸入爲bottom-level的基底B 以及選擇的top-level attentions A、bbox P。首先,使用Mask R-CNN的ROIPooler截取每個bbox pd對應的基底區域,並resize成R*R 的特徵圖:
需要注意的是:訓練階段使用gt bbox作爲proposals;而在推理時,使用FCOS的檢測結果。
attention大小爲M*M (小於R*R),因此需要對ad進行上採樣插值:
然後沿K-dimension執行softmax歸一化處理,獲得attention weight map:
最後基於attention weight map,沿K-dimension對截取的bbox特徵進行加權求和:
信息融合過程如下,沿K-dimension,每個attention可表示instance的某個部位:
- 超參數設置:
主要的超參數如下,文章根據R, M與K的設置,將模型標記爲R_K_M:
實驗結果
實驗設置、Ablation對比及實驗結果詳見文章。