DenseNet 論文學習筆記

DenseNet

今日研讀了作者Zhuang Liu的論文DenseNet,下面是學習的一些筆記
如有錯誤可在評論區中提出~
論文地址:https://arxiv.org/pdf/1608.06993.pdf
在這裏插入圖片描述

Introduction

密集連接網絡,對於每一層,輸入來自前面網絡的所有特徵。
隨着網絡層數的不斷加深,對網絡的訓練方式也在不斷改善,LeNet5,VGG,HighwayNet,ResNet

ResNet

ResNet(residual neural Network)改進了傳統卷積神經網絡的前饋傳播方式,使得神經網絡不再是直接連接上一層的輸出到下一層的輸入。通過skip-connection的連接方式將每一層的輸出與輸入使用identity function求和,一同傳入下一層。
在這裏插入圖片描述
這個做法使得梯度可直接從後層流入前層。但是也存在着缺陷,identity function求和的做法可能存在信息的丟失,阻礙信息在整個網絡中的傳播。

Dense connectivity

DenseNet引入了Dense conncetivity的概念,將前面所有層的輸出在網絡寬度維度上直接拼接,作爲特徵輸入到後層中,這有利於信息的重用,並且不會導致信息丟失,增強了特徵信息在網絡中的流動。(可看上圖理解連接方式)
在這裏插入圖片描述

Composite function

論文中定義H()函數爲Composite function,且有三個連續的操作組成:

  1. BN
  2. ReLU
  3. Conv3x3

Transition layers

通過降採改變特徵的大小,連接Dense Block的層叫做Transition layers(轉接層),由三部分組成:

  1. BN
  2. conv 1x1
  3. average pool 2x2

Growth rate K

增長率K是網絡的超參數,控制網絡寬度。
通過K可計算出第l層的輸入特徵個數:K0 + K(l -1),其中K爲輸入的深度
這是個經驗值,需要通過大量的實驗去調整來適應不同的數據集

Bottleneck layers(DenseNet-B)

瓶頸層,即使DenseNet每層只產生K個特徵,但是這仍然存在大量的輸入,有論文中提到在Conv3x3卷積層前加入Conv1x1卷積層能減少特徵的數量,從而加快計算的效率。

  1. BN
  2. ReLU
  3. Conv1x1 : 4k
  4. BN
  5. ReLU
  6. Conv3x3

Compression

爲了減少特徵,可對特徵進行壓縮。如果密集層輸出m個特徵,則使轉階層輸出θ*m個特徵。(0 < θ <= 1)

  1. θ = 1,特徵不改變
  2. θ < 1,DenseNet-C
  3. 當使用了Bottleneck + Compression,此時的網絡爲 DenseNet-BC

Implementation Details

在這裏插入圖片描述在這裏插入圖片描述

Pytorch 實現

Github:等有時間再來更新代碼~

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