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

  這篇論文真是讓我又愛又恨,能夠說是我看過的最認真也是最屢次的幾篇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。接下來分爲亮點和槽點來講一說。學習

1、亮點spa

  亮點說實話仍是不少的,首先解決了STN(spatial transform network)的實用性問題,由於STN是對整個feature map作transform的動做,例如學習出一個linear transform的 matrix,這個在作minist的時候固然是極其合理的,可是在真實世界中,這個動做不只不合理並且意義不大的,由於複雜場景下的信息不少,背景也不少,那麼它是怎麼作的呢?orm

  首先我想先說一個很重要的誤區,不少人覺得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。blog

 

                   

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

2、槽點io

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

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

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

 

3、總結

  總的來講這是一篇頗有意義的工做,在我看來,任何能啓發以後的工做和引發人思考的工做都是頗有意義的,不管它work不work,在benchmark跑的怎麼樣。

還有些東西我想等實驗跑完再來講說,因此待續~

相關文章
相關標籤/搜索