DenseNet

2017CVPR Best Paper《Densely Connected Convolutional Networks》

Github項目主頁: https://github.com/liuzhuang13/DenseNet

知乎上的一些討論: 如何評價Densely Connected Convolutional Networks?

DenseNet的高效版本,解決訓練佔用顯存大的問題: 《Memory-Efficient Implementation of DenseNets》

DenseNet屬於對ResNet擴展的一系列工作中比較有代表性的一個。

1. 方法介紹

這裏寫圖片描述

DenseNet整個網絡採用了模塊化設計,其中一個典型網絡模塊結構如下:

如上圖,該模塊共包含4層(BN+ReLU+Conv)。每一層都有一個“短路”或者“跳接”與其後的每一層相連。因此,4層實際上總共產生4+3+2+1=10個連接。

上述結構帶來的優點主要有:

  • 加強了信息前傳,避免了梯度的反傳消失
  • 加強了對特徵的多級綜合高效利用
  • 一定程度上可以使用更少的參數數量來達到相同的效果

2. DenseNet vs. ResNet

如果在Netscope這一網絡結構可視化平臺將DenseNet和ResNet分別進行可視化,你會發現二者的網絡結構 “看起來幾乎一樣”

這時候你有可能會有疑問:

  • 爲啥DenseNet和ResNet這麼像?
  • DenseNet那麼多“跳接”去哪了?

解決上面的疑問,請看下面DenseNet和ResNet的對比:

(1)DenseNet採用Concat層來整合不同來源的特徵,而ResNet則採用Eltwise層的加法操作。

DenseNet大部分的優勢都是Concat層帶來的:

  • Concat層只是特徵拼接,不對特徵做任何改變。因此,只需相鄰層的一個“短接”,後續所有層都可以擁有到該層的“通路”。 這些通路意味着更佳的信息前傳與梯度反傳
  • Concat層會使得feature map “變厚”,因此即使我們使用更少的卷積參數,feature map也不會因過小而產生信息瓶頸。這也是DenseNet一定程度上參數更少的原因。

(2)DenseNet採用transition層(BN+1x1卷積+2x2AvePooling)來實現下采樣,而ResNet則多采用MaxPooling以及卷積的stride。

(3)DenseNet由於在一個模塊中要使用Concat,因此feature map的大小必須保持不變。 而ResNet則會存在下面的這種下采樣的特殊情況:

發佈了137 篇原創文章 · 獲贊 876 · 訪問量 164萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章