SOLOv2算法解讀

論文:SOLOv2: Dynamic, Faster and Stronger

論文鏈接:https://arxiv.org/abs/2003.10152

代碼鏈接:https://github.com/aim-uofa/AdelaiDet

SOLO算法解讀鏈接:https://blog.csdn.net/qq_41994006/article/details/105170426

創新點

SOLOv2主要有兩個創新點:

1、作者更進一步,引入動態機制,動態學習目標分割器的mask head。將mask分支解耦爲kernal分支以及mask特徵分支,學習卷積核權重。

2、作者提出Matrix NMS,減少前向推理時間。

效果:在單張V100顯卡,coco數據集上Res-50-FPN SOLOv2,AP達到38.8%,耗時18FPS。

Dynamic Instance Segmentation

如圖2所示,在SOLOv1中,mask分支如2(a)所示,由於參數量較多,而且預測結果存在冗餘信息,因此進行解耦如圖2(b)所示,但都是從預測結果層面出發。對此作者想到爲什麼不從卷積核角度出發,由此得到2(c),上面爲mask kernal分支,下面爲mask特徵分支。

 對於mask kernal分支,如圖2(c)所示,輸入特徵F爲H*W*E,學習動態卷積核G爲S*S*D,比如G爲1*1*E*S^2或3*3*E*S^2,即爲D=E或者D=9E。輸入channel爲E,輸出channel爲S^2,S^2表示共有S^2個位置,每個位置對應一個卷積核。因此最多生成S^2個mask,此時意味着,每個位置都出現了目標。作者使用不同大小及channel卷積核,實驗效果如表3所示。

對於mask特徵分支,可以每層FPN都做mask預測,也可以合併爲一個統一的mask,經作者實驗,後者效果更佳,如圖3所示。將FPN的P2到P5層依次經過3×3卷積 + group norm + ReLU + 2個雙線性插值,統一到原圖的1/4尺寸,再做element-wise summation,經過1 × 1 convolution + group norm + ReLU得到mask的feature map F。

mask的feature map F經過學到的卷積核G(i,j),i,j表示網格中位置,得到相應位置的實例分割結果。

推理過程

先得到類別置信度,通過閾值0.1過濾掉低置信度預測結果,而後使用學習到的卷積覈對mask特徵進行卷積操作,經過sigmoid函數後,使用閾值0.5將預測的soft mask轉變爲二值圖。最後一步進行Matrix NMS。

Matrix NMS

IOU計算公式如式3、衰減因子decay計算如式4所示

sj = sj * decayj,sj表示第j個目標的預測得分。

兩種簡單的衰減函數如式5、6所示,線性以及高斯。

 Matrix NMS計算過程如下:

1、選取按照置信度排列的top N個結果,生成N*N的IoU矩陣。對於二值圖,通過矩陣運算,高效形成IoU矩陣,因爲計算IOU時可直接相乘。

2、在IOU矩陣列上,找到最大的IOU。

3、計算decay。

4、通過decay更新預測得分。

代碼如下:

實驗結果 

實例分割結果如表1所示。

目標檢測結果如表2所示。 

 

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