比ResNet更加有效的網路架構 DenseNet: Densely Connected Convolutional Networks

今年CVPR 2017最佳論文頒發給了新型的神經網路架構DenseNet,作者分別來自Cornell、清華與Facebook AI Research。DenseNet採用了另類的設計方式,比起ResNet有了更多的Skip-Connection,使用大約一半的參數就能夠達到與ResNet相同的ImageNet Classification Performance:

另外在CIFAR/SVHN的Classification Performance上,也可以看出簡單版的DenseNet就可以超越ResNet:

這裡簡單介紹一下DenseNet的基本架構,DenseNet之所以稱為DenseNet,就是因為在每一個Convolution Layers Block中,每一層Layer Output都會Concatenate到其後面的每一層Layer一起做運算。若是一個Dense Block中含有五層Layer,則會有10組Direct Connection(5C2 = 10):

Dense Block中每一個Layer Output所產生的Feature Map數量,稱為Growth Rate (k),上面表格所示的簡單版DenseNet(k = 12),排除原本的Input Layer,經過了總共四次的Growth,最後的Output Layer就比原本的Input Layer就多了48個Feature Map。

整個網路的架構中會含有許多個Dense Block,以下圖例顯示使用三個Dense Block做Classification的架構,Block與Block之間的Convolution+Pooling在論文中也稱為Transition Layer,用以降低Feature Map的大小:

論文中針對ImageNet Training提供了四種版本的DensetNet架構,其中每一層Layer採用了Bottleneck Structure(1x1 Conv + 3x3 Conv):

雖然DenseNet的架構十分的容易直接實作,但是作者在大會的報告中也指出了,直接Concatenate Feature Map的作法會耗費較多的記憶體,另外又發了一篇短論文,提供了如何用更有效的方式來實作DenseNet:

對其他細節有興趣的讀者們,可以參考以下資源:
- Paper: https://arxiv.org/pdf/1608.06993.pdf
- Code: https://github.com/liuzhuang13/DenseNet
- Notes on the Implementation of DenseNet in TensorFlow
- Efficient DenseNet in PyTorch

Share the joy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

近期文章

近期迴響

彙整

分類

其它

Chien-Yi Wang Written by:

Be First to Comment

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *