1. 程式人生 > >論文討論&&思考《Deformable Convolutional Networks》

論文討論&&思考《Deformable Convolutional Networks》

思想 ranch 什麽 解決 detection min 是把 暫時 來看

  這篇論文真是讓我又愛又恨,可以說是我看過的最認真也是最多次的幾篇paper之一了,首先deformable conv的思想我覺得非常好,通過end-to-end的思想來做這件事也是極其的make sense的,但是一直覺得哪裏有問題,之前說不上來,最近想通了幾點,先初步說幾句,等把他們的代碼跑通並且實驗好自己的幾個想法後可以再來聊一聊。首先我是做semantic segmentation的,所以只想說說關於這方面的問題。

  直接看這篇paper的話可能會覺得ji feng的這篇工作非常棒,但實際上在我看來還是噱頭多一點(我完全主觀的胡說八道),deformable conv是STN和DFF兩篇工作的結合,前者提供了bilinear sample的思路和具體的bp,後者提供了warp的思路和方法,不過好像說的也不是很準確。。我暫時的理解是這樣的:deformable conv就是把deep feature flow中的flow換成了可學習的offset。接下來分為亮點和槽點來說一說。

一、亮點

  亮點說實話還是很多的,首先解決了STN(spatial transform network)的實用性問題,因為STN是對整個feature map做transform的動作,例如學習出一個linear transform的 matrix,這個在做minist的時候當然是極其合理的,但是在真實世界中,這個動作不僅不合理而且意義不大的,因為復雜場景下的信息很多,背景也很多,那麽它是怎麽做的呢?

  首先我想先說一個很重要的誤區,很多人以為deformable conv學習的是個deformabe 的kernel,比方說本來是一個3*3相互連接的kernel,最後變成了一個沒個位置都有一個offset的kernel。實際情況並不是這樣的,作者並沒有對kernel學習offset,而是對feature的每個位置學習一個offset,一步一步的解釋就是:首先有一個原始的feature map F,在上面做channel為18的3*3的卷積,得到channel=18的feature map F_offset,然後再對F做deformable conv並且傳入offset 的值F_offset,在新得到的結果上,每個值對應原來的feature map F上是從一個3*3的kernel上計算得到的,每個值對應的F上的3*3的區域上的每個值都有x、y方向上的兩個offset,這3*3*2=18的值就由剛才傳入的F_offset決定。。。。貌似說的有點繞,其實理清楚關鍵的一點就是:學習出來的offset是channel=18並且和原 feature map一樣大小的,對應的是main branch上做deformable conv時候每位置上的kernel的每個位置的offset。

                  技術分享 

知乎上有個人說了一句我特別贊同的話:用bilinear的方法代替weight的方法,即用采樣代替權重的方法。這個思維是可以發散開來做更多的工作的,這也是我覺得這篇paper最棒的地方。

二、槽點

  這個其實我今天寫篇blog的重點。。。我對offset能否學習到極其的的不看好,雖然最後還要看實驗的效果和實際的結果,當我想說兩點。

  1、從feature的需求來看,senmantic segmentation對於feature的需求是跟detection不同的,這個問題其實jifeng Dai和kaiming的R-FCN中都提到過,然後semantic segmentation需要的feature不會過於關註什麽旋轉平移不變性,也就是物體的旋轉平移對結果是有影響的,他們對position是care的,這個問題有時間我想再看看R-FCN討論一發,因此這裏直接用feature 通過一層卷積就可以學習到offset,我是懷疑的。

  2.上面的懷疑其實有點沒道理,這次有個稍微有那麽一丟丟的懷疑,bilinear sample其實是一個分段線性函數,所以邏輯上在bp的時候,你要想你的目的是讓loss下降的話,就不能讓你的step太大以至於超過來當前的線性區間,也就是你在當前四個點中算出來梯度,如果你更新後跳到另外四個點上來,理論上這次的gradient的更新就是錯誤的,loss是不一定下降的,但是話說回來,如果不跳到另外四個點,這個offset永遠限制在當前四個點裏面的話,也是毫無意義的。話再說回來,因為整個feature map還是smooth的,這也跟圖像的性質有關,所以我們還是比較相信只要你的lr不是很大,loss還是會下降的。  

三、總結

  總的來說這是一篇很有意義的工作,在我看來,任何能啟發之後的工作和引起人思考的工作都是很有意義的,無論它work不work,在benchmark跑的怎麽樣。

  還有些東西我想等實驗跑完再來說說,所以待續~

論文討論&&思考《Deformable Convolutional Networks》