DenseNet詳解

一、概述

作為CVPR2017年的Best Paper, DenseNet 脫離了加深網(wǎng)絡(luò)層數(shù)(ResNet)加寬網(wǎng)絡(luò)結(jié)構(gòu)(Inception)來提升網(wǎng)絡(luò)性能的定式思維,從特征的角度考慮,通過特征重用和旁路(Bypass)設(shè)置,既大幅度減少了網(wǎng)絡(luò)的參數(shù)量,又在一定程度上緩解了gradient vanishing問題的產(chǎn)生.結(jié)合信息流和特征復(fù)用的假設(shè),DenseNet當(dāng)之無愧成為2017年計(jì)算機(jī)視覺頂會(huì)的年度最佳論文.

卷積神經(jīng)網(wǎng)絡(luò)在沉睡了近20年后,如今成為了深度學(xué)習(xí)方向最主要的網(wǎng)絡(luò)結(jié)構(gòu)之一.從一開始的只有五層結(jié)構(gòu)的LeNet, 到后來擁有19層結(jié)構(gòu)的VGG, 再到首次跨越100層網(wǎng)絡(luò)的Highway Networks與ResNet, 網(wǎng)絡(luò)層數(shù)的加深成為CNN發(fā)展的主要方向之一.

隨著CNN網(wǎng)絡(luò)層數(shù)的不斷增加,gradient vanishing和model degradation問題出現(xiàn)在了人們面前,BatchNormalization的廣泛使用在一定程度上緩解了gradient vanishing的問題,而ResNet和Highway Networks通過構(gòu)造恒等映射設(shè)置旁路,進(jìn)一步減少了gradient vanishing和model degradation的產(chǎn)生.Fractal Nets通過將不同深度的網(wǎng)絡(luò)并行化,在獲得了深度的同時(shí)保證了梯度的傳播,隨機(jī)深度網(wǎng)絡(luò)通過對網(wǎng)絡(luò)中一些層進(jìn)行失活,既證明了ResNet深度的冗余性,又緩解了上述問題的產(chǎn)生. 雖然這些不同的網(wǎng)絡(luò)框架通過不同的實(shí)現(xiàn)加深的網(wǎng)絡(luò)層數(shù),但是他們都包含了相同的核心思想,既將feature map進(jìn)行跨網(wǎng)絡(luò)層的連接.

image

DenseNet作為另一種擁有較深層數(shù)的卷積神經(jīng)網(wǎng)絡(luò),具有如下優(yōu)點(diǎn):

(1) 相比ResNet擁有更少的參數(shù)數(shù)量.

(2) 旁路加強(qiáng)了特征的重用.

(3) 網(wǎng)絡(luò)更易于訓(xùn)練,并具有一定的正則效果.

(4) 緩解了gradient vanishing和model degradation的問題.

何愷明在提出ResNet時(shí)做出了這樣的假設(shè):若某一較深的網(wǎng)絡(luò)多出另一較淺網(wǎng)絡(luò)的若干層有能力學(xué)習(xí)到恒等映射,那么這一較深網(wǎng)絡(luò)訓(xùn)練得到的模型性能一定不會(huì)弱于該淺層網(wǎng)絡(luò).通俗的說就是如果對某一網(wǎng)絡(luò)中增添一些可以學(xué)到恒等映射的層組成新的網(wǎng)路,那么最差的結(jié)果也是新網(wǎng)絡(luò)中的這些層在訓(xùn)練后成為恒等映射而不會(huì)影響原網(wǎng)絡(luò)的性能.同樣DenseNet在提出時(shí)也做過假設(shè):與其多次學(xué)習(xí)冗余的特征,特征復(fù)用是一種更好的特征提取方式.

二誊稚、DenseNet

image.png

ResNet的一個(gè)最主要的優(yōu)勢便是梯度可以流經(jīng)恒等函數(shù)來到達(dá)靠前的層.但恒等映射和非線性變換輸出的疊加方式是相加, 這在一定程度上破壞了網(wǎng)絡(luò)中的信息流.

Dense Connectivity

為了進(jìn)一步優(yōu)化信息流的傳播,DenseNet提出了圖示的網(wǎng)絡(luò)結(jié)構(gòu)

image

如圖所示,第i層的輸入不僅與i-1層的輸出相關(guān),還有所有之前層的輸出有關(guān).記作:

image.png

其中[]代表concatenation(拼接),既將
image.png

image.png
層的所有輸出feature map按Channel組合在一起.這里所用到的非線性變換H為BN+ReLU+ Conv(3×3)的組合.

Pooling Layers

由于在DenseNet中需要對不同層的feature map進(jìn)行cat操作,所以需要不同層的feature map保持相同的feature size,這就限制了網(wǎng)絡(luò)中Down sampling的實(shí)現(xiàn).為了使用Down sampling,作者將DenseNet分為多個(gè)Denseblock,如下圖所示:

image

在同一個(gè)Denseblock中要求feature size保持相同大小,在不同Denseblock之間設(shè)置transition layers實(shí)現(xiàn)Down sampling, 在作者的實(shí)驗(yàn)中transition layer由BN + Conv(1×1) +2×2 average-pooling組成.

Growth rate

在Denseblock中,假設(shè)每一個(gè)非線性變換H的輸出為K個(gè)feature map, 那么第i層網(wǎng)絡(luò)的輸入便為K0+(i-1)×K, 這里我們可以看到DenseNet和現(xiàn)有網(wǎng)絡(luò)的一個(gè)主要的不同點(diǎn):DenseNet可以接受較少的特征圖數(shù)量作為網(wǎng)絡(luò)層的輸出,如下圖所示

image

原因就是在同一個(gè)Denseblock中的每一層都與之前所有層相關(guān)聯(lián),如果我們把feature看作是一個(gè)Denseblock的全局狀態(tài),那么每一層的訓(xùn)練目標(biāo)便是通過現(xiàn)有的全局狀態(tài),判斷需要添加給全局狀態(tài)的更新值.因而每個(gè)網(wǎng)絡(luò)層輸出的特征圖數(shù)量K又稱為Growth rate,同樣決定著每一層需要給全局狀態(tài)更新的信息的多少.我們之后會(huì)看到,在作者的實(shí)驗(yàn)中只需要較小的K便足以實(shí)現(xiàn)state-of-art的性能.

Bottleneck Layers

雖然DenseNet接受較少的k,也就是feature map的數(shù)量作為輸出,但由于不同層feature map之間由cat操作組合在一起,最終仍然會(huì)是feature map的channel較大而成為網(wǎng)絡(luò)的負(fù)擔(dān).作者在這里使用1×1 Conv(Bottleneck)作為特征降維的方法來降低channel數(shù)量,以提高計(jì)算效率.經(jīng)過改善后的非線性變換變?yōu)锽N-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3),使用Bottleneck layers的DenseNet被作者稱為DenseNet-B.在實(shí)驗(yàn)中,作者使用1×1卷積生成channel數(shù)量為4k的feature map.

Compression

為了進(jìn)一步優(yōu)化模型的簡潔性,我們同樣可以在transition layer中降低feature map的數(shù)量.若一個(gè)Denseblock中包含m個(gè)feature maps,那么我們使其輸出連接的transition layer層生成?θm?個(gè)輸出feature map.其中θ為Compression factor, 當(dāng)θ=1時(shí),transition layer將保留原feature維度不變.

作者將使用compression且θ=0.5的DenseNet命名為DenseNet-C, 將使用Bottleneck和compression且θ=0.5的DenseNet命名為DenseNet-BC

三蒜哀、 算法分析

(1) Model compactness

由于DenseNet對輸入進(jìn)行cat操作,一個(gè)直觀的影響就是每一層學(xué)到的feature map都能被之后所有層直接使用,這使得特征可以在整個(gè)網(wǎng)絡(luò)中重用,也使得模型更加簡潔.

image

從上圖中我們可以看出DenseNet的參數(shù)效率:左圖包含了對多種DenseNet結(jié)構(gòu)參數(shù)和最終性能的統(tǒng)計(jì),我們可以看出當(dāng)模型實(shí)現(xiàn)相同的test error時(shí),原始的DenseNet往往要比DenseNet-BC擁有2-3倍的參數(shù)量.中間圖為DenseNet-BC與ResNet的對比,在相同的模型精度下,DenseNet-BC只需要ResNet約三分之一的參數(shù)數(shù)量.右圖為1001層超過10M參數(shù)量的ResNet與100層只有0.8M參數(shù)量的DenseNet-BC在訓(xùn)練時(shí)的對比,雖然他們在約相同的訓(xùn)練epoch時(shí)收斂,但DenseNet-BC卻只需要ResNet不足十分之一的參數(shù)量.

(2) Implicit Deep Supervision

解釋DenseNet為何擁有如此高性能的另一個(gè)原因是網(wǎng)絡(luò)中的每一層不僅接受了原始網(wǎng)絡(luò)中來自loss的監(jiān)督,同時(shí)由于存在多個(gè)bypass與shortcut,網(wǎng)絡(luò)的監(jiān)督是多樣的.Deep supervision的優(yōu)勢同樣在deeply-supervised nets (DSN)中也被證實(shí).(DSN中每一個(gè)Hidden layer都有一個(gè)分類器,強(qiáng)迫其學(xué)習(xí)一些有區(qū)分度的特征).與DSN不同的是,DenseNet擁有單一的loss function, 模型構(gòu)造和梯度計(jì)算更加簡易.

(3) Feature Reuse

在設(shè)計(jì)初,DenseNet便被設(shè)計(jì)成讓一層網(wǎng)絡(luò)可以使用所有之前層網(wǎng)絡(luò)feature map的網(wǎng)絡(luò)結(jié)構(gòu),為了探索feature的復(fù)用情況,作者進(jìn)行了相關(guān)實(shí)驗(yàn).作者訓(xùn)練的L=40,K=12的DenseNet,對于任意Denseblock中的所有卷積層,計(jì)算之前某層feature map在該層權(quán)重的絕對值平均數(shù).這一平均數(shù)表明了這一層對于之前某一層feature的利用率,下圖為由該平均數(shù)繪制出的熱力圖:

image

從圖中我們可以得出以下結(jié)論:

a) 一些較早層提取出的特征仍可能被較深層直接使用

b) 即使是Transition layer也會(huì)使用到之前Denseblock中所有層的特征

c) 第2-3個(gè)Denseblock中的層對之前Transition layer利用率很低,說明transition layer輸出大量冗余特征.這也為DenseNet-BC提供了證據(jù)支持,既Compression的必要性.

d) 最后的分類層雖然使用了之前Denseblock中的多層信息,但更偏向于使用最后幾個(gè)feature map的特征,說明在網(wǎng)絡(luò)的最后幾層,某些high-level的特征可能被產(chǎn)生.

四、實(shí)驗(yàn)結(jié)果

作者在多個(gè)benchmark數(shù)據(jù)集上訓(xùn)練了多種DenseNet模型,并與state-of-art的模型(主要是ResNet和其變種)進(jìn)行對比:

image

由上表我們可以看出,DenseNet只需要較小的Growth rate(12,24)便可以實(shí)現(xiàn)state-of-art的性能,結(jié)合了Bottleneck和Compression的DenseNet-BC具有遠(yuǎn)小于ResNet及其變種的參數(shù)數(shù)量,且無論DenseNet或者DenseNet-BC,都在原始數(shù)據(jù)集和增廣數(shù)據(jù)集上實(shí)現(xiàn)了超越ResNet的性能.

參考文獻(xiàn)

DenseNet詳解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拄踪,一起剝皮案震驚了整個(gè)濱河市蝇恶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惶桐,老刑警劉巖撮弧,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姚糊,居然都是意外死亡贿衍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門救恨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贸辈,“玉大人,你說我怎么就攤上這事忿薇∪雇郑” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵署浩,是天一觀的道長揉燃。 經(jīng)常有香客問我,道長筋栋,這世上最難降的妖魔是什么炊汤? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上抢腐,老公的妹妹穿的比我還像新娘姑曙。我一直安慰自己,他們只是感情好迈倍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布伤靠。 她就那樣靜靜地躺著,像睡著了一般啼染。 火紅的嫁衣襯著肌膚如雪宴合。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天迹鹅,我揣著相機(jī)與錄音卦洽,去河邊找鬼。 笑死斜棚,一個(gè)胖子當(dāng)著我的面吹牛阀蒂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弟蚀,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼蚤霞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了义钉?” 一聲冷哼從身側(cè)響起争便,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎断医,沒想到半個(gè)月后滞乙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鉴嗤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年斩启,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醉锅。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兔簇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硬耍,到底是詐尸還是另有隱情垄琐,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布经柴,位于F島的核電站狸窘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坯认。R本人自食惡果不足惜翻擒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一氓涣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陋气,春花似錦劳吠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至议慰,卻和暖如春凰荚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背褒脯。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缆毁,地道東北人番川。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像脊框,于是被迫代替她去往敵國和親颁督。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容