BlendMask通過更合理的blender模塊融合top-level和low-level的語義信息來提取更准確的實例分割特征,該模型效果達到state-of-the-art,但結構十分精簡,推理速度也不慢,精度最高能到41.3AP,實時版本BlendMask-RT性能和速度分別為34.2mAP和25FPS,並且論文的優化方法很有學習的價值,值得一讀
論文:BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation
Introduction
密集實例分割模型早期主要有兩種,top-down apporach和bottom-up apporach
top-down apporach
top-down模型先通過一些方法獲取box區域,然后對區域內的像素進行mask提取,這種模型一般有以下幾個問題:
- 特征和mask之間的局部一致性會丟失,論文討論的是Deep-Mask,用fc來提出mask
- 冗余的特征提取,不同的bbox會重新提取一次mask
- 由於使用了縮小特征圖的卷積,位置信息會損失
bottom-up apporach
bottom-up模型先對整圖進行逐像素預測(per-pixel prediction),每個像素生成一個特征向量,然后通過一些方法來對像素進行分組。由於進行的是逐像素級預測且步長很小,局部一致性和位置信息可以很好的保存,但是依然存在以下幾個問題:
- 嚴重依賴逐像素預測的質量,容易導致非最優的分割
- 由於mask在低維提取,對於復雜場景(類別多)的分割能力有限
- 需要復雜的后處理方法
hybridizing apporach
考慮到上面的問題,論文綜合了top-down和bottom-up的策略,利用instance-level信息(bbox)對per-pixel prediction進行裁剪和加權輸出。雖然FCIS和YOLACT已有類似的思想,但論文認為他們都沒有很好的處理top-level和bottom-level的特征,高維特征包含整體的instance信息,而低維特征的則保留了更好的位置信息,論文的重點在於研究如何合並高低維特征,主要貢獻有以下幾點:
- 提出了proposal-based的instance mask合並方法,blender,在COCO上對比YOLACT和FCIS的合並方法分別提升了1.9和1.3mAP
- 基於FCOS提出簡潔的算法網絡BlendMask
- BlendMask的推理時間不會像二階檢測器一樣隨着預測數量的增加而增加
- BlendMask的准確率和速度比Mask R-CNN要好,且mask mAP比最好的全卷積實例分割網絡Tensor-Mask要高1.1
- 由於bottom模塊能同時分割多種物體,BlendMask可直接用於全景分割
- Mask R-CNN的mask輸出固定為$28\times 28$,BlendMask的mask輸出像素可以很大,且不受FPN的限制
- BlendMask通用且靈活,只要一些小修改,就可以用於其它instance-level識別任務中,例如關鍵點檢測
Our methods
Overall pipeline
BlendMask包含檢測網絡和mask分支,mask分支包含3個部分,bottom module用於預測score maps,top layer用於預測實例的attentions,blender module用於整合分數以及attentions,整體的架構如圖2所示
- Bottom module
bottom module預測的score maps在文中稱為基底(base)$B$。$B$的大小為$N\times K\times \frac{H}{s}\times \frac{W}{s}$,其中N為batch size,K為基底的數量,$H\times W$是輸入的大小,而$s$則是score maps的輸出步長。
論文采用DeepLab V3+的decoder,該decoder包含兩個輸入,一個低層特征和一個高層特征,對高層特征進行upsample后與低層特征融合輸出。這里使用別的結構也是可以的,而bottom module的輸入可以是backbone的feature,也可以是類似YOLACT或Panoptic FPN的特征金字塔
- Top Layer
在每一個detection tower后接了一層卷積層用來預測top-level attentions$A$。 在YOLACT中,每一層金字塔($H_l\times W_l$)輸出的$A$為$N\times K\times H_l\times W_l$,即對應基底每個channel的整體的權重值。而論文輸出的$A$為$N\times (K\cdot M\cdot M)\times H_l\times W_l$,$M\times M$是attention的分辨率,即對應基底每個channel的像素點的權重值,粒度更細,是element-wise的操作(后面會講到)。
由於attentions是3D結構($K\cdot M\cdot M$),因此可以學習到一些實例級別的信息,例如對象大致的形狀和姿態。$M$的值是比較小的,只做粗略的預測,一般最大為14,使用output channel為($K\cdot M\cdot M$)的卷積來實現。在送到一下個模塊之前,先使用FCOS post-process方法來選擇top D個bbox $P={p_d \in \mathbb{R}_{\ge0}^4 |d=1...D}$和對應的attentions $A={a_d \in \mathbb{R}^{K\times M\times M} |d=1...D}$,具體的選擇方法是選擇分類置信度$\ge$閾值的top D個bbox,閾值一般為0.05
- Blender module
Blender module是BlendMask的關鍵部分,根據attentions對位置敏感的基底進行合並輸出
Blender module
blender模塊的輸入為bottom-level的基底$B$以及選擇的top-level attentions$A$和bbox$P$
首先,使用Mask R-CNN的ROIPooler來截取每個bbox$p_d$對應的基底區域,並resize成固定$R\times R$大小的特征圖$r_d$。具體地,使用sampleing ratio=1的RoIAlign,每個bin只采樣1個點,Mask R-CNN每個bin采樣4個點。在訓練的時候,直接使用gt bbox作為proposals,而在推理時,則直接用FCOS的檢測結果
attention大小$M$是比$R$小的,因此需要對$a_d$進行插值,從$M\times M$變為$R\times R$,$R={r_d|d=1...D}$
接着對$a_d^{'}$的K維attention分別進行softmax歸一化,產生一組score map $s_d$
然后對每個region$R$的$r_d$和對應的score map$S$的$s_d$進行element-wise product,最后將K個結果進行相加得到$m_d$
圖1對blend module的操作進行了可視化,可以看到attenttions和基底的特征以及融合的過程,可以說十分生動形象了
Configurations and baselines
BlendMask的超參數如下:
- $R$,bottom-level RoI的分辨率
- $M$,top-level預測的分辨率
- $K$,基底的數量(channel)
- bottom模塊的輸入可以是骨干網絡或FPN的feature
- 基底的采樣方法可以是最近鄰或雙線性池化
- top-level attentions的插值方法可以是最近鄰或雙線性采樣
論文用縮寫$R_K_M$來表示模型,使用骨干特征C3和C5作為bottom模塊的輸入,top-level attention使用最近鄰插值,bottom level使用雙線性插值,與RoIAlign一致
Semantics encoded in learned bases and attentions
基底和attentions的可視化結果如圖3所示,論文認為BlendMask能提取兩種位置信息:
- 像素是否在對象上(semantic masks)
- 像素是否在對象的具體部位上(position-sensitive features),比如左上角,右下角
紅藍兩個基底分別檢測了目標的右上和左下部分點,黃色基底則檢測了大概率在目標上的點(semantic mask),而綠色基底則激活了物體的邊界,position-sensitive features有助於進行實例級別的分割,而semantic mask則可以對postion-sensitive進行補充,讓最后的結果更加順滑。由於學習到了更多准確的特征,BlendMask使用了比YOLACT和FCIS少很多的基底緯度(4 vs. 32 vs. 49)
Experiment
消融實驗
- Merging methods: Blender vs. YOLACT vs. FCIS
論文將blender改造成其它兩個算法的merge模型進行實驗,從Table1可以看出,Blender的merge方法要比其它兩個算法效果好
- Top and bottom resolutions
從Table2可以看出,隨着resolution的增加,精度越來越高,為了保持性價比,R/M的比例保持大於4,總體而言,推理的時間是比較穩定的
- Number of bases
從Table3可以看出,K=4是最優
- Bottom feature locations: backbone vs. FPN
從圖4可以看出,使用FPN特征作為bottom模塊的輸入,不僅效率提升了,推理時間也加快了
- Interpolation method: nearest vs. bilinear
在對top-level attentions進行插值時,雙線性比最近鄰高0.2AP
而對bottom-level score maps進行插值時雙線性比最近鄰高2AP
- Other improvements
論文也嘗試了其它提升網絡效果的實驗,雖然這些trick對網絡有一定的提升,但是沒有加入到最終的網絡中
Main result
- Quantitative results
從結果來看,BlendMask在效果和速度上都優於目前的實例分割算法,但是有一點,在R-50不使用multi-scale的情況下,BlendMask的效果要比Mask R-CNN差
- Real-time setting
為了跟YOLACT對比,論文改造了一個緊湊版的BlendMask-RT: 1) 減少prediction head的卷積數 2) 合並classification tower和box tower 3) 使用Proto-FPN並去掉P7。從結果來看,BlendMask-RT比YOLACT快7ms且高3.3AP
- Qualitative results
圖4展示了可視化的結果,可以看到BlendMask的效果比Mask R-CNN要好,因為BlendMask的mask分辨為56而Mask R-CNN的只有28,另外YOLACT是難以區分相鄰實例的,而BlendMask則沒有這個問題
Discussions
- Comparison with Mask R-CNN
BlendMask的結構與Mask R-CNN類似,通過去掉position-sensitive feature map以及重復的mask特征提取來進行加速,並通過attentions指導的blender來替換原來復雜的全局特征計算
BlendMask的另一個優點是產生了高質量的mask,而分辨率輸出是不受top-level采樣限制。對於Mask R-CNN增大分辨率,會增加head的計算時間,而且需要增加head的深度來提取准確的mask特征 。另外Mask R-CNN的推理時間會隨着bbox的數量增加而增加,這對實時計算是不友好的
最后,blender模塊是十分靈活的,因為top-level的實例attention預測只有一個卷積層,對於加到其它檢測算法中幾乎是無花費的
- Panoptic Segmentation
BlendMask可以通過使用Panoptic-FPN的語義分割分支來進行全景分割任務,從結果來看,BlendMask效果更好
總結
BlendMask通過更合理的blender模塊融合top-level和low-level的語義信息來提取更准確的實例分割特征,該模型綜合各種優秀算法的結構,例如YOLACT,FOCS,Mask R-CNN,比較tricky,但是很有參考的價值。BlendMask模型十分精簡,效果達到state-of-the-art,推理速度也不慢,精度最高能到41.3AP,實時版本BlendMask-RT性能和速度分別為34.2mAP和25FPS,並且論文實驗做得很充足,值得一讀
參考內容
- 論文閱讀學習 - (DeeplabV3+)Encoder-Decoder with Atrous Separable Convolution
- 加州大學提出:實時實例分割算法YOLACT,可達33 FPS/30mAP!現已開源!
- FCOS-一個挺不錯的anchor free目標檢測方法
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注個人微信公眾號【曉飛的算法工程筆記】