DenseNet

轉載自:https://blog.csdn.net/qq_14845119/article/details/79272082

DenseNet優勢:
(1)解決了深層網絡的梯度消失問題
(2)加強了特徵的傳播
(3)鼓勵特徵重用
(4)減少了模型參數

DenseNet的網絡基本結構如上圖所示,主要包含DenseBlock和transition layer兩個組成模塊。其中Dense Block爲稠密連接的highway的模塊,transition layer爲相鄰2個Dense Block中的那部分。


上圖是一個詳細的Dense Block模塊,其中層數爲5,即具有5個BN+Relu+Conv(3*3)這樣的layer,網絡增長率爲4,簡單的說就是每一個layer輸出的feature map的維度爲4。
這裏,由於DenseNet的每一個Dense Block模塊都利用到了該模塊中前面所有層的信息,即每一個layer都和前面的layer有highway的稠密連接。假設一個具有L層的網絡,那麼highway稠密連接數目爲L*(L+1)/2。
和Resnet不同的是,這裏的連接方式得到的feature map做的是concat操作,而resnet中做的是elementwise操作。
其中ResNet的非線性變換方程如下:

DensNet的非線性變換方程如下:

highway的稠密連接方式具有諸多的優勢,增加了梯度的傳遞,特徵得到了重用,甚至減少了在小樣本數據上的過擬合。但是隨之產生2個缺點。

(1)   這裏假設第L層輸出K個feature map,即網絡增長率爲K,那麼第L層的輸入爲K0+K*(L-1),其中K0爲輸入層的維度。也就是說,對於Dense Block模塊中每一層layer的輸入feature map時隨着層數遞增的,每次遞增爲K,即網絡增長率。那麼這樣隨着Dense Block模塊深度的加深,後面的輸入feature map的維度是很大的。爲了解決這個問題,在Dense Block模塊中加入了Bottleneck 單元,即1*1卷積進行降維,輸出維度都被降到4K維(K爲增長率)。

(2)   每一個DenseBlock模塊的輸出維度是很大的,假設一個L層的Dense Block模塊,假設其中已經加入了Bottleneck 單元,那麼輸出的維度爲,第1層的維度+第2層的維度+第3層的維度+******第L層的維度,加了Bottleneck單元后每層的輸出維度爲4K,那麼最終Dense Block模塊的輸出維度爲4K*L。隨着層數L的增加,最終輸出的feature map的維度也是一個很大的數。爲了解決這個問題,在transition layer模塊中加入了1*1卷積做降維。

 

 

文章同時提出了DenseNet,DenseNet-B,DenseNet-BC,三種結構,具體區別如下:

原始DenseNet:

Dense Block模塊:BN+Relu+Conv(3*3)+dropout

transition layer模塊:BN+Relu+Conv(1*1)(filternum:m)+dropout+Pooling(2*2)

DenseNet-B:

Dense Block模塊:BN+Relu+Conv(1*1)(filternum:4K)+dropout+BN+Relu+Conv(3*3)+dropout

transition layer模塊:BN+Relu+Conv(1*1)(filternum:m)+dropout+Pooling(2*2)

DenseNet-BC:

Dense Block模塊:BN+Relu+Conv(1*1)(filternum:4K)+dropout+BN+Relu+Conv(3*3)+dropout

transition layer模塊:BN+Relu+Conv(1*1)(filternum:θm,其中0<θ<1,文章取θ=0.5)+dropout+Pooling(2*2)

其中,DenseNet-B在原始DenseNet的基礎上,在Dense Block模塊中加入了1*1卷積,使得將每一個layer輸入的feature map都降爲到4k的維度,大大的減少了計算量。

DenseNet-BC在DenseNet-B的基礎上,在transitionlayer模塊中加入了壓縮率θ參數,論文中將θ設置爲0.5,這樣通過1*1卷積,將上一個Dense Block模塊的輸出feature map維度減少一半。

 

DenseNet-BC的網絡結構參數如下,其中網絡增長率K=32,conv 代表BN-ReLU-Conv


在ImageNet上DenseNet-BC和ResNet對比如下

可以看出,DenseNet-BC比ResNet參數量要少,運算量也少,準確性高。

 

 

References:

https://github.com/liuzhuang13/DenseNet

https://github.com/liuzhuang13/DenseNetCaffe
--------------------- 
作者:watersink 
來源:CSDN 
原文:https://blog.csdn.net/qq_14845119/article/details/79272082 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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