論文位址:http://arxiv.org/abs/1811.11168
作者:pprp
時間:2019年5月11日
0. 摘要
DCNv1引入了可變形卷積,能更好的适應目标的幾何變換。但是v1可視化結果顯示其感受野對應位置超出了目标範圍,導緻特征不受圖像内容影響(理想情況是所有的對應位置分布在目标範圍以内)。
為了解決該問題:提出v2, 主要有
- 擴充可變形卷積,增強模組化能力
- 提出了特征模拟方案指導網絡教育訓練:feature mimicking scheme
結果:性能顯著提升,目标檢測和分割效果領先。
1. 簡介
Geometric variations due to scale, pose, viewpoint and part deformation present a major challenge in object recognition and detection.
目标檢測一個主要挑戰:尺度,姿勢,視角和部件變形引起的幾何變化
v1 引入兩個子產品:
- Deformable Convolution : 可變形卷積
- 通過相對普通卷積基礎上添加的偏移解決
- Deformable RoI pooling : 可變形 RoI pooling
- 在RoI pooling 中的bin學習偏移
為了了解可變形卷積,進行了可視化操作:
-
samples for an activation unit tend to cluster around the object on which it lies.
- 激活單元樣本點聚集在目标附近
- 但是覆寫範圍不夠精确,超出the area of interest
由此提出DCNv2, 具有增強模組化的能力,可用于學習可變形卷積
with enhanced modeling power for learning deformable convolutions.
添加了兩種互補的模式:
- 更廣泛應用可變形卷積,在更多層上使用可變形卷積
- 在原有基礎上不僅加上偏移(offset),而且加上幅值(amplitude)的控制
為了充分利用可變形卷積提取的資訊,吸取知識蒸餾的手段,進行教育訓練。
- 教師網絡:R-CNN, 針對裁剪内容進行分類的一個網絡,防止學習不在目标範圍以外的内容
- 學生網絡:Faster R-CNN
2. 可變形卷積行為分析
2.1 空間支援可視化
可視化三個内容:
- 有效感受野 : 可視化感受野
- 有效采樣位置: 對采樣點求梯度,然後可視化
- 誤差界限顯著性區域 : 參考顯著性分析理論,進行可視化
2.2 可變形網絡空間支援
Faster R-CNN中Conv1-Conv4使用在Head中的,Conv5使用在Classification network上
ResNet-50 Conv5裡邊的3$\times$3的卷積層都使用可變形卷積替換。Aligned RoI pooling 由 Deformable RoI Pooling取代,當offset學習率設定為0,那麼Deformable RoI Pooling就退化為Aligned RoI Pooling。 ps: 這是V1中的操作。
從中觀察到:
- 正常卷積可以一定程度上模拟幾何變化,通過網絡權重做到的
- 可變形卷積模拟幾何變化能力顯著提升,但是不夠精确。
3. 更多可變形卷積層
v2 中進行改進的部分主要有三點
3.1 使用更多的可變形卷積
在Conv3, Conv4, Conv5中所有的3$\times$3的卷積層全部被替換掉。對于pascal voc簡單資料集,堆疊三層以上就會飽和。
3.2 在DCNv1基礎(添加offset)上添加幅值參數
回顧一下DCNv1:
R 是相當于3$\times$3的kernel, \(p_0\)是目前中心點,\(p_n\)枚舉每一個點。
可見,在普通卷積基礎上,offset \(\Delta p_n\)是主要改進點。
那DCNv2主要改了哪些地方?
在v1基礎上,添加了\(\Delta m_k\), 一個控制幅值變化的量。
ROI pooling是如何改進的?
先看Faster R-CNN中的ROI Pooling:
然後先看DCNv1的Deformable RoI Pooling
主要是添加了offset fields \(\Delta p_{ij}\) 來控制偏移部分。
DCNv2的Deformable RoI Pooling也是将幅值引入,如下圖:
類似的也添加了幅值變量,在訓練的過程中進行學習。
3.3 R-CNN Feature Mimicking
采用了類似知識蒸餾的方法,用一個R-CNN分類網絡作為teacher network 幫助Faster R-CNN更好收斂到目标區域内。
得到ROI之後,在原圖中摳出這個ROI,resize到224x224,再送到一個RCNN中進行分類,這個RCNN隻分類,不回歸。然後,主網絡fc2的特征去模仿RCNN fc2的特征,實際上就是兩者算一個餘弦相似度,1減去相似度作為loss即可
代碼
GitHub幾個源碼
- https://github.com/msracver/Deformable-ConvNets 官方提供的版本,有DeepLab, Faster R-CNN, FPN, R-FCN等。源碼使用的是mxnet。
- https://github.com/open-mmlab/mmdetection 內建了可變形卷積,源碼使用的是pytorch。
- https://github.com/ChunhuanLin/deform_conv_pytorch 測試deform_conv_V1的準确度的demo.py,源碼使用的是pytorch。
- https://github.com/4uiiurz1/pytorch-deform-conv-v2一個簡單版本的DCNv2 ,源碼使用的是pytorch
- https://github.com/chengdazhi/Deformable-Convolution-V2-PyTorch/tree/pytorch_1.0.0 Pytorch 1.0 最新的完整的DCNv2
參考文獻
https://blog.csdn.net/u013841196/article/details/80713314
http://arxiv.org/abs/1811.11168
https://www.cnblogs.com/jiujing23333/p/10059612.html
https://www.jianshu.com/p/23264e17d860
代碼改變世界