作者 | 張凱
編輯 | CV君
報道 | 我愛計算機視覺(微信id:aicvml)
論文:https:
//
http://
arxiv。org/pdf/2104。0856
9。pdf
標題:RefineMask: Towards High-Quality Instance Segmentation with Fine-Grained Features
開原始碼:
https://
github。com/zhanggang001
/RefineMask/
CVPR 2021 論文,作者單位:清華大學、商湯科技、同濟大學、中科院自動化所。
0.動機
例項分割是計算機視覺領域中比較有挑戰性的任務之一,Mask R-CNN是例項分割任務的經典方法,但是包括Mask R-CNN在內的多種方法,都會在例項分割時損失一些細節資訊,如下圖所示:
從上圖中可以看出,Mask R-CNN總體而言有比較高的例項分割精度,但其在邊界區域的精度不是很高。造成這種現象的原因有二:(1)深層次feature map的空間尺寸通常比較小,難以保留細節資訊;(2)ROI Pooling操作進一步減小了feature map的空間尺寸,造成了細節資訊的丟失。
與例項分割不同的是,語義分割任務不需要使用高層次特徵區分不同的例項,因而其feature map的空間尺寸比較大,因此能夠產生高質量的分割結果,尤其是在分割的邊界有比較高的質量,如上圖中圖(b)所示。
作者提出了RefineMask,在二階段例項分割框架的基礎上,使用細粒度特徵彌補細節丟失,如上圖中圖(c)所示。
1.網路總體結構
RefineMask總體結構如下圖所示:
RefineMask以FPN目標檢測器為基礎,上圖中省略了detection head。RefineMask在檢測器基礎上額外增加了semantic head和mask head。
semantic head使用FPN中尺寸最高的feature map作為輸入,semantic head中不包含下采樣等空間壓縮操作,因此semantic head的輸出和輸入有同樣的尺寸,從而保證其輸出有豐富的細節資訊。semantic head的輸出用於輔助mask head做例項分割。
mask head使用“多階段”的形式完成例項分割任務,在每個階段中包含Semantic Fusion Module(SFM),mask head會融合包含細粒度資訊的semantic feature和semantic mask,然後增加feature map尺寸用於更細粒度的mask預測。
此外,在mask head中還包含Boundary-Aware Refinement(BAR)操作,增強對例項邊界的預測能力。
2.Semantic Head
semantic head包含4個卷積層,用於提取整張輸入影象的語義資訊,還包含1個二值分類器用於輸出每個畫素點屬於前景的機率。使用二值交叉熵損失函式訓練semantic head。
將semantic feature和semantic mask統稱為細粒度特徵,在mask head中,使用semantic head輸出的細粒度特徵補充細節資訊,從而預測出高質量的instance mask。
3.Mask Head
3.1 Initial Mask
在mask head中,首先有一個RoIAlign操作,輸出
的feature map,緊接著是2個
卷積操作產生instance feature,然後使用1個
卷積操作預測instance mask,在RefineMask中將該mask稱作initial mask,作為後續操作的輸入之一。
3.2 Multi-stage Refinement
mask head中的主體操作為multi-stage refinement,每個stage包含4個輸入:(1)instance feature,(2)instance mask,(3)semantic feature,(4)semantic mask。
在每個stage中,Semantic Fusion Module(SFM)融合上述4個輸入,然後進行上取樣操作,得到尺寸更大的特徵。SFM的結構如下圖所示:
如上圖所示,SFM中首先包含
卷積操作用於融合多個輸入、減少通道數;緊接著是3個並行的
卷積,每個卷積都有不同的dilation引數設定,用於提取不同感受野的特徵;最後將instance mask、semantic mask與融合後的特徵進行concat操作,作為SFM輸出。
在mask head中包含多個SFM,完成多次特徵上取樣操作。
3.3 Boundary-Aware Refinement(BAR)
BAR的目的是更關注mask的邊界資訊,以提高網路對mask邊界細節的預測能力。
邊界區域的定義
使用
表示第
個stage的instance mask,
的尺寸為
,其中
。
使用
表示
的邊界區域,
的定義如下:
上式中的
表示
中的畫素
的位置,
表示
到
邊界的最近距離,mask的邊界如下圖所示:
為了快速計算,作者使用卷積操作近似求解
,若邊界寬度為1,卷積核為:
若邊界寬度為2,卷積核為:
使用上述卷積核作用於
,將輸出結果記作
,
與
有相同的尺寸。
透過如下公式計算得到:
構建邊界區域的寬度在訓練時設定為2,推理時設定為1。
訓練
在mask head的多個stage中,除第1個stage以外,其他stage的instance mask只包含邊界區域的資訊。訓練時它們的損失函式為:
損失函式中的
表示前一個stage中ground truth mask的邊界區域和預測mask的邊界區域並集的雙線性上取樣,
為第
個instance在位置
處的二值交叉熵損失,
是instance的數量,
為第
個stage輸出特徵的尺寸。
推理
在推理時每個stage的最終輸出為:
上式中的
表示元素級別的乘法操作。上述過程可以表示為下圖(以k=2為例):
上圖中的
表示元素乘法,
表示元素加法,
為
的邊界區域,
是第2個stage最終輸出的instance mask。
在推理時重複上述過程,即可得到細粒度的instance mask。
4.實驗
使用Mask R-CNN作為baseline,在實現時mask head中包含3個stage。對於semantic head、initial mask和mask head的第1個stage,使用二值交叉熵損失函式;對於mask head的最後2個stage,使用3。3中定義的損失函式;detection head部分和Mask R-CNN保持一致。
mask head中的initial mask、3個stage的損失函式權重值分別為0。25、0。5、0。75、1,detection head損失的權重值為2。使用水平翻轉操作用於資料增強。
在COCO val2017上的預測結果如下表所示:
上表中的
表示使用LVIS資料集標註計算的結果。
RefineMask和其他方法的推理速度對比如下表所示:
上表中的FPS資料在V100 GPU上測量得到。從上表中可以看出,RefineMask兼顧效能和推理速度。
RefineMask與其他方法的效能對比如下:
RefineMask在Cityscapes驗證集上的測試結果如下表所示:
Mask R-CNN和RefineMask的視覺化對比如下圖所示:
上圖中第一行表示Mask R-CNN的預測結果,第二行表示RefineMask的預測結果,第三行表示ground truth。顯然,RefineMask比Mask R-CNN有更好的分割效果,尤其是在邊緣細節上。
5.總結
作者提出了RefineMask例項分割網路,該網路以Mask R-CNN為基礎進行改進。RefineMask在mask head中利用了semantic head提供的細節資訊,使用SFM和BAR模組,著重提高mask head在邊界細節處的預測效能。透過實驗證明,相比其他方法,RefineMask有更好的效能,且兼顧推理速度。