現在目標檢測中,比較出色的yolov2,ssd都是採用全卷積層,而非之前rcnn系列的全連接層,這樣做除了參數減少外,在特徵提取方面有什麼優勢?是否意味著全連接在目標檢測中會逐漸被取代?


卷積不過是一個稀疏的全連接;全連接也不過是一個畫面那麼大的卷積。本質上都可以理解為矩陣乘法(卷積可以參考托普利茲矩陣和塊循環矩陣),相比起來卷積這種形式可以很好捕捉圖像這種有空間相關性輸入的特徵。沒有什麼替不替代,只是目前CNN因為效果好很火熱而已。


卷積層和全連接層在理論上是可以互換的。

但是卷積層換全連接比較好,優點有兩個:

  1. 輸入更靈活,可以接受任意解析度的圖像;
  2. 減少計算量,只需要做一次前向就可以得到一張熱力圖,然後可以根據stride和polling等參數反算出原圖大致的位置。

更詳細的分析可以可以見

《CNN中使用卷積代替全連接》?

github.com圖標


本身conv和fc兩者在設計好conv大小的情況下就是等價的, 沒有什麼取代不取代的.

基本上可以理解全conv就是拿一個小點的fc不停的在圖片不同位置上跑, 當然, 有層數的情況下不嚴格一樣, 但是差不了多少.

fc不願意用是因為鎖死解析度, 而且容易造成模型參數太多, 性能上受限制. 但是fc可以考慮全圖的所有信息, 不過這個也可以通過receptive field達到全圖的conv來實現.

所以, 兩者可以等價,但是fcn更加靈活, 為毛不用fcn?


全卷積層替換全連接層並不能減少參數。

假設上層特徵圖為256*7*7,全連接層為4096,則參數個數應該是7*7*256*4096.

替換成全卷積層之後,卷積核大小為7*7*256,輸出為4096*1*1,所以參數個數為7*7*256*4096。

並沒有減少參數個數,詳情可參見:全連接層的作用是什麼? - 魏秀參的回答 - https://www.zhihu.com/question/41037974/answer/150522307

--2018.4.27更新--

要想起到參數減少需要一個global average pooling的過程,而相應的卷積操作並不是全卷積。


因為通過實驗發現全連接層沒啥貢獻,所以就取消了唄


騷年,怎麼減少參數?


推薦閱讀:
相关文章