1. 程式人生 > >Densely Connected Convolutional Networks(DenseNet)

Densely Connected Convolutional Networks(DenseNet)

讀了一天終於把DenseNet這篇巨屌無比的文章讀完了,為何說它厲害呢,因為它在很多方面超越了ResNet。大家知道,ResNet是何凱明大神15年的大作,它讓深度學習的檢測效果更上一層樓,後來很多的網路也都是在ResNet的基礎上改進的。DenseNet是17年CVPR的Best Paper,那倆年後的這個新網路結構是怎樣的,是如何超越ResNet,接下來我就一一道來。

首先我先給一個圖,讓大家有一個直觀的認識:
這裡寫圖片描述
這是DenseNet的一個基本結構單元,叫做一個Dense Block,幾個這樣的單元串在一塊兒就形成了完整的DenseNet。
先說一下這裡的符號,其中圖裡的x代表輸入以及得到的特徵圖,H代表執行的操作,比如講BN,Relu,Conv打包成一個操作就叫H,k是叫做growth rate,我個人理解就是指的每層輸出的特徵圖個數,比如圖中每層輸出特徵圖為4,所以k=4,另外從圖中也可以看出這裡有x0,x1…x4一共五層卷積。
再說一下重要結構,這裡和普通的卷積神經網路的一個重要區別就是每一層的輸入不僅僅是緊鄰上一層的輸出,還包括之前所有層的輸出,也就是每一層的輸出與後邊每一層相連。

繼續上圖!
這裡寫圖片描述

完整的結構如圖所示,每倆個Dense Block中間的Conv和Pooling叫做Transition Layer。

當然,根據不同的資料要去構建不同數量的Dense Block,文章作者在訓練ImageNet資料集的時候選用了4個,實現詳情如下圖:
這裡寫圖片描述

從表格可以看出,作者分別嘗試了121,169,201,264層的DenseNet,每一層對應的那一列是其網路結構,這裡,作者將1x1卷積和3x3卷積連用,作為一組,這裡在3x3卷積前用1x1是為了減少輸入特徵圖數量,提高計算效率,事實證明在DenseNet中這種結構很有效,添加了1x1的DenseNet叫做DenseNet-B

為了獲得緊湊的模型,作者在Transition Layer對輸出的特徵圖個數進行控制,加入了一個叫theta的引數,假設原本輸出的特徵圖個數為m,現在輸出的特徵圖個數就是theta*m,其中0 < theta<=1,文章設定theta=0.5,這樣壓縮過的DenseNet叫做DenseNet-C,將DenseNet-B和DenseNet-C方法連用產生的DenseNet稱為DenseNet-BC

接下來就是一些實驗結果了,總而言之就是從各個方面證明DenseNet比ResNet牛逼,100層的效果就和ResNet1000層的效果相當,圖就不貼了,看得眼花,我直接引用一些文字來說明吧:
摘自:

http://www.sohu.com/a/161639222_114877

DenseNet 有什麼優點?

省引數。在 ImageNet 分類資料集上達到同樣的準確率,DenseNet 所需的引數量不到 ResNet 的一半。對於工業界而言,小模型可以顯著地節省頻寬,降低儲存開銷。
省計算。達到與 ResNet 相當的精度,DenseNet 所需的計算量也只有 ResNet 的一半左右。計算效率在深度學習實際應用中的需求非常強烈,從本次 CVPR 會上大家對模型壓縮以及 MobileNet 和 ShuffleNet 這些工作的關注就可以看得出來。最近我們也在搭建更高效的 DenseNet,初步結果表明 DenseNet 對於這類應用具有非常大的潛力,即使不用 Depth Separable Convolution 也能達到比現有方法更好的結果,預計在近期我們會公開相應的方法和模型。
另外,我們還提出了一個可實現自適應推理的多尺度 DenseNet,用於提高深度學習模型的推理效率。這個方法的主要思想是用淺層的特徵來預測相對「簡單」的圖片,而只用深層的特徵來預測比較「難」的圖片。由於很多實際應用中,簡單的圖片佔有較大的比例,而它們並不需要非常深的模型也能被正確預測,因此這種自適應推理方法可以有效的降低深度模型推理時的平均計算開銷,而不降低精度。感興趣的讀者請關注我們的 arXiv 論文 《Multi-Scale Dense Convolutional Networks for Efficient Prediction》(),程式碼參見。
抗過擬合。DenseNet 具有非常好的抗過擬合效能,尤其適合於訓練資料相對匱乏的應用。這一點從論文中 DenseNet 在不做資料增強(data augmentation)的 CIFAR 資料集上的表現就能看出來。例如不對 CIFAR100 做資料增強,之前最好的結果是 28.20% 的錯誤率,而 DenseNet 可以將這一結果提升至 19.64%。對於 DenseNet 抗過擬合的原因有一個比較直觀的解釋:神經網路每一層提取的特徵都相當於對輸入資料的一個非線性變換,而隨著深度的增加,變換的複雜度也逐漸增加(更多非線性函式的複合)。相比於一般神經網路的分類器直接依賴於網路最後一層(複雜度最高)的特徵,DenseNet 可以綜合利用淺層複雜度低的特徵,因而更容易得到一個光滑的具有更好泛化效能的決策函式。實際上,DenseNet 的泛化效能優於其他網路是可以從理論上證明的:去年的一篇幾乎與 DenseNet 同期釋出在 arXiv 上的論文(AdaNet: Adaptive Structural Learning of Artificial Neural Networks)所證明的結論(見文中 Theorem 1)表明類似於 DenseNet 的網路結構具有更小的泛化誤差界。