SOLOv2演算法解讀

2021-10-23 00:26:05 字數 1984 閱讀 9781

**:solov2: dynamic, faster and stronger

solov2主要有兩個創新點:

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

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

效果:在單張v100顯示卡,coco資料集上res-50-fpn solov2,ap達到38.8%,耗時18fps。

如圖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。

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所示。 

Retinex演算法解讀

retinex是一種常用的建立在科學實驗和科學分析基礎上的影象增強方法,它是 edwin.h.land 於1963 年提出的。就跟 matlab 是由matrix 和laboratory 合成的一樣,retinex 也是由兩個單詞合成的乙個詞語,他們分別是 retina 和cortex 即 視網膜和...

Deflate演算法解讀

gzip 使用deflate演算法進行壓縮。通用類庫為zlib,由lz77 huffman共同實現。1 lz77演算法簡介 這一演算法是由jacob ziv 和 abraham lempel 於 1977 年提出,所以命名為 lz77,被一些人稱為字典演算法。2 lz77演算法的壓縮原理 如果檔案中...

演算法解讀 基本的演算法

1.執行迴圈操作求1 n的和 要完成這個計算,可以通過以下迴圈步驟求出 a.將求和變數sum的初始值設為0.b.將和sum為計算結果,value為加數 c.value在n以下時,重複執行4 5的操作 d.計算sum value的值並將值存入sum中 e.每次value值加1.1 public sta...