舒 軍,蔣明威,楊 莉,陳 宇
(1.湖北工業大學電氣與電子工程學院,武漢 430068;2.湖北工業大學太陽能高效利用及儲能運行控制湖北省重點實驗室,武漢 430068;3.湖北第二師范學院計算機學院,武漢 430205)
卷積神經網絡是一種模仿生物視覺神經連接的多層級聯結構,在圖像、視頻處理領域有著非常廣泛的應用.1998年,LeCun等提出降采樣和網絡權值共享兩種思路,確立了CNN的現代結構—LeNet5[1].2012年,Krizhevsky等提出AlexNet[2],采用了新的非線性激活函數ReLU[3]和dropout[2]函數,減輕了網絡的梯度消失和過擬合現象.2014年,VGG16、19[4]采用3×3卷積核和2×2池化核,驗證了多個小卷積核的疊加效果優于單個大卷積核.同年,GoogleNet[5]設計Inception模塊化結構,提出了Network In Network的思路.隨著VGGNet、GoogleNet等網絡的影響,后續網絡逐漸加深.但網絡加深導致的梯度消失問題,改變激活函數的方法已經無法有效改善.2015年,Highway Networks[6]、ResNet[7]提出躍層思路,躍層(Skip layer)整合前兩層的輸出信息作為當前層的輸入.該方法使上層梯度信息可以通過躍層直接進入后層網絡,減少了連續求導運算導致的梯度消失的問題.2016年,隨機深度網絡[8]在ResNet基礎上采用隨機路徑訓練,提升了深層網絡的訓練速度和性能.2017年CVPR發表的DenseNet[9]結合了兩篇論文[7-8]的思路,提出密集連接結構(Dense Block),即每層網絡的輸入都是之前所有層輸出的集合,每層網絡只學習少量特征圖,降低了網絡參數量.DenseNet繼承了ResNet抗過擬合和梯度消失的優點,而網絡的參數量和計算量只有ResNet的一半.
DenseNet的密集連接結構可以使輸出層獲得之前所有網絡層的信息,增大了特征圖信息的利用率,但對于低強度圖像任務,特征圖的反復疊加,會產生較多冗余數據.原文作者設計了傳輸層和瓶頸層(TransitionLayer &Bottleneck)結構,對輸出特征圖進行壓縮,但在小型數據集上DenseNet仍然出現了不同程度的過擬合問題.本文針對此問題展開研究,提出一種輕量化改進方法.
早期的卷積神經網絡一般由多層不同尺寸卷積核的卷積層(Convolution Layer)[10]進行特征提取和映射,交替加入激活函數、池化層[11]進行非線性激活和降采樣,最后通過全連接層[1]和損失函數進行預測.隨著計算機硬件的發展,LeNet5、AlexNet、VGGNet到Inception深度逐漸加深,圖像處理任務不斷提升的效果也說明了深層神經網絡較淺層神經網絡有更好的性能.但隨著深度增加,出現了梯度消失和梯度爆炸等問題導致訓練困難.新提出的激活函數ReLU和Batch Normalization(BN)[12]的方法一定程度上解決了問題,但對于超深層網絡還是會出現無法訓練或者準確率下降的問題.Highway Networks借鑒LSTM[13]門機制,提出了高速通道的思想,如式(1)所示.
y=H(x,WH)×T+x×C,
(1)
y=H(x,WH)為網絡原來的映射函數,T和C為定義的兩個門函數,x為隔層的特征圖信息,調整兩個函數即可控制變換和非變換信息流的比例.Residual Networks簡化了Highway Networks的方法,采用直連方式,如式(2)所示.
y=F(x,Wi)+x,
(2)
F即ResNet的殘差函數,Wi是殘差層中的權重參數,x為隔層的特征圖信息.結構如圖1所示.
簡化后上層信息直接通過躍層(Skip Layer)[7]和當前輸出合并.躍層在訓練過程中可以直接傳遞上層網絡的梯度信息,提升了特征圖像的復用率,解決了深度網絡的訓練問題.
區別于ResNet的躍層連接結構,DenseNet并非單純的遞進結構,模型結果不僅與當前輸出的特征圖相關,還與網絡淺層輸出有關.基于此思想,DenseNet作者設計了密集型連接塊結構(Dense Block)[9],如圖2所示.

圖2 密集連接塊Fig.2 Dense Block
密集連接塊中任意兩層網絡間均有直接的躍層連接,較ResNet的單層連接,密集型連接的結構對特征圖的利用率更高.DenseNet包含多個密集連接塊,每個密集連接塊后加入傳輸層和瓶頸層結構壓縮參數,第L層網絡的輸入如式(3)所示.
xl=Hl([x0,x1,…,xl-1]),
(3)
xl表示第L層網絡的輸入,[x0,x1,…,xl-1]表示L層之前的網絡的輸出,Hl是表示拼接(Concatenation)的一個復合函數,即傳輸層和瓶頸層結構,包括Batch Normalization(BN),ReLU,Convolution(Conv)和Pooling.基于以上幾點,每一層網絡輸出的特征圖維數都比較低,有效降低了模型參數量,而計算量只有ResNet一半左右.
保留DenseNet密集型連接特性基礎上,本文提出一種改進的輕量化模型,改進前、后網絡結構如圖3所示.

圖3 改進前后DenseNetFig.3 DenseNet and new DenseNet
首先,對密集連接塊進行調整,總層數不變條件下增大密集連接塊數量,保留i層內部網絡;其次,對改進網絡池化部分進行重新設計,使其適應新網絡結構;最后,在密集連接塊間加入躍層模塊,增強信息流通.改進后的網絡lth層的輸入如式(4)所示.
(4)

由于每個密集連接塊后接有傳輸層,數量增加后,其中池化層降采樣會使后續卷積層無效(特征圖尺寸≤卷積核).針對此問題,對新的網絡結構設計了一種根據圖像分辨率的自適應調整方法.保留密集連接塊→傳輸層→瓶頸層的結構,在保證卷積有意義的條件下(特征圖尺寸≥卷積核),自適應池化結構如式(5)所示.
(5)

原網絡在小型數據集(CIFAR10、CIFAR100和SVHN)上密集連接塊的個數少,單個密集連接塊內網絡層數高.由于密集連接的特性,特征圖復用率極高,而過于復雜的模型易導致過擬合問題.
針對此問題,設計了一組密集連接塊數量和其內部網絡層數最優化實驗.層數低于3的密集連接塊和殘差結構基本相同,層數高于12則與DenseNet原網絡相同,且過高的層數需要更大的壓縮系數以節省計算資源.為避免實驗結果差值太小,綜合考慮,選擇4/6/9/12層四種方案在CIFAR10數據集上進行測試,實驗結果如表1所示.表中深度L=40層,壓縮系數k=12,Blocks表示密集連接塊基礎單元個數,Params即模型的參數量,C10是4種改進模型在CIFAR10數據集測試的錯誤率.

表1 密集連接塊基礎單元數實驗Tab.1 Dense Block basic unit experiment
表1中,DenseNet[6](6.72%)和DenseNet[9](6.69%)效果最佳且較為相近.而密集連接塊內層數越高其個數越少,躍層數目也隨之減少,考慮參數量和加入的躍層結構,選擇DenseNet[6]作為網絡的基本單元.在相同壓縮系數(k=12)條件下對四種深度(L=40/100/190/250)的DenseNet[6]進行了測試,其余參數同表1,實驗結果如表2所示.

表2 Dense Block[6]層數實驗Tab.2 Dense Block[6] experiment on different layers
表2中,DenseNet[6]-250并沒有出現之前DenseNet BC-250的過擬合的現象,隨著網絡的加深,精度隨之提升.區別于DenseNet的三個或者四個密集連接塊,6層的密集連接塊將模型細化,解決了網絡深度和特征圖的維數不匹配問題.
由于密集連接塊→傳輸層→瓶頸層結構對輸出信息的壓縮,且密集連接塊間無其他信息通道,故可能存在信息損失,網絡的信息流通可以通過添加躍層的方式來進行優化.
針對此問題,考慮參數量和測試精度,設計了四組躍層(Skip Layer)對比實驗,B1組為原躍層結構,使用兩層3×3卷積層,中間加入批標準化(BN)和ReLU激活函數;B2組在B1組的基礎上首尾加入1×1卷積層對參數量進行壓縮;B3、B4組在B2組的基礎上去掉1×1+3×3+BN層,分別加入dropout和dropout &BN.實驗使用CIFAR10數據集進行測試,采用DenseNet(L=40,k=12)作為基礎網絡,加入Bi組躍層模塊,四組實驗方案參數量(Params)和測試錯誤率結果如表3所示,結構如圖4(a)所示.

表3 躍層模塊實驗Tab.3 Skip Layer unit experiment
表3中,B1組未做數據壓縮處理的躍層改進網絡效果最好(6.32%),參數量也是最高的;B2組加入兩層1×1卷積后,參數量減少,但1×1卷積的壓縮作用導致模型精度下降;B3、B4去掉部分卷積層后,參數量最優(1.18 M),且加入了dropout+BN的B4組效果更接近B1組.基于上節討論的基礎,在每個密集連接塊間加入B4組的躍層模塊,最終網絡結構示意如圖4(b)所示.

圖4 加入躍層的DenseNet和DenseNet[6]-SLFig.4 DenseNet with skip layer and DenseNet[6]-SL
為了測試DenseNet及其三種改進方法的性能,在CIFAR10數據集上做了一組對比試驗.改進網絡和DenseNet(L=40,k=12)的參數量(Params)、測試錯誤率的結果如表4所示.

表4 DenseNet和改進網絡Tab.4 DenseNet and new network
對比1、2和3、4組,加入了躍層結構的DenseNet-SL(L=40,k=12)和DenseNet[6]-SL測試誤差降低(-0.63%、-0.65%),實驗結果證明躍層連接可以增強密集連接塊間信息傳遞能力;對比2、4組,深度相同的情況下,擁有多個躍層的DenseNet[6]-SL測試誤差更小(-0.3%).故密集連接塊數量越少,躍層更趨向于全局殘差結構[14-15]傳遞模塊間信息,而不是ResNet中作為深度網絡的一種輔助路徑.
3.1.1 CIFAR數據集 CIFAR10和CIFAR100數據集是由Hinton的學生Krizhevsky等收集的一個用于生活常見物體圖像的數據集,它包含60 000張32×32的RGB彩色圖片,分10和100個類別.其中,50 000張用于訓練集,10 000張用于測試集.
3.1.2 SVHN數據集 SVHN數據集來自于Google街景圖片中的房屋號碼,是一個自然場景圖像中的數字識別問題.圖像已經過ROI提取和預裁剪,對數據預處理和格式化的需求最小.包含60萬張32×32的RGB彩色圖片,分0~9十個數字類別.

3.3.1 數據集測試效果對比 表5中C10、C100和SVHN三列數據為兩種改進方法DenseNet[6]和NewDenseNet[6]在三種數據集上測試結果.DenseNet[6]在淺層(L=40/100,結果取均值)網絡上測試誤差較DenseNet降低了3.3%;NewDenseNet[6]在淺層(L=40/100,結果取均值)網絡上測試誤差較DenseNet降低了9.3%.由于DenseNet(L=190)原文實驗只有部分數據增強(C10+、C100+)后的數據,故只對比深層網絡(L=250).在深層網絡上,DenseNet[6]測試誤差和DenseNet基本持平;NewDenseNet[6]測試誤差較DenseNet降低了10.8%,網絡的訓練和校驗損失曲線如圖5所示.

表5 實驗結果總表Tab.5 Summary of experimental results

圖5 CIFAR數據集訓練和校驗損失曲線Fig.5 CIFAR data set train loss and test loss curves
3.3.2 模型參數、計算量對比 表5中Params、Flops兩列數據為兩種改進方法DenseNet[6]和NewDenseNet[6]的參數和計算量.DenseNet[6]的淺層(L=40/100,結果取均值)網絡參數量較DenseNet降低了36%,計算量降低了26%;NewDenseNet[6]的淺層(L=40/100,結果取均值)網絡參數量較DenseNet增加了28%,計算量降低了25%.DenseNet[6]的深層(L=190/250,結果取均值)網絡參數量較DenseNet降低了14%,計算量降低了50%;NewDenseNet[6]的深層(L=190/250,結果取均值)網絡參數量較DenseNet增加了9.6%,計算量降低了43.5%,網絡的參數和計算量對比如圖6所示.
3.3.3 綜合評估 DenseNet[6]與DenseNet相比,參數量和計算量更少,而測試誤差基本持平;NewDenseNet[6]較DenseNet參數量略有增加,但計算量降低且精度提升.其中NewDenseNet(L=190,k=40)效果最佳(C10 3.82%、C100 17.36%、SVHN 1.51%).綜上所述,由于改進的方法對密集連接塊的輕量化調整,降低了疊加的產生的特征圖維數,在過擬合方面,網絡在L=250、k=24時兩種改進方法DenseNet[6]和NewDenseNet均未出現退化現象,網絡效果隨著深度增加而遞進,實驗結果證明改進方法有效.該輕量化網絡對小數據集有著更大的優勢,減少了過擬合的產生.
本文主要針對DenseNet網絡架構展開研究.DenseNet[6]的調整增大了網絡深度和特征圖維數的比例,與原網絡精度相近的情況下降低了參數量和計算量,證明多個小型密集連接塊可以降低模型復雜度.更進一步,本文在DenseNet[6]的基礎上加入躍層作為輔助路徑(NewDenseNet).實驗結果證明,加入輔助路徑的網絡在參數量和原網絡持平的情況下,計算量更少且精度更高.