1. 程式人生 > >經典計算機視覺論文筆記——《Going Deeper with Convolutions》

經典計算機視覺論文筆記——《Going Deeper with Convolutions》

        2014年imageNet挑戰賽冠軍,Inception系列的開創者,caffe作者賈揚清,google研發……使這篇論文成為深度學習與視覺領域的必讀論文,兩年時間引用量過千。私以為文中理論部分有點囉嗦,反覆強調sparse structure。但精彩之處還是其提出的一種特殊的inception網路結構。

技術概括

  • 提出了一種新型的網路組建單元Inception。其特點是將幾種操作並行化,最後再將這幾種操作的輸出concatenation為一個多通道影象,作為下一層的輸入。這幾種操作包括:1*1,3*3,5*5的多解析度的卷積操作,外加一個max pooling操作。
  • 提出了一種多loss的網路結構,在網路的中間部分就外接分類的softmaxloss,所有loss都會加權累加到一起作為總loss進行bp。

一些值得反思的細節

  • 計算複雜度分析。GoogleNet即為Inception V1(後續還有V2-V4),共22層,比AlexNet多了14層,但引數少了12倍,大約500萬個引數,caffemodel只有40多M,適合記憶體資源較少的場景。一次預測需要15億次加乘。通過對Inception單元的合理組織,運算速度也會有2-3倍的提高(文中沒有說得太清楚,估計計算速度不是強項)。
  • 大量使用了NIN的1*1卷積結構。這種結構的好處就是可以降維減參。
  • 文中提出了引數過多帶來的影響:過擬合、計算負擔過重。所以要減參,即上下兩層的連線不要dense,要sparse。當然卷積就是一種sparse structure。但作者認為還不夠sparse,所以在每個patch進行convolution時,通過1*1kernel,讓連線變得更sparse。這種結構的壞處也很明顯,就是感受野更小更區域性化了,所以又加入了多解析度策略,讓1*1,3*3,5*5的kernel並行處理,覆蓋各種範圍。另外在3*3和5*5的convolution之前先做了一下1*1的convolution來降維減參。作者認為雖然引數變少了,連線變sparse了,但多層的stack結構是可以逼近dense結構的表達能力的。
  • 採用了NIN的average pooling層,但最後還是接了一個全連線層,這樣會方便fine-tuning。比如待分的類別個數變了,NIN把倒數第二層的feature maps的個數寫死了,就沒法fine-tuning了。
  • 中間加的分類器,只訓練時用,預測時不用。
  • 訓練時的技巧:不同的取樣方式;不同解析度的crops;影象變換擴充。
  • 預測時的技巧:不同取樣方式訓練7個不同分類器;多種不同crops——尺度4*正方形crops3*隨機crops6*水平flips2=144;7個分類器*144個crops=1008個結果做平均。
  • 目標檢測時,框架同R-CNN,但改進了proposal部分,增大box的大小,增加proposal的覆蓋率。沒用bbox regression。

借鑑之處

  • 新的網路結構的設計就是要遵循兩點:網路更深,但同時引數量不爆炸。全連線顯然是不行的,只能採用稀疏連線的方式,而稀疏連線就是各種卷積的變形與stack了。
  • 使用ensemble一般都會提高精度。但計算量提高。比如文中1008倍的計算壓力,在併發量較大的預測時顯然是行不通的。