2017-CVPR-DenseNet

這裏寫圖片描述

idea來源:

在隨機深度網絡(deep networks with stochastic depth)paper中,提出一種類似dropout的方法改進ResNet,作者發現在訓練時每一步被隨機丟掉一些層,可以顯著提高ResNet的泛化性能。這帶給作者兩點啓發:

  1. 神經網絡的設計並不一定要是一個遞進層次結構,也就是說網絡中的某一層可以不僅僅依賴於緊鄰的上一層的特徵,而可以更依賴於更之前學到的特徵。
  2. 隨機丟棄一些層不會破壞算法的收斂性,說明ResNet具有冗餘性,每一層都只提取了很少的特徵(即所謂的殘差)。

因此,作者提出兩點:

  1. 讓網絡中的每一層都直接與前面的層相連,實現特徵的重複利用;
  2. 把網絡的每一層設計的特別窄(即只學習非常少的feature map),達到降低冗餘性的目的。
    這裏寫圖片描述

DenseNet優點:

  1. 緩解梯度消失問題

    把前面的層帶到後面來,ResNet中“殘差”思想體現。paper裏說的是“create short paths from early layers to later layers”。

  2. 增強feature的傳遞,使feature重複利用(省計算,效率高)

  3. 減少參數數量(節省帶寬,降低存儲開銷)

    在CNN設計中,參數數量,計算力,內存佔用等都是極爲重要的考慮,Bottleneck layer設計(1x1卷積的使用)、down-sampling設計(stride convolution,pooling)、dropout、BN、No FC(全卷積網絡的設計)等都是有利於省參數、省計算的操作。模型壓縮需要重點關注一下!

  4. 抗過擬合

    原因解釋:神經網絡每一層提取到的特徵都相當於對輸入數據的一個非線性變換,而隨着深度的增加,變換的複雜度也逐漸增加(更多非線性函數的複合)。相比於一般神經網絡的分類器直接依賴於網絡最後一層(複雜度最高)的特徵,DenseNet可以綜合利用淺層複雜度低的特徵,因而可以更容易得到一個光滑的具有更好泛化性能的決策函數。

    y由於DenseNet不容易過擬合,在數據集不是很大的時候表現尤其突出。可以省略在ImageNet上的預訓練,在醫學圖像,衛星圖像等(與預訓練的ImageNet自然圖像有明顯差別)任務上具有非常廣闊的應用前景。
    這裏寫圖片描述

相關鏈接

  1. paper:Densely Connected Convolutional Networks

  2. Torch implementation:
    https://github.com/liuzhuang13/DenseNet/tree/master/models

    PyTorch implementation:
    https://github.com/gpleiss/efficient_densenet_pytorch

    MxNet implementation:
    https://github.com/taineleau/efficient_densenet_mxnet

    Caffe implementation:
    https://github.com/Tongcheng/DN_CaffeScript

  3. 具體細節:DenseNet算法詳解

  4. 參考:CVPR 2017最佳論文作者解讀:DenseNet 的“what”、“why”和“how”|CVPR 2017

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章