天天看點

論文閱讀:Deformable ConvNets v2

論文位址:http://arxiv.org/abs/1811.11168

作者:pprp

時間:2019年5月11日

0. 摘要

DCNv1引入了可變形卷積,能更好的适應目标的幾何變換。但是v1可視化結果顯示其感受野對應位置超出了目标範圍,導緻特征不受圖像内容影響(理想情況是所有的對應位置分布在目标範圍以内)。

為了解決該問題:提出v2, 主要有

  1. 擴充可變形卷積,增強模組化能力
  2. 提出了特征模拟方案指導網絡教育訓練: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 空間支援可視化

可視化三個内容:

  1. 有效感受野 : 可視化感受野
  2. 有效采樣位置: 對采樣點求梯度,然後可視化
  3. 誤差界限顯著性區域 : 參考顯著性分析理論,進行可視化

2.2 可變形網絡空間支援

論文閱讀:Deformable ConvNets v2

Faster R-CNN中Conv1-Conv4使用在Head中的,Conv5使用在Classification network上

論文閱讀:Deformable ConvNets v2

ResNet-50 Conv5裡邊的3$\times​$3的卷積層都使用可變形卷積替換。Aligned RoI pooling 由 Deformable RoI Pooling取代,當offset學習率設定為0,那麼Deformable RoI Pooling就退化為Aligned RoI Pooling。 ps: 這是V1中的操作。

論文閱讀:Deformable ConvNets v2

從中觀察到:

  1. 正常卷積可以一定程度上模拟幾何變化,通過網絡權重做到的
  2. 可變形卷積模拟幾何變化能力顯著提升,但是不夠精确。

3. 更多可變形卷積層

v2 中進行改進的部分主要有三點

3.1 使用更多的可變形卷積

在Conv3, Conv4, Conv5中所有的3$\times​$3的卷積層全部被替換掉。對于pascal voc簡單資料集,堆疊三層以上就會飽和。

3.2 在DCNv1基礎(添加offset)上添加幅值參數

回顧一下DCNv1:

論文閱讀:Deformable ConvNets v2

R 是相當于3$\times$3的kernel, \(p_0\)是目前中心點,\(p_n\)枚舉每一個點。

論文閱讀:Deformable ConvNets v2

可見,在普通卷積基礎上,offset \(\Delta p_n​\)是主要改進點。

那DCNv2主要改了哪些地方?

論文閱讀:Deformable ConvNets v2

在v1基礎上,添加了\(\Delta m_k\), 一個控制幅值變化的量。

ROI pooling是如何改進的?

先看Faster R-CNN中的ROI Pooling:

論文閱讀:Deformable ConvNets v2

然後先看DCNv1的Deformable RoI Pooling

論文閱讀:Deformable ConvNets v2
論文閱讀:Deformable ConvNets v2

主要是添加了offset fields \(\Delta p_{ij}\) 來控制偏移部分。

DCNv2的Deformable RoI Pooling也是将幅值引入,如下圖:

論文閱讀:Deformable ConvNets v2

類似的也添加了幅值變量,在訓練的過程中進行學習。

3.3 R-CNN Feature Mimicking

論文閱讀:Deformable ConvNets v2

采用了類似知識蒸餾的方法,用一個R-CNN分類網絡作為teacher network 幫助Faster R-CNN更好收斂到目标區域内。

得到ROI之後,在原圖中摳出這個ROI,resize到224x224,再送到一個RCNN中進行分類,這個RCNN隻分類,不回歸。然後,主網絡fc2的特征去模仿RCNN fc2的特征,實際上就是兩者算一個餘弦相似度,1減去相似度作為loss即可

代碼

GitHub幾個源碼

  1. https://github.com/msracver/Deformable-ConvNets 官方提供的版本,有DeepLab, Faster R-CNN, FPN, R-FCN等。源碼使用的是mxnet。
  2. https://github.com/open-mmlab/mmdetection 內建了可變形卷積,源碼使用的是pytorch。
  3. https://github.com/ChunhuanLin/deform_conv_pytorch 測試deform_conv_V1的準确度的demo.py,源碼使用的是pytorch。
  4. https://github.com/4uiiurz1/pytorch-deform-conv-v2一個簡單版本的DCNv2 ,源碼使用的是pytorch
  5. 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

代碼改變世界

繼續閱讀