DenseNet論文拜讀:Densely Connected Convolutional Networks

原文鏈接:https://arxiv.org/pdf/1608.06993.pdf

0 摘要

最近的研究表明,如果卷積網絡在接近輸入層和接近輸出層的層之間包含更短的連接,那麼它在本質上可以更深入、更準確、更有效地進行訓練。在本文中,我們接受了這一觀察,並介紹了稠密卷積網絡(DenseNet),它以前饋的方式將每一層連接到每一層。傳統的卷積網絡有LL層,每層之間有LL個連接,而我們的網絡有L(L+1)2\frac {L(L+1)}2個直接連接。對於每一層,前面所有層的功能映射都用作輸入,而它自己的功能映射用作所有後續層的輸入。Densenet有幾個引人注目的優點:它們緩解了消失梯度問題,增強了特徵傳播,鼓勵了特徵重用,並大大減少了參數的數量。我們在四個高度競爭的對象識別基準任務(CIFAR-10、CIFAR-100、SVHN和ImageNet)上評估我們提出的體系結構。Densenet在大多數方面都比最先進的技術有了顯著的改進,同時需要更少的計算來實現更高的性能。代碼和預先訓練的模型可在:https://github.com/liuzhuang13/DenseNet.

1 介紹

卷積神經網絡(CNNs)已經成爲視覺對象識別的主流機器學習方法。雖然它們最初是在20多年前[18]引入的,但計算機硬件和網絡結構的改進直到最近才使訓練真正深入的CNNs成爲可能。最初的LeNet5[19]由5層組成,VGG有19層[29],直到去年Highway Networks[34]和Residual Networks[11]才突破了100層屏障。

隨着CNNs變得越來越深入,一個新的研究問題出現了:當有關輸入或梯度的信息通過許多層時,它可能會消失,並在到達網絡的末端(或開始)時被“wash out”。許多最近的出版物都提到了這個或相關的問題。ResNets[11]和Highway Networks[34]的旁路信號,從一層通過身份連接到下一層。隨機深度[13]通過在訓練過程中隨機丟棄層來縮短ResNets,以允許更好的信息和梯度流動。FractalNets[17]將多個具有不同卷積塊數的並行層序列重複組合,以獲得較大的名義深度,同時保持了網絡中的許多短路徑。儘管這些不同的方法在網絡拓撲結構和訓練過程中有所不同,但它們都具有一個關鍵的特徵:它們創建了從早期層到後期層的短路徑。

在本文中,我們提出了一種架構,它將這種見解提煉爲一種簡單的連接模式:爲了確保網絡中各層之間的信息流達到最大,我們將所有層(具有匹配的功能圖大小)直接連接在一起。爲了保持前饋特性,每一層都從前面的所有層獲得額外的輸入,並將自己的特性映射傳遞給後面的所有層。Figure 1概要地說明了這種佈局。至關重要的是,與ResNets不同的是,我們從來不會在特徵被傳遞到一個層之前通過求和來合併它們;相反,我們通過連接它們來組合特性。因此,第lthl^{th}層有ll輸入,由之前所有卷積塊的特徵映射組成。它自己的特性映射被傳遞到所有的 LlL-l 後續層。這在LL層網絡中引入了L(L+1)2\frac {L(L+1)}2個連接,而不像傳統架構中只引入LL。由於其密集的連通性模式,我們將我們的方法稱爲密集卷積網絡(DenseNet)。

這種密集連接模式的一個可能與直覺相反的效果是,它比傳統的卷積網絡需要更少的參數,因爲不需要重新學習冗餘的特徵映射。傳統的前饋結構可以看作是具有狀態的算法,它在層與層之間傳遞。每個層從它的前一層讀取狀態並寫入到後一層。它改變了狀態,但也傳遞了需要保留的信息。ResNets[11]通過添加標識轉換顯式地保存了該信息。最近ResNets[13]的變化表明,許多層的貢獻非常小,實際上可以在訓練中被隨機丟棄。這使得ResNets的狀態類似於(展開的)循環神經網絡[21],但是ResNets的參數數量要大很多,因爲每一層都有自己的權值。我們提出的DenseNet體系結構明確區分了添加到網絡中的信息和保留的信息。DenseNet層非常窄(例如,每層12個過濾器),只將一小部分特徵映射添加到網絡的集合知識中,並保持其餘的特徵映射不變,最後的分類器根據網絡中的所有特徵映射做出決策。

除了更好的參數效率外,DenseNets的一大優點是改進了整個網絡的信息流和梯度,這使得它們更容易訓練。每一層都可以直接訪問從損失函數到原始輸入信號的梯度,從而實現一個隱式的深度監控[20]。這有助於培訓更深層次的網絡體系結構。此外,我們還觀察到密集連接具有正則化效果,可以減少訓練集大小較小的任務的過度擬合。

我們在四個高度競爭的基準數據集(CIFAR-10、CIFAR-100、SVHN和ImageNet)上評估DenseNets。與現有算法相比,我們的模型需要的參數要少得多,而且精度相當。此外,在大多數基準測試任務上,我們的性能都明顯優於當前最先進的測試結果。

2 相關工作

對網絡結構的探索從一開始就是神經網絡研究的一部分。最近神經網絡的重新流行也使這一研究領域重新活躍起來。現代網絡中不斷增加的層數放大了架構之間的差異,激發了對不同連接模式的探索和對舊研究思想的重新審視。

類似於我們提出的密集網絡佈局的級聯結構已經在20世紀80年代的神經網絡文獻中進行了研究。他們的開創性工作集中在以逐層方式訓練的完全連接的多層感知器上。最近,提出了用批量梯度下降訓練完全連接的級聯網絡[40]。儘管這種方法對小型數據集有效,但它只適用於具有幾百個參數的網絡。在[9,23,31,41]中,通過跳躍連接利用CNNs的多級特徵被發現對各種視覺任務是有效的。與我們的工作相平行,[1]爲具有類似於我們的跨層連接的網絡導出了一個純理論框架。

Highway Networks[34]是第一批提供了一種有效的方法來訓練超過100層的端到端網絡的架構之一。利用帶有選通單元的旁通路徑,可以毫無困難地優化數百層的Highway Networks。旁通路徑被認爲是簡化這些非常深的網絡訓練的關鍵因素。這一點得到了ResNets[11]的進一步支持,其中使用純標識映射作爲旁路路徑。ResNets在許多具有挑戰性的圖像識別、定位和檢測任務(如ImageNet和COCO對象檢測[11])上取得了令人印象深刻的、破紀錄的性能。最近,隨機深度被提出作爲一種成功訓練 1202 層ResNet[13]的方法。隨機深度通過在訓練過程中隨機丟層來改進深度剩餘網絡的訓練。這表明並不是所有的層都是需要的,並強調在深層(殘餘)網絡中有大量的冗餘。我們的論文在一定程度上受到了這一觀察結果的啓發。預激活的ResNets也有助於訓練最先進的網絡 (大於 1000層)[12]。

一種使網絡更深入的正交方法(例如,在跳過連接的幫助下)是增加網絡寬度。GoogLeNet[36,37]使用了"Inception模塊",它將不同大小的過濾器產生的特徵映射連接起來。在[38]中,提出了一種具有廣泛廣義剩餘塊的ResNets變體。事實上,只要增加每層ResNets的過濾器數量,只要深度足夠[42],就可以改善其性能。FractalNets還使用廣泛的網絡結構[17]在多個數據集上獲得了具有競爭力的結果。

Densenet並沒有從極深或極廣的體系結構中汲取代表性的力量,而是通過特性重用來開發網絡的潛力,從而生成易於訓練且具有高度參數效率的精簡模型。將不同層學習到的特徵圖串聯起來,增加了後續層輸入的變化,提高了效率。這是DenseNets和ResNets之間的一個主要區別。與 Inception 網絡相比[36,37],Inception 網絡也連接來自不同層的特徵,Densenet更簡單、更高效。

還有其他值得注意的網絡架構創新,它們產生了具有競爭力的結果。Network in Network (NIN)[22]結構將微型多層感知器加入到卷積層的過濾器中,以提取更復雜的特徵。在Deeply Supevised Network(DSN)[20]中,內層由輔助分類器直接監督,可以增強較早層接收到的梯度。Ladder Networks[27,25]將橫向連接引入到自動編碼器中,在半監督學習任務中產生了令人印象深刻的準確性。在[39]中,提出了通過結合不同基礎網絡的中間層來改善信息流的Deeply-Fused Nets(DFNs)。通過增加具有最小化重建損失的路徑的網絡,還可以改進圖像分類模型[43]。

3 DenseNets

考慮通過卷積網絡傳遞的單個圖像x0x_0,網絡由LL層組成,每層實現一個非線性變換Hl()H_l(·),其中對LL層進行索引。Hl()H_l(·)可以是批量歸一化(BN)[14]、整流線性單元(ReLU)[6]、池化[19]或卷積(Conv)等操作的複合函數。我們用xlx_l表示第lthl^{th}層的輸出。

ResNets. 傳統卷積前饋網絡連接第lthl^{th}的輸出層的輸入(l+1)th(l+1)^{th}層[16],這產生了以下層過渡:xl=Hl(xl1)x_l = H _l(x_{l-1})。ResNets[11]通過一個身份函數繞過非線性轉換來增加一個跳躍連接:
xl=Hl(xl1)+xl1(1)x_l=H_l(x_{l-1})+x_{l-1}\tag{1}
ResNets的一個優點是梯度可以直接通過身份函數從較晚的層流向較早的層。但是,身份函數和HlH_l 的輸出通過求和的方式結合在一起,可能會阻礙網絡中的信息流。

Dense connectivity. 爲了進一步改進層之間的信息流,我們提出了一種不同的連接模式:我們將任何層直接連接到所有後續層。Figure 1概要地說明了生成的DenseNet的佈局。因此,第lthl^{th}層接收前面所有層的特徵圖x0,.....,xl1x_0,.....,x_{l-1},如輸入:
xl=Hl([x0,x1,......,xl1])(2)x_l=H_l([x_0,x_1,......,x_{l-1}])\tag{2}
[x0,x1,......,xl1][x_0,x_1,......,x_{l-1}]是指在第0,...,l10,...,l-1層中產生的特徵映射的連接。由於其密集的連通性,我們將這種網絡架構稱爲Dense Convolutional Network (DenseNet)。爲了便於實現,我們將式(2)中的多個Hl()H_l(·)輸入串聯成一個張量。

Composite function. 在[12]的驅動下,我們將Hl()H_l(·)定義爲三個連續操作的複合函數:批量歸一化(BN)[14],然後是一個整流線性單元(ReLU)[6]和一個3×3卷積(Conv)。

Pooling layers. 當特徵映射的大小發生變化時,公式(2)中使用的連接操作是不可行的。然而,卷積網絡的一個重要部分是向下採樣層,它可以改變特徵圖的大小。爲了便於在我們的架構中進行向下採樣,我們將網絡劃分爲多個緊密連接的密集塊;參見Figure 2。我們將塊之間的層稱爲轉換層,它執行卷積和池化。我們實驗中使用的轉換層包括一個批處理規範化層和一個 1 x 1 個卷積層,以及一個 2 x 2 個平均池化層。

Growth rate.
如果每個函數HlH_l 產生kk個特徵映射,則第lthl^{th}層有k0+k×(l1)k_0 + k × (l-1)個輸入特徵映射,其中k0k_0是輸入層的通道數。DenseNet與現有網絡架構之間的一個重要區別是,DenseNet可以具有非常窄的層,例如:k=12k = 12。我們稱超參數kk爲網絡的增長率。我們在第4節中展示了一個相對較小的增長率就足以在我們測試的數據集上獲得最新的結果。對此的一種解釋是,每個層都可以訪問其塊中的所有前面的特性映射,因此也可以訪問網絡的“collective knowledge”。可以將功能圖視爲網絡的全局狀態。每個層都將自己的kk個功能映射添加到這個狀態。增長率決定了每一層對全局狀態貢獻多少新信息。全局狀態一旦編寫完成,就可以從網絡中的任何地方訪問它,並且與傳統的網絡架構不同,不需要在層與層之間複製它。

Bottleneck layers. 儘管每個層只產生kk個輸出特性映射,但它通常有更多的輸入。在[37,11]中已經注意到,可以在每個 3 x 3 個卷積之前引入一個 1 x 1 個卷積作爲瓶頸層,以減少輸入特徵映射的數量,從而提高計算效率。我們發現這種設計對DenseNet特別有效,我們參考我們的網絡有這樣一個瓶頸層,即,到BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)在HlH_l 的版本,即DenseNet-B。在我們的實驗中,我們讓每個 1x1 個卷積產生 4k4k 的特徵圖。

Compression. 爲了進一步提高模型的緊湊性,我們可以減少過渡層的特徵映射的數量。如果緻密塊包含mm特徵圖譜,我們下面的過渡層生成θm\lfloorθm\rfloor輸出特徵圖譜,當0<θ10<\theta\le1被稱爲壓縮因子。當θ=1θ= 1,跨過渡層特徵圖的數量保持不變。我們稱θ<1θ < 1的DenseNet 爲 DenseNet-C,b並且我們設置θ=0.5θ= 0.5實驗。當瓶頸和過渡層同時都使用 θ<1θ < 1 ,我們將我們的模型稱爲DenseNet-BC。

Implementation Details. 在除ImageNet外的所有數據集上,我們實驗中使用的DenseNet有三個密集的塊,每個塊具有相同數量的層。在進入第一個稠密塊之前,對輸入圖像進行與16(或兩倍於DenseNet-BC的生長速度)輸出通道的卷積。對於內核大小爲 3 x 3 的卷積層,輸入的每一邊都用一個像素進行零填充,以保持特徵圖的大小不變。我們使用 1 x 1卷積和 2 x 2 平均池作爲兩個相鄰密集塊之間的過渡層。在最後一個密集塊的末尾,執行一個全局平均池,然後附加一個softmax分類器。三個密集區塊的地物圖大小分別爲 32 x 32、16 x 16、和 8 x 8。我們用配置爲{L=40,k=12},{L=100,k=12}\{L=40,k=12\},\{L=100,k=12\}{L=100,k=24}\{L=100,k=24\}的基本DenseNet結構進行了實驗;。對於DenseNetBC,配置的網絡{L=100,k=12},{L=250,k=24}\{L=100,k=12\},\{L=250,k=24\}{L=190,k=40}\{L=190,k=40\}

在我們的ImageNet實驗中,我們使用了一個 DenseNet-BC 結構,在 224 x 224 輸入圖像上有4個密集塊。初始卷積層包括 2k2k 個大小爲 7 x 7 的卷積,步幅爲 2;所有其他層的特徵圖的數量也跟隨 kk 的設置。我們在ImageNet上使用的網絡配置 Table1 所示。

4 實驗

我們在幾個基準數據集上實證地證明了DenseNet的有效性,並與最先進的體系結構進行了比較,特別是與ResNet及其變體進行了比較。

4.1 數據集

CIFAR. 兩個CIFAR數據集[15]由 32×32 像素的彩色自然圖像組成。CIFAR-10 (C10)由來自10的圖像和來自CIFAR-100 (C100)的圖像組成100類。培訓和測試集包含50,000和單獨的10000張圖片,我們扣留5000張訓練圖片作爲驗證集。我們採用標準的數據擴充方案(鏡像/移位),該方案廣泛應用於這兩個數據集[11、13、17、22、28、20、32、34]。我們在數據集名稱的末尾用一個 “+” 標記來表示這個數據擴充方案(例如,C10+)。對於預處理,我們使用通道均值和標準差對數據進行歸一化處理。在最後一次運行中,我們使用了所有50,000張訓練圖像,並在訓練結束時報告最後的測試錯誤。

SVHN. 街景門牌號碼(SVHN)數據集[24]包含 32×32 的彩色數字圖像。訓練集中有73,257張圖像,測試集中有26,032張圖像,和531,131張圖片供額外訓練使用。按照慣例[7,13,20,22,30],我們使用所有的訓練數據,沒有任何數據擴充,並且從訓練集中分離出一個包含6,000張圖像的驗證集。我們選擇了訓練中驗證誤差最小的模型,並報告了測試誤差。我們遵循[42]並將像素值除以255,所以它們在[0;1)範圍內。

ImageNet. ILSVRC 2012分類數據集[2]包含120萬張用於訓練的圖像,以及5萬張用於驗證的圖像。來自1000個類。我們對訓練圖像採用與[8,11,12]相同的數據增強方案,並在測試時應用大小爲224×224的單株或10株作物。在[11,12,13]之後,我們報告了驗證集上的分類錯誤。

4.2 訓練

所有網絡均採用隨機梯度下降法(SGD)進行訓練。在CIFAR和SVHN上,我們分別使用批處理大小爲64進行300個和40個epochs訓練。初始學習率設置爲0.1,除以10,取50%和75%的訓練時間。在ImageNet上,我們使用一個批處理大小爲256進行90個epochs訓練。初始學習率設置爲0.1,並且在30個epoch到60個epoch降低10次。注意,DenseNet的初始實現可能包含內存效率低下。爲了減少GPUs上的內存消耗,請參閱我們關於DenseNets[26]的內存效率實現的技術報告。

隨後[8],我們使用一個 10410^{-4}的權重縮減和一個沒有減弱的0.9的Nesterov動量。我們採用了[10]引入的權值初始化。對於三個沒有數據擴充的數據集,即,C10, C100和SVHN,我們在每個卷積層(第一個層除外)之後添加一個dropout層[33],並將dropout rate設置爲0.2。對於每個任務和模型設置,只評估一次測試錯誤。

4.3 CIFAR和SVHN的分類結果

我們用不同的深度(LL)和增長率(kk)來訓練DenseNets。CIFAR和SVHN的主要結果如Table 2所示。爲了突出總體趨勢,我們用黑體標記所有超過現有最先進技術的結果,用藍色標記總體最佳結果。

Accuracy. 最明顯的趨勢可能來自Table 2的底一行,它表示DenseNet-BC的L=190L = 190k=40k = 40在所有CIFAR數據集上都優於現有的最新技術。C10+的錯誤率爲3.46%,C10+的錯誤率爲17.18%
C100+明顯低於寬ResNet架構[42]實現的錯誤率。我們最好的成績C10和C100(不增加數據)甚至更令人鼓舞:兩者都比使用drop-path正則化[17]的FractalNet低近30%。在SVHN上,L=100L = 100k=24k = 24的DenseNet在dropout時也超過了目前寬ResNet的最佳結果。然而,250層的DenseNet-BC並沒有進一步改進其更短版本的性能。這可以解釋爲SVHN是一個相對簡單的任務,極深的模型可能會過度適合訓練集。

Capacity. 在沒有壓縮或瓶頸層的情況下,DenseNets的總體趨勢是隨着LLkk增加性能更好。我們把這主要歸因於模型容量的相應增長。C10+和C100+這兩個列最能說明這一點。在C10+上,隨着參數數量從1.0M,超過7.0M增加到27.2 M,誤差從5.24%下降到4.10%,最後下降到3.74%。在C100+上,我們觀察到類似的趨勢。這表明,DenseNets可以利用更大、更深層次模型增加的表徵能力。這也表明它們不存在過度擬合或剩餘網絡[11]的優化困難。

Parameter Efficiency. Table 2的結果表明DenseNets比其他體系結構(特別是ResNets)更有效地利用了參數。在過渡層具有瓶頸結構和降維的DenseNetBC特別具有參數效率。例如,我們的250層模型只有15.3M的參數,但它始終優於其他模型,如FractalNet和寬ResNets,它們的參數超過30M。我們還強調了DenseNet-BC在L=100L = 100k=12k = 12時的性能與使用較少90%參數的1001層預激活ResNet的性能相當(例如,在C10+時的4.51%對4.62%的錯誤,在C100+時的22.27%對22.71%的錯誤)。Figure 4(右面板)顯示了這兩個網絡在C10+上的訓練損失和測試錯誤。1001 層深ResNet收斂到一個較低的訓練損失值,但有類似的測試錯誤。下面我們將更詳細地分析這種影響。

Overfitting. 更有效地使用參數的一個積極的副作用是,DenseNets傾向於不太傾向於過度擬合。我們注意到,在沒有數據擴充的數據集上,DenseNet體系結構相對於以前工作的改進特別明顯。在C10中,改進表明錯誤相對減少了29%,從7.33%減少到5.19%。在C100上,從28.20%到19.64%降低了約30%。在我們的實驗中,我們觀察到潛在的過擬合在一個單一的設置:在C10上,將k=12k =12增加到k=24k =24所產生的參數增長4倍,導致誤差從5.77%小幅增加到5.83%。DenseNet-BC的瓶頸和壓縮層似乎是對抗這種趨勢的有效方法。

4.4 ImageNet的分類結果

我們在ImageNet分類任務中評估了不同深度和增長率的DenseNet-BC,並將其與最先進的ResNet體系結構進行了比較。爲了確保兩個架構之間的公平比較,我們通過採用[8]爲ResNet提供的公開的Torch(https://github.com/facebook/fb.resnet.torch)實現,消除了數據預處理和優化設置方面的差異等所有其他因素。

我們只需將ResNet模型替換爲DenseNet-BC網絡,並保持所有實驗設置與用於ResNet的設置完全相同。

我們在Table 3中報告了DenseNets在ImageNet上的single-crop和10-crop驗證錯誤。Figure 3顯示了DenseNets和DenseNets的single-crop top-1驗證錯誤作爲參數數量(左)和FLOPs(右)的函數。結果顯示在圖中DenseNets的性能與最先進的ResNets不相上下,同時需要更少的參數和計算來實現可比較的性能。例如,一個帶有20M參數模型的DenseNet-201與帶有超過40M參數的 101層ResNet 產生類似的驗證錯誤。類似的趨勢也可以從右側面板中觀察到,該面板將驗證錯誤繪製爲FLOPs次數的函數:需要與ResNet-50相同計算量的DenseNet與需要兩倍計算量的ResNet-101的性能相當。

值得注意的是,我們的實驗設置意味着我們使用優化過的超參數設置ResNets,但DenseNets沒有。可以想象,更廣泛的超參數搜索可能會進一步提高DenseNet在ImageNet上的性能。

5 討論

從表面上看,DenseNets與ResNets非常相似:Eq.(2)Eq.(2)Eq.(1)Eq.(1)的區別只是在於對Hl()H_l (·)的輸入是串聯的而不是求和的。然而,這種看似很小的修改所帶來的影響導致了兩種網絡架構的本質不同。

Model compactness. 作爲輸入連接的一個直接結果,DenseNet的任何層所學習的特徵映射都可以被所有後續層訪問。這鼓勵了整個網絡中的特性重用,並導致了更緊湊的模型。

Figure 4中左邊的兩個圖顯示了一個實驗的結果,該實驗的目的是比較DenseNets的所有變體的參數效率(左)和一個可比較的ResNet體系結構(中)。我們在C10+上訓練多個不同深度的小網絡,並繪製它們的測試精度作爲網絡參數的函數。與其他流行的網絡架構,如AlexNet[16]或VGG-net[29]相比,預激活的ResNets使用更少的參數,而通常實現更好的結果[12]。因此,我們將DenseNet (k=12k = 12)與此體系結構進行比較。DenseNet的訓練設置與前一節相同。

由圖可知,DenseNet- BC始終是DenseNet最具參數效率的變量。爲了達到同樣的精度,DenseNet-BC只需要大約1/3的ResNets參數(中間的plot)。這個結果與我們在Figure 3中展示的ImageNet上的結果一致。Figure 4中的右圖顯示,只有0.8M可訓練參數的DenseNet-BC能夠達到與具有10.2M參數的1001層(預激活)ResNet[12]相當的精度。

Implicit Deep Supervision. 稠密卷積網絡精度提高的一種解釋可能是,單個層通過較短的連接從損失函數獲得額外的監督。人們可以把DenseNets解釋爲一種“深度監督”。深度監管的好處已經在深度監管網絡(DSN;在每個隱藏層上都附加了分類器,強制中間層學習有區別的特徵。

DenseNets以一種隱式的方式執行類似的深度監視:網絡頂部的單個分類器通過最多兩層或三層的轉換層向所有層提供直接監視。然而,DenseNets的損失函數和梯度基本上沒有那麼複雜,因爲所有層之間共享相同的損失函數。

Stochastic vs. deterministic connection. 稠密卷積網絡與隨機深度正則化殘差網絡[13]之間存在着有趣的聯繫。在隨機深度中,殘差網絡中的層被隨機丟棄,從而在周圍層之間建立起直接的聯繫。由於池化層從未被丟棄,因此網絡的連接模式與DenseNet類似:如果所有中間層都被隨機丟棄,那麼相同池化層之間的任何兩層直接連接的概率都很小。雖然這兩種方法最終有很大的不同,但DenseNet對隨機深度的解釋可能爲這種正則化器的成功提供一些見解。

Feature Reuse. 通過設計,Densenet允許各個層從它前面的所有層訪問特性映射(儘管有時通過過渡層)。我們進行了一個實驗來調查一個訓練有素的網絡是否利用了這個機會。我們首先在C10+上訓練一個DenseNet, L=40k=12L = 40 和 k = 12。對於塊內的每個卷積層 ll,我們計算分配給與 ss 層連接的平均(絕對)權重。Figure 5顯示了所有三個密集塊的熱圖。平均絕對權重代替了卷積層對前一層的依賴。位置上的紅點(l,sl,s)表示該 ll 層平均較強地使用了之前生成的 ss 層的特徵映射。從圖中可以觀察到幾個現象:

  1. 所有層都將它們的權重分散到同一塊中的多個輸入上。這表明,由非常早期的層提取的特徵,實際上,是由整個相同密集塊的深層直接使用的。
  2. 過渡層的權值也將它們的權值分散到前面密集塊內的所有層上,這表示從DenseNet的第一個層到最後一個層的信息流通過幾個間接的方向。
  3. 第二個和第三個密集塊內的層一致地將最小的權重分配給過渡層(三角形的頂行)的輸出,這表明過渡層輸出了許多冗餘特性(平均低權重)。這與DenseNet-BC的強大結果相一致,這些輸出正是在這裏被壓縮的。
  4. 雖然最後的分類層(如最右邊所示)也使用了整個密集塊的權重,但似乎集中在最終的特徵圖上,這表明在網絡的後期可能會產生一些更高級的特徵。

6 結論

我們提出了一種新的卷積網絡架構,我們稱之爲密集卷積網絡(DenseNet)。它引入了具有相同功能映射大小的任意兩個層之間的直接連接。我們證明了DenseNets可以自然地擴展到數百個層,而沒有表現出優化的困難。在我們的實驗中,隨着參數數量的增加,DenseNets的精度會不斷提高,不會出現任何性能下降或過擬合的跡象。在多種設置下,它在幾個高度競爭的數據集中實現了最先進的結果。此外,DenseNets需要更少的參數和更少的計算來實現最先進的性能。由於我們在研究中採用了針對殘差網絡優化的超參數設置,因此我們認爲,通過更詳細地調整超參數和學習速率調度,可以進一步提高DenseNets的精度。

同時遵循一個簡單的連接規則,DenseNets自然地集成了身份映射、深度監控和多樣化深度的特性。它們允許特性在整個網絡中重用,因此可以學習更緊湊的模型,根據我們的實驗,也可以學習更精確的模型。由於其緊湊的內部表示和減少的特徵冗餘,DenseNets可能是很好的基於卷積特徵的各種計算機視覺任務的特徵提取器,如[4,5]。我們計劃在未來的工作中與DenseNets一起研究這種特徵轉移。

Acknowledgements.

References

Reference:

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