經典 CNN 模型整理 (06) - DenseNet

--

本系列將整理一些經典 CNN 模型的重點,目的是讓讀者和自己可以在最短的時間內回想起被遺忘的記憶,比較不熟悉的朋友也可以用重點去搭配論文幫助消化!

上一篇:ResNet

<Densely Connected Convolutional Networks> Gao et al., 2017.

圖一:Dense 網路架構圖

上一篇我們談到 ResNet ,其解決了網路加深所帶來的退化問題得以大大的加深其網路架構,而 DenseNet 則更專注在『特徵重用(feature reuse)』上,也拿到 CVPR 2017 最佳論文獎。

在開始前先來說一下 DenseNet 的四個優點:

  1. 減緩了梯度消失(vanishing-gradient)問題
  2. 加強特徵傳播
  3. 促進特徵重用
  4. 減少參數數量

下面來看看本論文的重點:

  • ResNet傳統網路連接方式為:『X{l} = H{l}(X{l-1})』ResNet 加上一個短路連接變為:『X{l} = H{l}(X{l-1}) + X{l-1}』。而 DenseNet 作者認為這個相加的過程可能會阻礙網路信息的傳播。
  • Dense connectivity-為了優化訊息傳遞,作者將每一層都與其後面的層進行連結:『X{l} = H{l}([X{0}, X{1}, …, X{l-1}])』,並用 concatenation 取代相加(*註1),而透過與上面 ResNet 公式的對比可以看出這個結構為什麼有效的理由:每一層都透過梯度傳播的過程『直接』訪問到『原始輸入』『損失函數』,可以說是一個隱藏式的深監督
    (*註1)concatenation vs addResNet 使用的 element-wise add 為逐元素相加,也就是『特徵圖相同位置相加,通道數不變』;而 DenseNet 使用的 concatenation 則是『通道數的增加』
  • Composite function-定義 H{l} 為 BN - ReLU - 3 x 3 Conv 的組合。
  • Transition layers-由於在 CNN 中下採樣的必要性,這裡設計了一個 BN - ReLU - 1 x 1 Conv - Pool 的組合,來作為 Dense Blocks 之間的連接層【如圖二】。
圖二:DenseNet 架構圖,Growth rate 表示輸出的通道數

一些降低計算量的設計:

  • Bottleneck layers-由於 DenseNet 的設計方法會將前面所有的特徵徒都作為輸入,就算 Growth rate 都很小,累加起來也很驚人,故設計此 Bottleneck 降低計算量 ,H{l} 的組合變為 BN - ReLU - 1 x 1 Conv - BN - ReLU - 3 x 3 Conv,使用此組合的架構稱為 DenseNet-B。
  • Compression-假如原先 Dense Block 會輸出 m 個通道的特徵圖,這裡將其後方 Transition Layer 的輸出數量減少為 ⌊θm⌋(0 < θ ≤ 1),使用此組合的架構稱為 DenseNet-C,在論文中使用 θ = 0.5。

從結果圖【如圖三】可以看出同樣的錯誤率下 DenseNet 比 ResNet 使用更少的參數跟計算量。

ImageNet 中 DenseNet 與 ResNet 的參數、計算量比較

感謝觀看,有任何問題歡迎留言討論或連繫我,祝有個愉快的一天😉

--

--

Lance Chu 朱哲緯
Lance Chu 朱哲緯

Written by Lance Chu 朱哲緯

一名機器學習工程師,喜歡思考、唱歌跟旅行,在這裡分享一些心理、技術文章。

No responses yet