論文: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所示。