作者 | 張凱

編輯 | CV君

報道 | 我愛計算機視覺(微信id:aicvml)

RefineMask:例項分割,使用細粒度資訊增強效能

論文: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在內的多種方法,都會在例項分割時損失一些細節資訊,如下圖所示:

RefineMask:例項分割,使用細粒度資訊增強效能

從上圖中可以看出,Mask R-CNN總體而言有比較高的例項分割精度,但其在邊界區域的精度不是很高。造成這種現象的原因有二:(1)深層次feature map的空間尺寸通常比較小,難以保留細節資訊;(2)ROI Pooling操作進一步減小了feature map的空間尺寸,造成了細節資訊的丟失。

與例項分割不同的是,語義分割任務不需要使用高層次特徵區分不同的例項,因而其feature map的空間尺寸比較大,因此能夠產生高質量的分割結果,尤其是在分割的邊界有比較高的質量,如上圖中圖(b)所示。

作者提出了RefineMask,在二階段例項分割框架的基礎上,使用細粒度特徵彌補細節丟失,如上圖中圖(c)所示。

1.網路總體結構

RefineMask總體結構如下圖所示:

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操作,輸出

14 \times 14

的feature map,緊接著是2個

3 \times 3

卷積操作產生instance feature,然後使用1個

1 \times 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的結構如下圖所示:

RefineMask:例項分割,使用細粒度資訊增強效能

如上圖所示,SFM中首先包含

1\times1

卷積操作用於融合多個輸入、減少通道數;緊接著是3個並行的

3 \times 3

卷積,每個卷積都有不同的dilation引數設定,用於提取不同感受野的特徵;最後將instance mask、semantic mask與融合後的特徵進行concat操作,作為SFM輸出。

在mask head中包含多個SFM,完成多次特徵上取樣操作。

3.3 Boundary-Aware Refinement(BAR)

BAR的目的是更關注mask的邊界資訊,以提高網路對mask邊界細節的預測能力。

邊界區域的定義

使用

M^k

表示第

k

個stage的instance mask,

M_k

的尺寸為

14 \cdot 2^{k} \times 14 \cdot 2^{k}

,其中

k=1,2,3

使用

B_k

表示

M_k

的邊界區域,

B_k

的定義如下:

B^{k}(i, j)= \begin{cases}1, & \text { if } d_{i j} \leq \hat{d} \\ 0, & \text { otherwise. }\end{cases} \\

上式中的

(i, j)

表示

M_k

中的畫素

p_{ij}

的位置,

d_{ij}

表示

p_{ij}

M_k

邊界的最近距離,mask的邊界如下圖所示:

RefineMask:例項分割,使用細粒度資訊增強效能

為了快速計算,作者使用卷積操作近似求解

B_k

,若邊界寬度為1,卷積核為:

\left[\begin{array}{ccc} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \end{array}\right] \\

若邊界寬度為2,卷積核為:

\left[\begin{array}{lllll} -1 & -1 & -1 & -1 & -1 \\ -1 & -1 & -1 & -1 & -1 \\ -1 & -1 & 24 & -1 & -1 \\ -1 & -1 & -1 & -1 & -1 \\ -1 & -1 & -1 & -1 & -1 \end{array}\right] \\

使用上述卷積核作用於

M_k

,將輸出結果記作

D_k

D_k

M_k

有相同的尺寸。

B_k

透過如下公式計算得到:

B^{k}(i, j)= \begin{cases}1, & \text { if } D^{k}(i, j)>0 \\ 0, & \text { otherwise }\end{cases} \\

構建邊界區域的寬度在訓練時設定為2,推理時設定為1。

訓練

在mask head的多個stage中,除第1個stage以外,其他stage的instance mask只包含邊界區域的資訊。訓練時它們的損失函式為:

\mathcal{L}^{k}=\frac{1}{\delta_{n}} \sum_{n=0}^{N-1} \sum_{i=0}^{S_{k}-1} \sum_{j=0}^{S_{k}-1} R_{n i j}^{k} \cdot l_{n i j} \\

R^{k}=f_{\text {up }}\left(B_{G}^{k-1} \vee B_{P}^{k-1}\right) \\

\delta_{n}=\sum_{n=0}^{N-1} \sum_{i=0}^{S_{k}-1} \sum_{j=0}^{S_{k}-1} R_{n i j} \\

損失函式中的

R^{k}

表示前一個stage中ground truth mask的邊界區域和預測mask的邊界區域並集的雙線性上取樣,

l_{n i j}

為第

n

個instance在位置

(i,j)

處的二值交叉熵損失,

N

是instance的數量,

S_{k} \times S_{k}

為第

k

個stage輸出特徵的尺寸。

推理

在推理時每個stage的最終輸出為:

M^{\prime 1}=M^{1} \\

M^{\prime k}=f_{\text {up }}\left(B_{P}^{k-1}\right) \otimes M^{k}+\left(1-f_{\text {up }}\left(B_{P}^{k-1}\right)\right) \otimes f_{\text {up }}\left(M^{\prime k-1}\right) \\

上式中的

 \otimes

表示元素級別的乘法操作。上述過程可以表示為下圖(以k=2為例):

RefineMask:例項分割,使用細粒度資訊增強效能

上圖中的

\times

表示元素乘法,

+

表示元素加法,

B_{p}^{1}

M^{\prime 1}

的邊界區域,

M^{\prime 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上的預測結果如下表所示:

RefineMask:例項分割,使用細粒度資訊增強效能

上表中的

AP^*

表示使用LVIS資料集標註計算的結果。

RefineMask和其他方法的推理速度對比如下表所示:

RefineMask:例項分割,使用細粒度資訊增強效能

上表中的FPS資料在V100 GPU上測量得到。從上表中可以看出,RefineMask兼顧效能和推理速度。

RefineMask與其他方法的效能對比如下:

RefineMask:例項分割,使用細粒度資訊增強效能

RefineMask在Cityscapes驗證集上的測試結果如下表所示:

RefineMask:例項分割,使用細粒度資訊增強效能

Mask R-CNN和RefineMask的視覺化對比如下圖所示:

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有更好的效能,且兼顧推理速度。