mmdetection(2): DeformableConvNets(DCN)
先來點干貨,基于pytorch的代碼: https://github.com/4uiiurz1
DCN可以說是打破了傳統的CNN,那到底是怎么搞的呢
v1: https://arxiv.org/abs/1703.06211
既然原始的只能提取特定區域,那我們給其加上個位移不就ok了
那位移應該怎么加呢,簡單啊,每個kernel不是3x3嗎(常見),那就在添加9個位移變量,分別對應3x3的每個權重值所乘的點的偏移值,但是要表示坐標偏移的話,得加2個不是,ok那就233,分別表示x,y的偏移值。
所以結合上圖就非常好理解了,先conv一下,生成2N個特征圖,N為33=9。然后根據特征圖在原圖上取值,然后再進行卷積操作,就是這么簡單。
至于roi pooling,解釋不好,不說了。
v2:https://arxiv.org/pdf/1811.11168.pdf
主要解決個啥呢
v1不是非常規的形狀嗎?但是這樣有個缺點啊,容易提取冗余值,比如說,一個人牽著個狗,我要檢測狗,DCN某幾個節點給偏到人上去了,是不是很對,解決很簡單,把人上的那幾個點權重設為0 就好了啊、
這樣也是,每個卷積核上的每個點得來個權重,用來表示該點有沒有什么軟用。那就得3*N了
還有Faster-Rcnn怎么辦,mdcn提取特征的時候提取了一大堆冗余的數據,怎么搞呢,結合RCNN啊,
RCNN輸入的僅僅局部圖片,不會產生冗余數據,ok,怎么結合呢,最后產生的不是1024維度的向量嗎?做個相似度比較啊,cos上一下,就能盡量讓Fast-RCNN趨向RCNN,這樣來保證不產生冗余數據。
mmdet怎么搞呢,具體咋搞的就不說了,雜用的還可以,看18和27 的channels,是不是就是29和39,就是2個只有x,y。3個加了個m(權重),至于deformable_groups,那就是組卷積了。不說了,看代碼去
deformable_groups = dcn.get('deformable_groups', 1)if not self.with_modulated_dcn:conv_op = DeformConvoffset_channels = 18else:conv_op = ModulatedDeformConvoffset_channels = 27self.conv2_offset = nn.Conv2d(planes,deformable_groups * offset_channels,kernel_size=3,stride=self.conv2_stride,padding=dilation,dilation=dilation)總結
以上是生活随笔為你收集整理的mmdetection(2): DeformableConvNets(DCN)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【5G】NAS安全密钥衍生算法详解
- 下一篇: Arcgis去除矢量文件Z值和/或M值方