深度學習論文翻譯解析(十五):Densely Connected Convolutional Networks

論文標題:Densely Connected Convolutional Networks

論文作者:Gao Huang Zhuang Liu Laurens van der Maaten  Kilian Q. Weinberger

論文地址:https://arxiv.org/pdf/1608.06993.pdf

DenseNet 的GitHub地址:https://github.com/liuzhuang13/DenseNet

參考的 DenseNet 翻譯博客:https://zhuanlan.zhihu.com/p/31647627

聲明:小編翻譯論文僅爲學習,如有侵權請聯繫小編刪除博文,謝謝!           

  小編是一個機器學習初學者,打算認真研究論文,但是英文水平有限,所以論文翻譯中用到了Google,並自己逐句檢查過,但還是會有顯得晦澀的地方,如有語法/專業名詞翻譯錯誤,還請見諒,並歡迎及時指出。

如果需要小編其他論文翻譯,請移步小編的GitHub地址

  傳送門:請點擊我

  如果點擊有誤:https://github.com/LeBron-Jian/DeepLearningNote

 

  在計算機視覺領域,卷積神經網絡(CNN)已經成爲最主流的方法,比如AlexNet, VGGNet, Inception,ResNet等模型。CNN史上一個里程碑事件是ResNet模型的出現,ResNet可以訓練出更深的CNN模型,從而實現更高的準確度。ResNet模型的核心是通過建立前面層與後面層之間的“短路連接”(shortcuts , skip connection),這有助於訓練過程中梯度的反向傳播,從而能訓練出更深的CNN網絡。今天我們要介紹的是DenseNet模型,它的基本思路與ResNet一致,但是它建立的是前面所有層與後面層的密集連接(dense connection),它的名稱也是由此而來。

  衆所周知,在DenseNet之前,卷積神經網絡提高效率的方向,要麼深(比如ResNet,解決了網絡深時候的梯度消失問題),要麼寬(比如GoogLeNet的 Inception),而作者從Feature入手,通過對feature 的極致利用達到更好的效果和更少的參數。所以DenseNet的另一大特色是通過特徵在channel 上的連接來實現特徵複用(feature reuse)。這些特點讓DenseNet在參數和計算成本更少的情形下實現比 ResNet 更優的性能,DenseNet也因此斬獲CVPR 2017的最佳論文獎。本文學習其論文。

  該文章提出的DenseNet核心思想在於建立了不同層之間的連接關係,充分利用了feature,進一步減輕了梯度消失問題,加深網絡不是問題,而且訓練效果非常好。另外,利用bottleneck layer,Translation layer以及較小的growth rate使得網絡變窄,參數減少,有效抑制了過擬合,同時計算量也減少了。DenseNet優點很多,而且在和ResNet的對比中優勢還是非常明顯的。

摘要

   最近的研究表明,如果神經網絡各層到輸入和輸出層採用更短的連接(shorter connections),那麼網絡可以設計的更深,更準確且訓練起來更有效率。在這篇文章中,我們基於這個觀點,介紹了稠密卷積網絡(DenseNet),該網絡在前饋時將每一層與其他的任一層都進行了連接。傳統的 L 層卷積網絡有 L 個連接——每一層與它的前一層和後一層相連——我們的網絡有 L(L+1)/2 個連接。每一層都將之前的所有層的特徵圖作爲輸入,而它自己的特徵圖是之後所有層的輸入。DenseNets 有一些很不錯的優點:有助於解決梯度消失(vanishing-gradient)問題,增強特徵 (feature)傳播,促進特徵的重複利用,大大減少了參數的數量。我們在四個目標檢測任務(CIFAR-10, CIFAR-100, SVHN和 ImageNet)中驗證了我們提出的結構。DenseNets 在這些數據集上大都有較大的提高,而且使用更少的計算量就可以獲得更好的性能。代碼和預訓練模型如下:https://github.com/liuzhuang13/DenseNet

1,引言

  在視覺檢測任務中,卷積神經網絡(CNNs)已經成爲佔有絕對優勢的機器學習方法。儘管它們在20年前就已經被提出了,但是計算機硬件和網絡結構的改善才使訓練深層的卷積網絡在最近成爲現實。起初的LeNet5有5層,VGG有19層,只有去年的Highway網絡和ResNets網絡才克服了100層網絡的障礙。

  隨着CNNs變得越來越深,一個新的問題出現了:當輸入或梯度信息在經過很多層的傳遞之後,在到達網絡的最後(或開始)可能會消失或者“被沖刷掉”(wash out)。很多最新的研究都說明了這個或者與這個相關的問題。ResNet網絡和Highway網絡將旁路信息(bypass Signal)進行連接。隨機深度(stochastic depth)在訓練過程中隨機丟掉了一些層,進而縮短了ResNets網絡,獲得了更好的信息和梯度流。FractalNets 使用不同數量的卷積 block 來重複的連接一些平行層,獲得更深的網絡同時還保留了網絡中的 short paths。儘管這些方法在網絡結構和訓練方法等方面有所不同,但他們都有一個關鍵點:他們都在前幾層和後幾層之間產生了短路徑(short paths)。

  上圖爲一個dense block的結構圖,在傳統的卷積神經網絡中,如果你有 L 層,那麼就會有 L 個連接,但是在DenseNet中,會有 L(L+1)/2 個連接。簡單說,就是每一層的輸入來自前面所有層的輸出。就是說 x0 是 input,H1 的輸入是 x0(input),H2的輸入是 x0 和 x1 (x1 是 H1 的輸出)。

   在這篇文章中,我們提出了一個結構,該結構是提煉上述觀點而形成的一種簡單的連接模式:爲了保證能夠獲得網絡層之間的最大信息,我們將所有層(使用合適的特徵圖尺寸)都進行互相連接。爲了能夠保證前饋的特性,每一層將之前所有層的輸入進行拼接,之後將輸出的特徵圖傳遞給之後的所有層。結構如圖1所示。重要的一點是,與ResNets不同的是,我們不是在特徵傳遞給某一層之前將其進行相加(combine),而是將其進行拼接(concatenate)。因此,第 l 層 有 l 個輸入,這些輸入是該層之前的所有卷積塊(block)的特徵圖,而它自己的特徵圖則傳遞給之後的所有 L-l 層。這就表示,一個 L 層的網絡就有 L(L+1)/2 個連接,而不是像傳統的結構僅僅有  L 個連接,由於它的稠密連接模塊,所以我們更喜歡將這個方法稱爲稠密卷積網絡(DenseNet)。

   該稠密連接模塊的一個優點是它比傳統的卷積網絡有更少的參數,因爲它不需要再重新學習多餘的特徵圖。傳統的前饋結構可以被看成一種層與層之間狀態傳遞的算法。每一層接收前一層的狀態,然後將新的狀態傳遞給下一層。它改變了狀態,但也傳遞了需要保留的信息。ResNets將這種信息保留的更明顯,因爲它加入了本身的變換(identity transformations)。最近很多關於ResNets的研究都表明ResNets的很多層是幾乎沒有起作用的,可以在訓練時隨機的丟掉。這篇論文【21】闡述了ResNets很像(展開的)循環神經網絡,但是比起循環神經網絡有更多的參數,因爲它每一層都有自己的權重。我們提出的DenseNet結構,增加到網絡中的信息與保留的信息有明顯的不同。DenseNet層很窄(例如每一層有12個濾波器),僅僅增加小數量的特徵圖到網絡的“集體知識”(collective knowledge),並且保持這些特徵圖不變——最後的分類器基於網絡中的所有特徵圖進行預測。

   除了更好的參數利用率,DenseNet 還有一個優點是它改善了網絡中信息和梯度的傳遞,這就讓網絡更容易訓練。每一層都可以直接利用損失函數的梯度以及最開始的輸入信息,相當於是一種隱形的深度監督(implicit deep supervision)。這有助於訓練更深的網絡。此外,我們還發現稠密連接有正則化的作用,在更少訓練集的任務中可以降低過擬合。

  我們在四個目標檢測任務(CIFAR-10, CIFAR-100,SVHN和ImageNet)中驗證了DenseNet。在和現有模型有相似準確率的前提下,我們 的模型有更少的參數。此外,我們的網絡還超過了目前在大部分的檢測任務都有最好結果的算法。

2,相關工作

  自從神經網絡被提出之後,網絡結構的探索就成爲神經網絡研究的一部分。最近神經網絡的廣泛關注也給這個研究領域注入了新的生機。網絡層數的增加也讓更多的人進行結構的改善,不同連接模式的探索,早期研究觀點的復現等方面的研究。

  在 1980s 神經網論文中提出的級聯結構很像我們提出的稠密網絡。他們之前的工作主要關注在全連接的多層感知機上。最近,使用批梯度下降訓練的全連接的級聯網絡也被提出來了。儘管在小數據上有效,但該方法的網絡卻有幾百個參數。【9, 23, 31, 41】提出在CNNs 中利用跨層鏈接獲得的多種特徵,這已經被證明在很多視覺任務上有效。和我們的工作類似,【1】使用和我們相似的跨層鏈接方式提出了一種純理論的網絡架構。

  Highway是這些網絡中第一個提出使用 100 多層的結構訓練一個端到端的網絡。使用旁路(bypassing paths)和門控單元(gating units),Highway 網絡可以很輕鬆地優化上百層的網絡。旁路被認爲是使深層網絡容易訓練關鍵因素。該觀點在ResNets中被進一步證實,ResNets使用本身的特徵圖作爲旁路。ResNets在很多圖像識別,定位和檢測任務(如ImageNet 和 COCO 目標檢測)中都獲得了不錯的效果,並且還打破了之前的記錄。最近,一種可以成功訓練 1202層ResNets的隨機深度(stochastic depth)被提出。隨機深度通過訓練過程中隨機丟掉一些層來優化深度殘差網絡的訓練過程。這表明深度(殘差)網絡中並不是所有的層都是必要的,有很多層是冗餘的。我們論文的一部分就受到了該論文的啓發。預激活(pre-activation)的ResNets也有助於訓練超過 1000 層的網絡。

  一種讓網絡更深(如跨層連接)的正交法(orthogonal approach)是增加網絡的寬度。GooLeNet使用了“inception”模塊,將不同尺度的濾波器產生的特徵進行組合連接。在【38】中,提出了一種具有廣泛寬度的殘差模塊,它是ResNets的一種變形。事實上,只簡單的增加ResNets每一層的濾波器個數就可以提升網絡的性能。FractalNets 使用一個寬的網絡結構在一些數據集上也獲得了不錯的效果。

   DenseNets 不是通過很深或者很寬的網絡來獲得表徵能力,而是通過特徵的重複使用來利用網絡的隱含信息,獲得更容易訓練,參數效率更高的稠密模型。將不同層學到的特徵圖進行組合連接,增加了之後層輸入的多樣性,提升了性能。這同時也指出了 DenseNets和 ResNets 之間的主要差異。儘管 Inception 網絡也組合連接了不同層的特徵,但DenseNets 更簡單,也更高效。

  也有很多著名的網絡結構獲得了不錯的結果。NIN 結構將多層感知機與卷積層的濾波器相連接來提取更復雜的特徵。在DSN中,通過輔助分類器來監督內部層,加強了前幾層的梯度。Ladder網絡將橫向連接(lateral  connection)引入到自編碼器中,在半監督學習任務中獲得不錯的效果。在【39】中,DFNs通過連接不同基礎網絡的中間層來改善信息的傳遞。帶有可以最小化重建損失路徑(pathways that minimize reconstruction losses)的網絡也可以改善圖像分類模型的性能。

    圖1表示的是 Dense block,而圖2 表示的則是一個 DenseNet的結構圖,在這個結構圖中包含了3個 dense block。作者將DenseNet 分爲多個 dense block,原因是希望各個 dense  block 內的 feature map 的 size 統一,這樣在做 concatenation 就不會有 size的問題。

3,DenseNets

  假設一張圖片 x0 在卷積網絡中傳播。網絡共有 L 層,每一層都有一個非線性轉換 Ht(*),其中 l 表示層的維度(即第幾層)。 Ht(*) 是一個組合函數,有BN,ReLU,池化或者卷積。我們用 xt 表示 lth 層的輸出。

  ResNets。傳統的前饋網絡是將 lth  層的輸出作爲  (l + 1)th  層的輸入,可用該方程來表示:xl = Hl(xt - 1)。ResNets增加了一個跨層連接,將自身與非線性轉換的結果相加:

  所以對ResNet而言,l 層的輸出是 l-1 層的輸出加上對 l-1 層輸出的非線性變換

  ResNets 的一個優點是可以直接將梯度從後層傳向前層。然而,自身與經過 Hl 得到的輸出是通過求和的形式來連接的。這可能使網絡中信息的傳播受到影響。

  稠密連接(Dense connectivity)。爲了更好的改善層與層之間信息的傳遞,我們提出了一種不同的連接模式:將該層與之後的所有層進行連接,如圖1所示,因此,lth  層將與之前所有層的特徵圖 x0,...xl-1作爲輸入:

  其中 [x0, ...xl-1] 表示第 0, ... l-1層輸出的特徵圖的進行拼接。由於他的稠密連接模式,我們稱該網絡結構爲稠密卷積網絡(DenseNet)。爲了便於表達,我們將方程(2)中 Hl(*) 的多個輸入表示爲一個向量。

  組合函數(composite function)。受【12】的啓發,我們將 Hl(*) 定義爲三種操作的組合函數,分別是BN,ReLU和3*3的卷積。

  池化層(pooling layers)。當特徵圖的尺寸發生改變時,方程(2)中連接操作就會出現問題。然而,卷積網絡有一個基礎的部分——下采樣層,它可以改變特徵圖的尺寸。爲了便於下采樣的實現,我們將網絡劃分爲多個稠密連接的 dense block。如圖2所示。我們將每個 block 之間的層稱爲過渡層,完成卷積核池化的操作。在我們的實驗中,過渡層由 BN層,1*1卷積層和2*2平均池化層組成。

  增長速率(growth rate)。如果每個函數 Hl 都產生 k個特徵圖,之後的 lth  層就有 k0+k(l+1) 個特徵圖作爲輸入,其中 k0 表示該層的通道數。DenseNet和現存網絡結構的一個很重要的不同是,DenseNet的網絡很窄,如 k=12.我們將超參數 k 稱爲網絡的增長速率。我們會在文章的第4部分進行說明,一個很小的增長速率在我們測試的數據集上就可以獲得不錯的效果。這種情況的一種解釋就是,每一層都可以和它所在的 block 中之前的所有特徵圖進行連接,使得網絡具有了“集體知識”(collective  knowledge)。可以將特徵圖看做是網絡的全局狀態。每一層相當於是對當前狀態 增加 k 個特徵圖。增長速率控制着每一層有多少信息對全局狀態有效。全局狀態一旦被寫定,就可以在網絡中的任何地方被調用,而不用像傳統的網絡結構那樣層與層之間的不斷重複。

  Bottleneck層。儘管每一層只產生 k 個輸出特徵圖,但它卻有更多的輸入,在【37, 11】中已經說明可以在 bottleneck 層中3*3的卷積之前加入 1*1 的卷積實現降維,可以減少計算量。我們發現這種設計對 DenseNet 極其有效,我們將具有 bottleneck 層,即 BN-ReLU-Conv (1*1)——BN-ReLU-Conv(3*3) 的結構稱爲 DenseNet-B。在我們的實驗中,我們令 1*1 的卷積生成 4k 個特徵圖。

   Compression(壓縮)。爲了簡化模型,我們在過渡層中減少了特徵圖的數量。如果一個Dense block 有 m 個特徵圖,我們讓之後的過渡層生成 θm 個輸出特徵圖,其中 0 < θ <=1 表示Compression係數,當 θ=1 時,經過過渡層的特徵圖數量沒有改變。我們定義 θ<1 的DenseNet爲DenseNet-C,並且在我們的實驗中 θ = 0.5。如果 bottleneck 和過渡層都有 θ < 1,我們稱該模型爲 DenseNet-BC。

  實現細節。在除了ImageNet外的所有數據集上,我們實驗中使用的 DenseNet都有3個dense block,每個 block 都要向他的層數。在進入第一個 dense block 之前,輸入圖像先經過 16個(DenseNet-BC中是兩倍的增長速率)卷積。對於 3*3 的卷積層,使用一個像素的零填充來保證特徵圖尺寸不變。在兩個 dense block 之間的過渡層中,我們在 2*2 的平均池化層之後增加了 1*1 的卷積。在最後一個 dense block 之後,使用全局平均池化和softmax分類器。三個 dense block 的特徵圖的尺寸分別是 32*32, 16*16, 8*8 。我們改變一些參數 {L=40, k=12},{L=100, k=12},{L=100,k=24},在基本的 DenseNet上做了一些實驗。對於 DenseNet-BC,分別設置{L=100, k=12},{L=250, k=24},{L=190,k=40}。

  對於在ImageNet數據集上的實驗,我們使用4個dense block的 DenseNet-BC結構,圖片的輸入是 224*224。最開始的卷積層有 2k(64)個卷積,卷積核是 7*7,步長是2;其餘所有層的特徵圖都設爲 k。在ImageNet數據集上的網絡如表1所示。

  table1 就是整個網絡的結構圖。這個表中的 k=32,k=48中的 k 是 growth rate,表示每個 dense block 中每層輸出的 feature map個數。爲了避免網絡變得很窄,作者都是採用較小的 K,比如32這樣的,作者的實驗也表明小的 k 可以有更好的效果。根據 dense block 的設計,後面幾層可以得到前面所有層的輸入,因此 concat後的輸入 channel 還是比較大的。另外這裏每個 dense block的 3*3 卷積前面都包含了一個 1*1 的卷積操作,就是所謂的 bottleneck layer,目的是減少輸入的 feature map 數量,既能降維減少計算量,又能融合各個通道的特徵。另外作者爲了進一步壓縮參數,在每兩個 dense block 之間又增加了 1*1 的卷積操作。因此在後面的實驗對比中,如果看到DenseNet-C這個網絡,表示增加了這個 Translation layer,該層的 1*1 卷積的輸出 channel 默認是輸入 channel 到一半。如果你看到 DenseNet-BC這個網絡,表示既有 bottleneck layer,又有 Translation layer。

4,實驗

  我們在一些檢測任務的數據集上證明 DenseNet的有效性,並且和現有的一些網絡進行了對比,特別是ResNet和它的變形。

4.1 數據集

  CIFAR。兩種CIFAR數據集都是 32*32 的彩色圖,CIFAR-10(C10)是10類,CIFAR-100(C100)是100類。訓練集和測試集分別有 50000 和 10000 張圖片,我們從訓練集中選 5000 張作爲驗證集。我們採用這兩個數據集上廣泛使用的數據增強方式(鏡像/平移)。用在數據集後的“+”來標色使用了這種數據增強方式(如C10+)。至於預處理,我麼使用每個顏色通道的均值和標準差來歸一化。最後,我們使用全部的 50000 張訓練圖片,在訓練結束時記錄測試誤差。

  SVHN。SVHN數據集是 32*32的彩色數字圖。訓練集有 73257張圖片,測試集有 26032張,有 531131 張作爲額外的訓練。在接下來實驗中,我們沒有使用任何的數據增強,從訓練集中選取 60000 張圖片作爲驗證集。我們用驗證集誤差最小的模型來進行測試。我們對像素值執行除 255 操作,歸一化到 【0, 1】。

  ImageNet。ILSVRC 2012 分類數據集有 1.2百萬張訓練集,50000張驗證集,共 1000類。我們採用和論文【8, 11, 12】同樣的數據增強方式,在測試時使用 Single-crop 或 10-crop 將圖片尺寸變爲 224*224。根據【11, 12, 13】,我們記錄了在驗證集上的分類誤差。

  table 2 在三個數據集(C10, C100,SVHN)上和其他算法的對比結果。ResNet【11】就是Kaiming He的論文,對比結果一目瞭然。DenseNet-BC的網絡參數和相同深度的 DenseNet相比確實減少了很多!參數減少除了可以節省內存,還能減少過擬合。這裏對於SVHN 數據集,DenseNet-BC的結果並沒有 DenseNet(k=24)的效果好,作者認爲原因主要是 SVHN 這個數據集相對簡單,更深的模型容易過擬合。在表格的倒數第二個區域的三個不同深度 L 和 k 的 DenseNet的對比可以看出隨着 L 和 K 的增加,模型的效果是更好的。

4.2  訓練

  作者在不同數據集上採樣的 DenseNet 網絡會有一點不一樣,比如在 Imagenet 數據集上,DenseNet-BC 有 4個 dense block,但是在別的數據集上只用3個 dense block

  所有的網絡均使用隨機梯度下降法(SGD)進行訓練。在CIFAR和SVHN 數據上,我們令 batchsize = 64,分別訓練了 300輪和40輪。最初的學習率都爲 0.1,分別在訓練總輪數的 50%和75%時,將學習率變爲原來的 0.1倍。在ImageNet上,我們將模型訓練了90輪,batchsize=256。初始學習率設爲 0.1,在第30輪和第 40 輪分別將學習率縮小 10倍。受 GPU內存的限制,我們設最大的模型(DenseNet-161) batchsize=128。爲了彌補小 batch size 的不足,我們將模型訓練了 100 輪,並且在 90輪時將學習率除以 10。

  根據【8】,我們設置梯度衰減值爲 10e-4,Nesterov 動量設爲 0.9。我們採用論文【10】中介紹的權重初始化方式。對於三種沒有使用數據增強的數據,如 C10, C100,SVHN,我們在每個卷積層(除了第一層)之後增加了一層 dropout層,並且設置失活率爲 0.2。對於每個任務和每個模型都只進行一次測試。

4.3  在CIFAR 和 SVHN 上的分類結果

   我們使用不同的深度(L),不同的增長速率(k),來分別訓練 DenseNets。在CIFAR 和 SVHN 上的結果如表2所示。爲了突出結果,我們對其做了標記,將性能優於現存模型的結果加粗,將該數據集上的最好結果用藍色標記。

  準確率(Accuracy)。可能最惹人注目的是表2最後一行的結果,其是 L=190, k=40 的 DenseNet-BC 網絡在CIFAR 上的結果,性能已超過現存的所有模型。在C10+上錯誤率爲 3.45%,在C100+上的錯誤率 爲 17.18% 。在C100+上的誤差率遠遠低於寬ResNet(wide ResNet)網絡。我們在C100和C100(無數據增強)上的誤差很喜人:比 FractalNets和使用dropout正則項的結果低了接近 30%。在SVHN上,L=100,k=24 的 DenseNet(使用dropout)也遠超寬ResNet 的最好結果。然而,250層的DenseNet-BC 的性能卻沒有提升太多。這可能是因爲 SVHN的任務很簡單,複雜的模型往往會導致過擬合。

  容量(Capacity)。不考慮 compression或bottleneck層, L和k越大,模型性能越好。我們把這歸功於模型容量的增加。這在C10+和C100+這兩列中得到了很好的證明。在C10+這列,誤差率從 5.24%降到了 4.10%,最後到了 3.74%。因爲模型的參數量從1M增加到7M,最後到了 27.2M。在C100+這列,我們可以看到相似的結果。這表明DenseNet可以使用更大更深的模型來增加表徵能力,也表明他們沒有出現過擬合或者殘差網絡的優化困難等問題。

  參數效率。表2 的結果表明DenseNet比常見的網絡(特別是ResNet)的參數效率更高。使用 bottleneck結構並且在過渡層使用降維操作的 DenseNet-BC的參數利用率極其高。例如,我們的 250層模型只有 15.3 M的參數量,但是它的性能卻遠超其他參數量超過 30M的模型,像 FractalNets和 寬 ResNet。我們也將L=100,k=12的 DenseNet-BC性能與 1001層 pre-activation的 ResNet進行了比較(如,在C10+的誤差 4.51%VS4.62%, 在C100+的誤差:22.27%VS22.71%)。這兩個網絡在C10+數據上的訓練loss和測試誤差如圖4(右圖)。1001層的深度ResNet收斂到一個更低的loss,但卻有相似的測試誤差。我們會在接下來對這個內容進行更深入的探討。

  過擬合(Overfitting)。更高效的利用參數的一個作用是DenseNets不容易發生過擬合。在不使用數據增強的數據集上,我們發現到 DenseNet結構和之前的工作相比較,其改進還是很明顯的。在C10上,誤差降了 29%,從 7.33%降到了 5.19%。在C100上,降了大約 30%,從 28.2%降到了 19.64%。通過實驗,我們發現一個潛在的過擬合現象:在C10上,通過將 k 從 12 增加到 24,模型的參數量增加了 4倍,而誤差卻從 5.77% 增加到 5.83%,DenseNet-BC 的 bottleneck 和 compression層似乎是應對這種現象的一種有效措施。

4.4  ImageNet 分類結果

   我們在ImageNet分類任務上測試了不同深度和增長速率的 DenseNet-BC 的誤差,並且和ResNet結構的性能進行了比較。爲了對這兩種結構有一個公平的比較,我們排除了其他所有的因素,如數據預處理方式,優化器設置。我們僅僅將 DenseNet-BC 網絡替代ResNet模型,而保留ResNet的其他實驗參數不變。

  我們記錄了DenseNets在ImageNet上 single-crop 和 10-crop的驗證誤差,如表3所示。

  DenseNets 和 ResNets Single-crop的top-1 驗證誤差如圖3所示,其中左圖以參數量爲變量,右圖以 FLOPs爲變量。

  如圖3所示,與ResNets相比,在相同性能的前提下 DenseNets參數量和計算量更小。例如,擁有 20M 參數的 DenseNet-201 的誤差率和擁有超過 40M 參數的 101-ResNet 誤差率相近。從圖3的右圖也可以看到類似的結果:和ResNet-50 計算量接近的 DenseNet 大約是 ResNet-101 計算量的兩倍。

  圖3是DenseNet-BC 和 ResNet在ImageNet數據集上的對比,左邊的那個圖是參數複雜度和錯誤率的對比,你可以在相同錯誤率下看參數複雜度,也可以在相同參數複雜度下看錯誤率,提升還是很明顯的,右邊是flops(可以理解爲計算複雜度)和錯誤率率的對比,同樣有效果。

  值得注意的是,我們是修改和ResNets對應的超參數而不是DenseNets的。我們相信還可以通過修改更多的超參數來優化DenseNet在ImageNet上的性能。

  圖4也很重要,左邊的圖表示不同類型DenseNet的參數和 error 對比。中間的圖表示 DenseNet-BC和ResNet在參數和error的對比,相同 error 下,DenseNet-BC的參數複雜度要小很多。右邊的圖也是表達 DenseNet-BC-100 只需要很少的參數就能達到和 ResNet-1001相同的結果。

5,討論

  從表面來看,DenseNets和ResNets很像:方程(2)和方程(1)的不同主要在輸入 Hl(*) (進行拼接而不是求和)。然而,這個小的改變卻是給這兩種網絡結構的性能帶來了很大的差異。

  模型簡化性(Model Compactness)。將輸入進行連接的直接結果是,DenseNets 每一層學到的特徵圖都可以被以後的任一層利用。該方式有助於網絡特徵的重複利用,也因此得到了更簡化的模型。

  圖4左邊的兩張圖展示了實驗的結果,左圖比較了所有 DenseNets的參數效率,中圖對DenseNets 和 ResNets 的參數效率進行了比較。我們在 C10+ 數據上訓練了不同深度的多個小模型,並繪製出準確率。和一些流行的網絡(如AlexNet, VGG)相比,pre-activation 的 ResNets 的準確率明顯高於其他網絡。之後,我們將 DenseNets (k=12)與這網絡進行了比較。DenseNet的訓練集同上節。

  如圖4,DenseNet-BC 是參數效率最高的一個 DenseNet 版本。此外,DenseNet-BC 僅僅用了大概 ResNets 1/3 的參數量就獲得了相近的準確率(中圖)。該結果與圖3的結果相一致。如圖4右圖,僅有 0.8M 參數量的 DenseNet-BC 和有 10.2M參數的 101-ResNets 準確率相近。

  隱含的深度監督(implicit deep supervision)。稠密卷積網絡可以提升準確率的一個解釋是,由於更短的連接,每一層都可以從損失函數中獲得監督信息。可以將 DenseNets 理解爲一種“深度監督”(Deep supervision)。深度監督的好處已經在之前的深度監督網絡(DSN)中說明,該網絡在每一隱含層都加了分類器,迫使中間層也學習判斷特徵(discriminative features)。

  DenseNet和深度監督網絡相似:網絡最後的分類器通過最多兩個或三個過度層爲所有層提供監督信息。然而,DenseNets的損失含數字和梯度不是很複雜,這是因爲所有層之間共享了損失函數。

  隨機 VS 確定連接。稠密卷積網絡與殘差網絡的隨機深度正則化(stochastic depth regularzaion)之間有着有趣的關係。在隨機深度中,殘差網絡隨機丟掉一些層,直接將周圍的層進行連接。因爲池化層沒有丟掉,所以該網絡和DenseNet有着相似的連接模式:以一定的小概率對相同池化層之間的任意兩層進行直接連接——如果中間層隨機丟掉的話。儘管這兩個方法在根本上是完全不一樣的,但是 DenseNet 關於隨機深度的解釋會給該正則化的成功提供依據。

  總結一下:DenseNet和stochastic depth的關係,在 stochastic depth中,residual中的layers在訓練過程中會被隨機drop掉,其實這就會使得相鄰層之間直接連接,這和DenseNet是很像的

  特徵重複利用。根據設計來看,DenseNets 允許每一層獲得之前所有層(儘管一些是通過過渡層)的特徵圖。我們做了一個實驗來判斷是否訓練的網絡可以重複利用這個機會。我們首先在 C10+ 數據上訓練了 L=40, k=12 的 DenseNet。對於每個 block的每個卷積層 l,我們計算其與 s 層連接的平均權重。三個 dense block 的熱度圖如圖 5 所示。平均權重表示卷積層與它之前層的依賴關係。位置(l, s)處的一個紅點表示層 l 充分利用了前 s 層產生的特徵圖。由圖中可以得到以下結論:

  • 1,在同一個 block 中,所有層都將他的權重傳遞給其他層作爲輸入。這表明早期層提取的特徵可以被同一個 dense block 下深層所利用
  • 2,過渡層的權重也可以傳遞給之前 dense block 的所有層,也就是說 DenseNet 的信息可以以很少的間接方式從第一層流向最後一層
  • 3,第二個和第三個 dense block 內的所有層分配最少的權重給過渡層的輸出,表明過渡層輸出很多冗餘特徵。這和 DenseNet-BC 強大的結果有關係
  • 4,儘管最後的分類器也使用通過整個 dense block 的權重,但似乎更關注最後的特徵圖,表明網絡的最後也會產生一些高層次的特徵。

6,結論

  我們提出了一個新的卷積網絡結構,稱之爲稠密卷積網絡(DenseNet)。它將兩個相同特徵圖尺寸的任意層進行連接。這樣我們就可以很自然的設計上百層的網絡,還不會出現優化困難的問題。在我們的實驗中,隨着參數量的增加,DenseNets的準確率也隨之提高,而且也沒有出現交叉表現或過擬合的現象。通過超參數的調整,該結構在很多比賽的數據上都獲得了不錯的結果。此外,DenseNets有更少的參數和計算量。因爲我們只是在實驗中調整了對於殘差網絡的超參數,所以我們相信通過調整更多的超參數和學習率,DenseNets的準確率還會有更大的提升。

  遵循這個簡單的連接規則,DenseNet可以很自然地將自身映射(identity mappings),深度監督(deep supervision)和深度多樣化(diversified depth) 結合在一起。根據我們的實驗來看,該結構通過對網絡特徵的重複利用,可以學習到更簡單,準確率更高的模型。由於簡化了內部表徵和降低了特徵冗餘,DenseNets可能是目前計算機視覺領域中在卷積網絡方面非常不錯的特徵提取器。在以後的工作中我們計劃研究 DenseNets下的特徵遷移工作。

 

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