影像處理論文詳解 | Deformable Convolutional Networks | CVPR | 2017

忽逢桃林發表於2020-12-19

文章轉自同一作者的微信公眾號:【機器學習煉丹術】

0 前言

首先理解:

  • deformable Convolution可變卷積針對的物件是卷積本身,因此膨脹卷積,3D卷積都可以用可變卷積的形式
  • 本篇文章講解理論和論文,我還沒有用上這個可變卷積測試效果,因為PyTorch好像還沒有封裝這個卷積方式,有點麻煩。所以我計劃下一篇文章結合github上已經有的pytorch復現的可變卷積來做一個簡單的測試。
  • 本來我是在學輪廓檢測演算法的,看到了一個SO他的演算法叫做deep snake,然後看了半天程式碼,發現裡面巢狀了DCN,DLA等多個演算法,所以就從頭開始學了。

1 論文概述

論文中作者最大的貢獻為:

  1. 提出了可變卷積,可變卷積網路為Deformable ConvNet(DCN)。
  2. 用同樣的原理提出了可變池化層,叫做deformable ROI pooling。
  3. 這兩個模組可以非常簡單的用在其他網路結構中,並且不會增加很多的引數,但是效果還是不錯的。(論文把這個方法用在了主流模型中)。

這個核心貢獻在於,為什麼卷積過程中卷積核一定要是正方形的?我的檢測目標各種形狀都有,為什麼卷積核一定要是正方形的呢?

因此,這裡的卷積核不再是正方形了,而是可以通過梯度下降更新的引數了:

a圖就是最基本的卷積核,b就是可變卷積的卷積核,c和d是可變卷積的特殊情況。聽起來不難吧,原理確實非常的簡單。

2 實現原理

上圖是表示可變卷積過程的。大概看一眼這個圖,不難發現這種結構似乎和SEnet有點類似。在下一篇的程式碼實戰中再考慮如何實現這個過程把。

泛泛地說的話,就是這個特徵圖,再額外的經過一個卷積層,生成一個offset的結果,然後把這個offset和這個特徵圖融合。

3 實驗結果

論文中提到,在特徵提取網路的後面3層使用可變卷積的效果比較好。

上圖是在實際任務中,deformable convnets學習到的取樣點,我認為這是一種非常有意思的可解釋性的體現。

上表中最後三行體現了這個可變卷積的效果,確實是不錯,確實有一定提升,那麼這種可變卷積對與引數量的影響大嗎?

可以看到,這個引數的影戲那個微乎其微,執行時間也基本差不多。我決定等我復現了這個可變卷積之後,我在以後的模型中都要用這個試試能不能有提升。(奇怪的奇技淫巧又增加了)。

大概就這麼多,從理論上看,這個deformable convolution不難,關鍵是如何實現,希望我在復現的過程上不會太坎坷。

參考文章:

  1. https://arxiv.org/abs/1703.06211
  2. https://littletomatodonkey.github.io/2018/12/02/2018-12-02-Deformable ConvNets/
  3. https://zhuanlan.zhihu.com/p/52476083

相關文章