Decoupled Dynamic Filter Networks
- 2021.5.6
- CVPR 2021
- https://arxiv.org/abs/2104.14107
Introduction
- 卷積缺點在於:內容不變,計算量高
- 動態filter可以根據內容自適應,但是會提高計算量。depth-wise卷積很輕量,但是會降低准確度
- 提出的DDF可以處理這兩個缺點,受attention影響,將depth-wise的動態卷積核解耦成空間和channel上的動態filter
Method
- 其實目標很明確,就是要設計一個動態卷積的操作,要做到content-adaptive並且比標准卷積輕量,其核心在於將動態的卷積核分成spatial和channel兩個維度上
- 高級的attention,但他並沒有在feature map上再乘以某個attention,而是把attention乘在filter上,再像普通卷積一樣乘在spatial上面,還挺有意思的,具體的操作可以如下所示,就是將3x3卷積替換成為下圖中的計算方法

- 這個圖介紹的還是非常清楚的,可以對兩個分支做一個具體的介紹。在特征圖上使用動態卷積核相當於在展開的特征上使用attention,所以我們將feature map展開來計算動態卷積核。
- 在spatial維度上,首先通過1x1的卷積將channel數變成\(k^2\),每個pixel所對應的\(k^2\)維向量就是我們所想要\(k \times k\)卷積的一部分值。
- 在channel維度上,通過GAP直接變成一維向量,通過一個SE block的squeeze過程,在實驗中實際的squeeze ratio 設為0.2,也就是圖中的\(\sigma\),最后將tensor的channel數變成\(k^2 \times c\)個,相當於是不同channel的一個attention值。
- 對於上述兩個過程計算的結果,通過BN進行歸一化后,將兩部分結果按位相乘,這樣就可以對原來的特征圖每一個pixel每一個channel都有一個通過attention后的卷積核,達到動態的效果,相當於每一步的卷積核都是通過feature map決定的,極大的減少了卷積核的參數
- 可以說對於原始的動態卷積來說,就是對不同的像素點采用不同的卷積核處理,所需要的filter參數量為\(c^{'}\times c\times k\times k\times h\times w\),現在的這個方法對此進行解耦后,將其簡化為channel維度上的\(c\times k\times k\)和spatial維度上的\(k\times k\times h\times w\),減少了相當多的參數
- 這個DDF模塊可以替換ResNet block中的3x3卷積
Result
- 從數據上來,看其參數量比普通卷積小,時間復雜度上和Depth-wise Conv類似
- 在分類任務上的結果也很好,和普通ResNet比參數量和計算量都減少了很多
- 和相關工作Dynamic Filter等的相比,可以看出DwCondConv也是很nb的
Conclusion
- 提出了一種新的動態卷積方法,結構也很好懂,可以通過feature直接計算出卷積核還是挺不錯的想法,還用在了上采樣中,一些FPN等說不定也可以用。之前看過的一些CondConv,DyConv好像都不是這樣的,這個計算方法也是建立在attention基礎之上的吧,真的到處都是attention。相比於傳統的ResNet還是節省了不少計算量的,參數量和計算方面都不錯。值得一提的是,這是我看過的很少數的只需要一張圖就可以完全理解這個內容怎么實現的文章,感謝作者的工作帶來的啟發。
