天天看點

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

可變形卷積網絡Deformable ConvNets V1、V2

  • 前言
  • 一、Deformable Convolutional Networks
    • Deformable Convolution
    • Deformable RoI Pooling
    • Position-Sensitive (PS) RoI Pooling
    • offset偏移學習
    • 實驗效果
    • 思考
  • 二、Deformable ConvNets v2
    • Stacking More Deformable Conv Layers
    • Modulated Deformable Modules
    • R-CNN Feature Mimicking
    • 思考

前言

2017年《Deformable Convolutional Networks》

論文位址:https://arxiv.org/pdf/1703.06211.pdf

2018年《Deformable ConvNets v2: More Deformable, Better Results》

論文位址:https://arxiv.org/pdf/1811.11168.pdf

由于構造卷積神經網絡所用的子產品中幾何結構是固定的,其幾何變換模組化的能力本質上是有限的。可以說CNN還不能很好實作旋轉不變性的。在以往會使用資料增強的方式,讓網絡強行記憶不同的幾何形狀。

作者認為以往的固定形狀的卷積是網絡難以适應幾何變形的“罪魁禍首”,比如同一層的特征圖的不同位置可能對應的是不同形狀的物體,但是都和同一個形狀卷積做計算,那麼不能很好的将感受野作用在整個物體之上,是以提出了可變性卷積。

一、Deformable Convolutional Networks

下圖展示了卷積核大小為 3x3 的正常卷積和可變形卷積的采樣方式,(a) 所示的正常卷積規律的采樣 9 個點(綠點),(b)( c)(d) 為可變形卷積,在正常的采樣坐标上加上一個位移量(藍色箭頭),其中 ( c)(d) 作為 (b) 的特殊情況,展示了可變形卷積可以作為尺度變換,比例變換和旋轉變換的特殊情況 :

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

下面介紹,如何計算偏置位移量:

Deformable Convolution

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

假設輸入的特征圖為WxH,将要進行的可變性卷積為kernelsize=3x3,stride=1,dialated=1,那麼首先會用一個具有與目前可變性卷積層相同的空間分辨率和擴張率的卷積(這裡也要k=3x3,s=1,dial,才能保證偏移個數一緻)進行學習offset。conv會輸出一個WxHx2N的offset filed(N是可變性卷積的3x3=9個點,2N是每個點有x和y兩個方向向量)。之後,DConv可變形卷積核會根據偏移量進行卷積。

偏移量是小數,需要對原特征圖進行雙線性插值。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

下圖是連續三級可變形卷積帶來的效果,每一級卷積都用3*3的卷積核做卷積,三層卷積後就能産生93=729個采樣點。可以看到經過訓練後所有的采樣點都偏移到了不同尺度目标周圍。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

Deformable RoI Pooling

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

可變性ROIPooling的偏移值計算:首先RoI pooling産生pooled feature maps(綠色),然後用FC去學習歸一化後的偏移值(為了使偏移量學習不受RoI大小的影響,需要對偏移量進行歸一化),這個變量會和(w, h)做點乘,然後再乘以一個尺度因子,其中w,h是RoI的寬和高,而伽馬是一個0.1的常數因子。用該位移作用在可變形興趣區域池化(藍色)上,以獲得不局限于興趣區域固定網格的特征。p也是個小數,需要通過雙線性插值來得到真正的值。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

個人了解,前者是為了讓deformable能和RoI的尺度結合起來,更好地估計偏移位置;而後者是為了防止偏移量太大甚至超出RoI和整個圖像。

調整後的bin如圖紅色框所示:此時并不是規則的将黃色框ROI進行等分成3x3的bin。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

Position-Sensitive (PS) RoI Pooling

另外就是作者還搞出了一個和R-FCN的位置敏感比較類似的另一種RoI方法,同樣是考慮deformable因素的,叫Position-Sensitive (PS) RoI Pooling,這裡就不詳細介紹了

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

偏移式學習是不同的,如圖所示。在頂部分支中,一個conv層生成全空間分辨率偏移字段。對于每個RoI(同樣對于每個類别),在這些字段上應用PS RoI池化,得到歸一化偏移量∆pbij,然後将其轉換為真實偏移量∆pij,方法與上述可變性RoI池化相同。

offset偏移學習

作者采用的是0初始化,然後按照網絡其它參數學習率的 β \beta β倍來學習,這個 β \beta β預設是1,但在某些情況下,比如faster rcnn中的fc的那些,是0.01。

此外,并不是所有的卷積都一股腦地換成可行變卷積就是好的,在提取到一些語義特征後使用形變卷積效果會更好一點,一般來說是網絡靠後的幾層。下圖是在不同層加入可變形卷積所帶來的性能提升:

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

實驗效果

加入DCN,參數量和速度隻會略微增加:

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

下圖是在各項任務中的性能對比:加入可變性卷積或者可變性ROI池化都能帶來提升。(Atrous convolution也叫做空洞卷積dilated convolution)

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

思考

總而言之,卷積改變為類似采樣的思路都是很有意義的,但是會存在以下幾點需要顧及的地方:是否一層網絡真的能有效學習偏置?不同圖檔的大量不同物體在offset優化上會不會引發競争什麼的(偏置會存在自己的偏好)?

二、Deformable ConvNets v2

本文對V1做了3方面的改進:增加可變形卷積的層數,增加可調節的可變形子產品,采用蒸餾的方法模仿RCNN的特征。

Stacking More Deformable Conv Layers

本文題目就是More Deformable, Better Results。v1中使用的ResNet-50,隻将conv5中的共3層3x3卷積換成了可變形卷積,本文則将conv3,conv4和conv5中一共12個3x3的卷積層都換成了可變形卷積。v1中發現對于pascal voc這樣比較小規模的資料集來說,3層可變形卷積已經足夠了。同時錯誤的變形也許會阻礙一些更有挑戰性的benchmark上的探索。作者實驗發現在conv3到conv5中使用可變形卷積,對于COCO上的object detection來說,是效率和精度上最好的均衡。△pk,△mk都是通過一個卷積層進行學習,是以卷積層的通道數是3N,其中2N表示△pk,這和DCNv1的内容是一樣的,剩下N個通道的輸出通過sigmoid層映射成[0,1]範圍的值,就得到△mk。

Modulated Deformable Modules

v1僅僅給普通的卷積的采樣點加了偏移,v2在此基礎上還允許調節每個采樣位置或者bin的特征的增益,就是給這個點的特征乘以個系數,如果系數為0,就表示這部分區域的特征對輸出沒有影響。這樣就可以控制有效的感受野。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

從實驗上來看,增加DConv的數量,提升還是很明顯的;但是Modulated Deformable Modules參數量增加很多,而帶來的性能提升很微弱。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

R-CNN Feature Mimicking

在detection訓練過程中,如果有大量不在roi内的内容,可能會影響提取的特征,進而降低最終得到的模型的精度(但不是說沒有額外的context就一定不好,加上這裡性能提升微弱,是以說這裡還是有待更多的思考。)。

對于V2來說,将在RoIpooling中RoI之外的調節系數設為0可以直接去除無關的context,但是實驗表明這樣還是不能很好的學習RoI的特征,這是由于Faster R-CNN本身的損失函數導緻的,是以需要額外的監督信号來改善RoI特征提取的訓練。由于,RCNN訓練時是裁剪出roi,使用roi進行訓練,是以大大減小了無關區域對特征提取的影響。但是如果直接将RCNN引入到fasterRCNN中,會導緻訓練和測試的時間大大增加。

于是作者采用feature mimicking的手段,強迫Faster R-CNN中的RoI特征能夠接近R-CNN提取的特征。引入feature mimic loss,希望網絡學到的特征與裁剪後的圖像經過RCNN得到的特征是相似的,在這裡設定loss如下,采用的是cos相似度評價名額。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

網絡訓練的架構如上圖所示,右側其實就是一個R-CNN,不過後面隻接了分類的branch。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

還有就是雖然上圖畫了兩個網絡,但是R-CNN和Faster R-CNN中相同的子產品是共用的相同的參數,比如Modulated Deformable Convolutions和Modulated Deformable RoIpooling部分。inference的時候就隻需要運作Faster R-CNN的部分就行了。這樣的話,增加的運算量就小了。

思考

看R-CNN Feature Mimicking實驗結果:

  1. 對于前景上的正樣本,使用Mimicking是特别有用的,對于負樣本背景,網絡傾向于利用更多的上下文資訊(context),在這種情況下,Mimicking沒有幫助。是以FG Only最好
  2. 在沒有mdconv的網絡上,使用Mimicking的提升幅度要小一些,隻有0.3個點。這裡将之前的Modulated Deformable Modules(漲點也少,兩個一起使用漲點就稍微明顯一些)一起分析:僅僅通過Modulated帶來的提升還是比較有限的,主要原因在于現有的損失函數難以監督模型對無關緊要的區域設定較小的權重,是以在模型訓練階段引入RCNN feature mimicking,通過RCNN網絡提供有效的監督資訊,發揮modulation的權重作用,使得提取到的特征更加集中于有效區域,是以漲點會更加明顯。如果對于Modulated Deformable Convolutions能找到一個更好的學習機制,那麼我感覺,僅僅是Modulated Deformable Modules也可以帶來更好性能提升。
    CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

看不同尺度上的一些結果:

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2
  1. APL:800 -> 1000 不加可變性卷積(或者是加的不夠多的也會掉點,從下表的綠藍部分可見)都掉點了 [小物體APs漲了],但是 deformable 相關的在漲。分析:把圖檔調大會等價于減少網絡的 receptive field,是以大物體會變得很差。那麼這樣DCN在調大圖檔仍然上漲 performance 就合理了,因為畢竟能動态調整感受野。
CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

個人觀點,歡迎交流:

按理說多加幾層的DCN本應該在V1的時候就應該做實驗得到結果,而不應該放在V2的時候說我們多加幾層能漲好多點(本篇論文也基本是靠這個漲了很多點),後來看見了其中一個原作者的回答就合理了:

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

連結:https://www.zhihu.com/question/303900394

modulated 和feature mimicking 漲點都很少,有人會覺得這兩項不過是為了發論文而想出來的華而不實的新點子,看起來比較有創新,畢竟漲分靠的是多加幾層DConv。但是個人覺得給每個感受野增加增益系數确實是很有創新的,就好比是考慮了信号的相位,接着需要考慮幅度,很自然的想法。但是為什麼收益甚微?然而modulated和feature mimicking 一起使用就顯出了效果?感覺就是這個增益系數缺少合适的監督資訊,訓練起來的效果不太好,加入了feature mimicking能提供更多更好的監督資訊讓增益系數得以學習。

CNN卷積神經網絡之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)前言一、Deformable Convolutional Networks二、Deformable ConvNets v2

進一步思考一下,怎樣才能讓卷積更好的學習△mk?從前面可以知道△pk,△mk都是通過一個卷積層進行學習得來的,那麼一個卷積層是不是不足以學習如此多的參數了;對于△mk可不可以在學習的時候加入正則化方法,因為一個特征圖上需要重點關注的地方是有限的,此外也不能一個地點也不關注;要不要在每個特征圖上加入更多的監督,加入增益系數的損失函數 😃

歡迎交流,禁止轉載!

上一篇:目标檢測之FPN

繼續閱讀