(12)可形變卷積


之前的項目中使用了可形變卷積,感覺有效果,所以就具體看一下。

論文: 
代碼: 

Deformable Convolution 

 

 首先看頂層的feature map,我們取兩個激活點(分別在大羊和小羊身上),代表的是不同尺度和形狀。中間層:top層的feature map經過3*3的卷積后,需要抽樣的一些點。最底層:再經過一個3*3的卷積,需要采樣的點。通過對比可以明顯的看出,可變形卷積的采樣位置更符合物體本身的形狀和尺寸,而標准卷積的形式卻不能做到這一點。能夠明顯的看到最終的激活點學習了他該學習的特征,這個特征只針對於物體本身,相比原始的卷積它更能排除背景噪聲的干擾。

對卷積核中每個采樣點的位置都增加了一個偏移變量,可以實現在當前位置附近隨意采樣而不局限於之前的規則格點。如下圖所示,是常見的采樣點和可變形卷積采樣的對比:

 

 (a)是常見的3x3卷積核的采樣方式,(b)是采樣可變形卷積,加上偏移量之后的采樣點的變化,其中(c)(d)是可變形卷積的特殊形式

可形變卷積是基於一個平行網絡學習offset(偏移),使得卷積核在input feature map的采樣點發生偏移,集中於我們感興趣的區域或者目標。

 

 他的具體流程是:

所以可形變卷積這種形變不是發生在卷積核,而是發生在原圖產生了offset偏移,在經過正常卷積就達到可變卷積的效果,也就是特征偏移+正常卷積。

相對應可形變卷積還有可形變的roi pooling:

之前我們faster rcnn介紹的roi pooling是通過spp完成的:

 

 這種就是把一張圖分成若干個cell,這種也是規則和形狀很固定,所以有了以下的可形變的roi pooling:

 

 相比普通ROI Pooling,同樣增加了一個offset,下圖為網絡結構:具體操作為,首先,通過普通的ROI Pooling得到一個feature map,如上圖中的綠色塊,通過得到的這個feature map,加上一個全連接層,生成每一個位置的offset,然后處理方式和可形變卷積一樣,為了讓offset的數據和ROI 的尺寸匹配,需要對offset進行微調,此處不是重點。全連接層的參數可以通過反向傳播進行學習。

 

代碼學習:

 

 在CNN中就是這樣用的,l_offset表示發生位移后的新的圖像,然后用它來進行新的卷積,這個ConvOffset2D是這樣定義的:

 

 

 

 x_offset就是輸入x在offsets的偏移上得到的新的圖,這個計算發生在:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM