高建瓴 王竣生 王許
摘 要:在深度學習中,隨著神經(jīng)網(wǎng)絡層數(shù)的加深,訓練網(wǎng)絡變得越來越困難,現(xiàn)有的淺層的網(wǎng)絡無法明顯提升網(wǎng)絡的識別效果。針對在原有網(wǎng)絡的情況下提升網(wǎng)絡識別效果,減少參數(shù)的問題,本文提出一種改進的DenseNet網(wǎng)絡模型,借鑒Inception V3的思想,利用非對稱卷積將DenseNet網(wǎng)絡中Dense Block層所包含的3×3卷積分解成3×1和1×3的兩個卷積,簡化網(wǎng)絡結(jié)構模型。之后再對改進前與改進后的網(wǎng)絡模型在數(shù)據(jù)集上進行訓練,實驗結(jié)果表明,與經(jīng)典的DenseNet網(wǎng)絡模型相比,改進后的網(wǎng)絡模型可以提高圖像識別的準確性,降低參數(shù),有效地縮短運行時間。
關鍵詞:DenseNet網(wǎng)絡;圖像識別;深度學習;卷積神經(jīng)網(wǎng)絡
中圖分類號:TP391.4
文獻標識碼: A
圖像識別現(xiàn)今廣泛應用于工業(yè)、醫(yī)學、地理學以及人工智能,其中圖像識別是人工智能的一個重要應用領域。
1989年,LE[1]首次提出卷積神經(jīng)網(wǎng)絡,在之后的幾十年里卷積神經(jīng)網(wǎng)絡由于技術限制等因素使其發(fā)展速度較為緩慢。直到2012年提出AlexNet[2]網(wǎng)絡,卷積神經(jīng)網(wǎng)絡得到了急速發(fā)展,在計算機視覺、計算機圖形學、自然語言處理等領域上取得了較好的結(jié)果,但AlexNet網(wǎng)絡相比之前其他的卷積網(wǎng)絡最顯著的特點是參數(shù)規(guī)模變大,網(wǎng)絡層數(shù)更深。2014年,Google提出了GooLeNet[3]網(wǎng)絡,其主要創(chuàng)新Inception機制,即對圖像進行多尺度處理,主要解決了網(wǎng)絡參數(shù)增加之后出現(xiàn)過擬合,以及計算量的增加問題。同年牛津大學視覺組(Visual Geometry Group)提出了VGG[4]網(wǎng)絡,相對于AlexNet網(wǎng)絡,VGG網(wǎng)絡去掉了LRN層,同時采取小尺寸的卷積核來模擬更大尺寸的卷積核,從而減少了參數(shù)量。2015年,HE等提出了殘差網(wǎng)絡(ResNet)[5],通過使用Residual Unit訓練出152層深的神經(jīng)網(wǎng)絡,該網(wǎng)絡一經(jīng)出世,便在ImageNet中獲得圖像分類、檢測和定位的冠軍,其中在圖像分類的數(shù)據(jù)集上達到了3.57%的錯誤率,同時參數(shù)量比VGG網(wǎng)絡低。2017年,GAO等提出了DenseNet[6],該網(wǎng)絡為全新的結(jié)構,網(wǎng)絡結(jié)構不復雜,卻非常有效,在CIFAR指標上優(yōu)于殘差網(wǎng)絡(ResNet)。可以說DenseNet吸收了ResNet最精華的部分,并做了更多創(chuàng)新的工作,使得網(wǎng)絡性能進一步提升。
卷積神經(jīng)網(wǎng)絡在圖像識別中的應用仍然存在一些不足:上述網(wǎng)絡中卷積層包含參數(shù)過多會導致計算量過大;隨著網(wǎng)絡層數(shù)的加深,其網(wǎng)絡結(jié)構變得更加復雜,模型結(jié)構有待優(yōu)化。本文針對存在的兩個問題展開研究,以期解決參數(shù)過大,簡化DenseNet網(wǎng)絡結(jié)構模型。
1?DenseNet網(wǎng)絡
DenseNet 是一種具有密集連接的卷積神經(jīng)網(wǎng)絡,該架構含有卷積層、池化層,增長率為4的稠密連接模塊,其中增長率是為了保持通道特征維度適中,以防過大。如圖1所示,DenseNet包含多個Dense Block模塊,其中Dense Block由BN + ReLU + Conv(1×1) + BN + ReLU + Conv(3×3)組成,Dense Block之間的層稱為transition layers,由BN + Conv(1×1) + Average Pooling(2×2)組成。由于輸出的feature map維度是一個很大的數(shù)目,所以在transition layer模塊中加入了1×1的卷積做降維,從而提升計算效率。
在DenseNet網(wǎng)絡中,任意兩層之間都有著密不可分的聯(lián)系,即網(wǎng)絡中任意一個下一層的輸入都是前面所有層輸出結(jié)果的疊加,而該層所得到的結(jié)果也將
和之前的輸出作為輸入傳輸給下一層,這樣依次向下傳輸。將之前所有層的特征輸出作為當前層的輸入,即x0,x1,…,xl-1為第1層到第 l-1 層的特征圖,通過級聯(lián)的連接方式經(jīng)過第 l 層,最后用復合函數(shù)Hl(*)得到輸出xl, 即
xl=Hl([x0,x1,…,xl-1]) ,(1)
Hl(*)定義為依次經(jīng)過3×3的卷積(Conv2d)、池化(pool)、批量歸一化(BN)以及非線性激活函數(shù)(Relu)四種運算的復合函數(shù)。
這種密集連接不會帶來冗余,每層網(wǎng)絡計算量的減少以及特征的重復利用使得DenseNet 比其他網(wǎng)絡效率更高。該方式能進一步提高模型的容量和參數(shù)利用率,在準確率上也比傳統(tǒng)的殘差網(wǎng)絡(ResNet)要高。
一般的L層卷積神經(jīng)網(wǎng)絡中,總共有L層連接,而DenseNet有L(L+1)2層連接(DenseNet采用級聯(lián)的連接方式)。DenseNet網(wǎng)絡結(jié)構沒有按照以往用加深網(wǎng)絡或者加寬網(wǎng)絡的方式入手,而是對特征序列進行調(diào)整;另一方面,該網(wǎng)絡每一層都有非常淺的特征圖或非常少的卷積核,因此簡化了網(wǎng)絡模型參數(shù),從而在某些領域中達到了較好的效果??傮w來說DenseNet有如下優(yōu)點:
(1)一定程度上解決梯度消失;
(2)加強特征傳播;
(3)更有效地利用特征;
(4)減少參數(shù)數(shù)量。
2?Inception V3網(wǎng)絡
Inception V3網(wǎng)絡引入了Factorization into small convolutions的思想,思想的主旨就是把一個較大的二維卷積拆分成兩個較小的一維卷積,一方面節(jié)約了大量參數(shù)加速運算,同時減輕了過擬合,除此之外該網(wǎng)絡還增加了一層非線性擴展模型表達能力。例如將7×7的卷積拆成1×7和7×1兩個卷積的并聯(lián)或者串聯(lián),比拆成3個3×3的卷積更節(jié)
約參數(shù),卷積效果更好,而且可以處理更細、更全面的特征空間,有效地提高了特征多樣性。
InceptionV3還優(yōu)化了Inception Module的結(jié)構,現(xiàn)有的Inception Module有35×35、17×17和8×8三種結(jié)構,像這3種結(jié)構的Inception Module一般都只能放在卷積層之后,該卷積層為普通的卷積層。Inception V3網(wǎng)絡的核心組件采用了非對稱卷積(N×N分解成N×1和1×N的疊加),該方法能減少很多計算量,如圖2所示。
圖2中假設最左側(cè)為5×5的卷積,可表示為2個3×3卷積,利用非對稱卷積的思想又可以表示為首先執(zhí)行一個3×1的卷積再執(zhí)行一個1×3的卷積,這種方法在成本上要比單個3×3的卷積降低33%。
3?改進的DenseNet網(wǎng)絡
受到Inception V3網(wǎng)絡結(jié)構的啟發(fā),結(jié)合非對稱卷積的特點,本文提出一種改進的DenseNet網(wǎng)絡,其網(wǎng)絡結(jié)構如表1所示。網(wǎng)絡首先在輸入圖像上做一次3×3步長為2的卷積,然后做3×3步長為2的最大池化操作,接著進入到第一個Dense Block,一共用到3個 Dense Block。在Dense Block中,該模塊的主要作用在于一直反復不停地做密集連接形式的運算,每一層都將利用密集連接運算使得上一層的特征圖與本層所產(chǎn)生的特征圖合并,最終Dense Block的最后一層將會得到模塊中所有特征圖的并集。
第一個Dense Block中包含了12個1×3、3×1的卷積操作,第12個子結(jié)構的輸入是前面11層的輸出結(jié)果,每層輸出的通道數(shù)是12(growth rate),其中為了避免網(wǎng)絡增長過于迅速,并優(yōu)化參數(shù)效率,擬定增長率為一個較小的整數(shù),本文增長率設置為12。原始DenseNet網(wǎng)絡中,在每個3×3卷積層之后都會接上一個1×1卷積層,以減少輸入到卷積層中特征圖的數(shù)量,提高網(wǎng)絡運行速率,隨之計算效率也相應提高,經(jīng)對比發(fā)現(xiàn)這個設計對DenseNet網(wǎng)絡非常有效,所以將一維卷積層保留到本文的網(wǎng)絡中。
每兩個Dense Block中間都包含了Transition Layer。在Transition Layer中,參數(shù)reduction(取值為0~1)代表輸出縮小為原來的多少倍,本文reduction設置為0.5。Dense Block模塊緊接著經(jīng)過之后的Transition Layer,即一個 1×1 卷積、2×2 的平均池化以及批量歸一化(BN),下一個的模塊結(jié)構和之前的相類似,唯一不一樣在于輸出的特征圖尺寸越來越小,網(wǎng)絡的深度在逐漸加深。網(wǎng)絡的最后一層為分離10類的 Softmax 層,采用全連接結(jié)構。
網(wǎng)絡結(jié)構代碼由Keras框架實現(xiàn)。代碼實現(xiàn)用1×3和3×1的卷積來代替所有Dense Block中3×3的卷積,達到節(jié)約參數(shù)加速運算,以及減輕過擬合的目的。
4?實驗結(jié)果與分析
為驗證改進后DenseNet網(wǎng)絡的性能,本文在CIFAR-10數(shù)據(jù)集上測試識別率和損失函數(shù),并與經(jīng)典的DenseNet網(wǎng)絡進行比較分析。
4.1?數(shù)據(jù)集
本次實驗的數(shù)據(jù)集為CIFAR-10數(shù)據(jù)集,該數(shù)據(jù)集包含10個類(飛機,汽車,鳥,貓,鹿,狗,青蛙,馬,船,卡車)共60 000張32×32的彩色圖像,每個類別分別有6 000張不同圖像。本文將50 000張圖片作為訓練圖像,10 000張作為測試圖像來進行實驗。
4.2?實驗設置
實驗基于Keras框架。訓練使用計算機:Intel Core i7處理器,內(nèi)存為8 GB。模型的初始學習率設為 0.000 1,批量的大小為32(batch size),采用的優(yōu)化器是Adam算法,迭代的次數(shù)為40次(epoch),其中,Adam方法能夠在訓練的過程中自適應地調(diào)整各個參數(shù)的學習率,非常適合于高維度和大數(shù)據(jù)集的非凸優(yōu)化[10]。
4.3?實驗結(jié)果及分析
實驗中使用3個Dense Block,每個Dense Block內(nèi)部有兩個卷積層,其卷積層分別為1×3和3×1的卷積層,同時因為Dense Block后接1×1的卷積層,參數(shù)也得到精簡。實驗結(jié)果見表2。
識別方法??識別率/%參數(shù)量損失函數(shù)
經(jīng)典DenseNet ̄4080.621 003 5460.84
改進DenseNet ̄4086.16433 3060.71
從表2可知,在實驗數(shù)據(jù)不變的條件下,較為經(jīng)典的DenseNet ̄40網(wǎng)絡模型的最高識別率只有8062% ,改進后的DenseNet ̄40網(wǎng)絡模型的最高
識別率為86.16%。實驗結(jié)果表明改進后的DenseNet ̄40網(wǎng)絡模型識別率高于經(jīng)典的DenseNet ̄40網(wǎng)絡模型,而且網(wǎng)絡收斂速度也比經(jīng)典的快。另一方面,參數(shù)量從原來的1 003 546降低到現(xiàn)在的433 306,極大地縮短了程序運行時間。
本次實驗結(jié)果在總卷積層數(shù)保持不變的情況下,通過對Dense Block內(nèi)部的結(jié)構進行調(diào)整,觀測識別率變化程度。
經(jīng)典的DenseNet ̄40網(wǎng)絡模型與改進后的DenseNet ̄40網(wǎng)絡模型對訓練集與測試集的識別精度如圖3所示。由圖可知:經(jīng)過40次網(wǎng)絡迭代,改進后的DenseNet ̄40網(wǎng)絡模型與經(jīng)典的DenseNet ̄40網(wǎng)絡模型都逐漸趨于收斂、平穩(wěn),改進后的網(wǎng)絡模型較經(jīng)典的收斂更加迅速;當?shù)?0次時,本文提出的網(wǎng)絡模型識別準確率較原網(wǎng)絡高出9.60%;體現(xiàn)改進的DenseNet ̄40網(wǎng)絡模型在收斂速度及識別率方面的優(yōu)越性。
經(jīng)典的DenseNet ̄40網(wǎng)絡模型與改進后的DenseNet ̄40網(wǎng)絡模型的訓練與測試過程中損失函數(shù)曲線如圖4所示。可以看出,隨著網(wǎng)絡迭代次數(shù)的增加,損失函數(shù)值也趨于平穩(wěn),當?shù)?0次時,改進后的DenseNet ̄40網(wǎng)絡模型損失函數(shù)值較經(jīng)典的DenseNet ̄40網(wǎng)絡模型損失函數(shù)值降低了022,與預測值更加接近,網(wǎng)絡模型擬合度也相應的提高。
5?結(jié)論
本文利用Inception V3的核心思想之一(非對稱卷積)對DenseNet網(wǎng)絡模型中Dense Block模塊進行重新構建優(yōu)化,對改進后的DenseNet網(wǎng)絡模型進行訓練與測試,經(jīng)實驗結(jié)果分析,改進的
DenseNet網(wǎng)絡結(jié)構效果滿足實驗之前預期目標:其減少了隨網(wǎng)絡層數(shù)的增加而出現(xiàn)參數(shù)過多的問題,即在迭代次數(shù)不斷增加的條件下,收斂速度、識別率都有明顯的提高,結(jié)構得到了優(yōu)化,網(wǎng)絡模型的損失函數(shù)值也在不斷降低,有較好的泛化能力。但是本次實驗也有些許缺點,在網(wǎng)絡設置的深度上并沒有達到很深的層次,下一步將把該改進后的網(wǎng)絡應運到更深層的結(jié)構上,而且對不同的數(shù)據(jù)集進行驗證,觀察實驗效果。
參考文獻:
[1]LE C,BOSER B,DENKER J S,et al. Backpropagation applied to handwritten zip code recognition [J]. Neural Computation,1989,1(4):541-551.
[2]ALEX K,ILYA S,GEOFFREY E H. ImageNet Classification with Deep Convolutional Neural Networks[J]. Communications of the ACM, 2017,6(6):84-90.
[3]SZEGEDY C,LIU W,YANG Q J,et al. Going Deeper with Convolutions[C]//Conference on Computer Vision and Pattern Recognition,USA:IEEE, 2014:7-12.
[4]IMONYAN K,ZISSERMAN A. Very Deep Convolutional Networks for Large ̄Scale Image Recognition[J].Computer Science,2014,75:23-36.
[5]HE K M,ZHANG X G,REN S Q. Deep Residual Learning for Image Recognition[C]//Computer Vision and Pattern Recognition,USA:IEEE, 2016:770-778.
[6]GAO H,ZHANG L. Densely Connected Convolutional Networks[C]// Computer Vision and Pattern Recognition,USA:IEEE, ?2017:1-28.
[7]張藝瑋,趙一嘉,王馨悅,等. 結(jié)合密集神經(jīng)網(wǎng)絡與長短時記憶模型的中文識別[J]. 計算機系統(tǒng)應用,2018,27(11):35-41.
[8]XU H,SU F. A robust hierarchical detection method for scene text based on convolutional neural networks. Multimedia and Expo[C]//International Conference on Electrical Engineering,USA:IEEE, 2015:1-6.
[9]常亮,鄧小明,周明全. 圖像理解中的卷積神經(jīng)網(wǎng)絡[J].自動化學報,2016,42(9):1300-1312.
[10]HE K,ZHANG X,REN S,et al. Identity Mappings in Deep Residual Networks[J].European Conference on Computer Vision,Springer,2016,32(6):630-645.
[11]彭淑敏, 王軍寧. 基于神經(jīng)網(wǎng)絡的圖像識別方法[J].電子科技雜志, 2005,32(1):39-42.
(責任編輯:周曉南)
Research on Image Recognition Method Based on DenseNet
GAO Jianling*,WANG Junsheng,WANG Xu
(College of Big Data and Information Engineering, Guizhou University,Guiyang 550025, China)
Abstract:
With the deepening of the layers of neural network in deep learning, the training network becomes more and more difficult, and the existing shallower network can not significantly improve the recognition effect of the network. In order to improve the network recognition effect and reduce the parameters in the case of the original network, an improved DenseNet network model was proposed. Based on the idea of Inception V 3, the 3×3 convolution contained in Dense Block layer in DenseNet network was decomposed into 3×1 and 1×3 convolutions by using asymmetric convolution, which simplifies the network structure model.The network was trained before and after the improvement on the dataset. The experimental results show that compared with the classical enseNet network model, the improved network model can improve the accuracy of image recognition, reduce the parameters and shorten the running time effectively.
Key words:
DenseNet network; image recognition; deep learning; convolutional neural network