宋佳霏 宋欣霞 楊賀群 黃若琳
摘 要: 目前用于圖像識(shí)別的大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)(CNN)都使用相同的原理構(gòu)建,即:卷積層、池化層、全連接層。文中使用密集卷積神經(jīng)網(wǎng)絡(luò)重新評(píng)估了用于圖像識(shí)別的所有組件,并對(duì)池化層不存在的必要性提出了質(zhì)疑。經(jīng)過實(shí)驗(yàn),分析發(fā)現(xiàn)池化層可以由步幅增加的卷積層代替,卻不會(huì)降低圖像識(shí)別的準(zhǔn)確率。研究中則在DenseNets上訓(xùn)練提出的由卷積層替代池化層的方法,組成新的卷積神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu),并在多個(gè)圖像分類的數(shù)據(jù)集(CIFAR-10,SVHN)上產(chǎn)生了先進(jìn)的性能。本文提出了基于密集卷積神經(jīng)網(wǎng)絡(luò)(DenseNets)的全卷積池化算法,提高了圖像分類的準(zhǔn)確率。最后,在多個(gè)經(jīng)典數(shù)據(jù)集上進(jìn)行比較,實(shí)驗(yàn)結(jié)果驗(yàn)證了全卷積池化算法的高效性。
關(guān)鍵詞: 全卷積; 池化算法; DenseNets
文章編號(hào): 2095-2163(2021)03-0066-04 中圖分類號(hào):TP391.41 文獻(xiàn)標(biāo)志碼:A
【Abstract】Most convolutional neural networks (CNN) currently used for image recognition are constructed using the same principles: convolutional layer, pooling layer, and fully connected layer. The paper re-evaluates all the components used for image recognition using dense convolutional neural networks and questions the need for the pooling layer to not exist. After experiments, it is found that the pooling layer can be replaced by a convolutional layer with an increased stride, but it will not reduce the accuracy of image recognition. The research also trains the proposed convolutional layer instead of the pooling layer on DenseNets to form a new convolutional neural network architecture, and produces advanced performance on multiple image classification data sets (CIFAR-10, SVHN). This paper proposes a fully convolutional pooling algorithm based on dense convolutional neural networks (DenseNets), which improves the accuracy of image classification. Finally, compared on multiple classic data sets, the experimental results verify the efficiency of the fully convolutional pooling algorithm.
【Key words】 fully convolutional; pooling algorithm; DenseNets
0 引 言
目前,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)在計(jì)算機(jī)視覺領(lǐng)域占據(jù)了主導(dǎo)地位,因其在許多應(yīng)用中都具有出色的性能,例如圖像分類、物體檢測(cè)和姿態(tài)估計(jì)。從最初問世以來,對(duì)網(wǎng)絡(luò)體系結(jié)構(gòu)的探索一直是卷積神經(jīng)網(wǎng)絡(luò)模型研究的一部分。為了獲得更高的圖像分類精度,CNN的網(wǎng)絡(luò)架構(gòu)變得越來越深,越來越復(fù)雜[1-5]。在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的文獻(xiàn)中,F(xiàn)ahlman等人[6]已經(jīng)研究了類似于密集網(wǎng)絡(luò)結(jié)構(gòu)的級(jí)聯(lián)結(jié)構(gòu)。研究中是通過逐層方式訓(xùn)練完全連接的多層感知器。如今,用于進(jìn)行圖像分類的卷積神經(jīng)網(wǎng)絡(luò),組成結(jié)構(gòu)幾乎是相同的,包括卷積層、池化層以及全連接層。通常在卷積層、池化層、全連接層之間都會(huì)使用激活函數(shù)。此后在網(wǎng)絡(luò)的訓(xùn)練期間進(jìn)行層數(shù)的丟棄,從而實(shí)現(xiàn)網(wǎng)絡(luò)參數(shù)的優(yōu)化。在2014年ImageNet挑戰(zhàn)賽中,頂級(jí)參賽作品[7](Simonyan和Zisserman提出的)通過在池化層之間引入多個(gè)卷積或者Szegedy等人[1]提出的通過在每一個(gè)網(wǎng)絡(luò)層中構(gòu)建多個(gè)模塊的混合卷積池化層。但是分析后卻發(fā)現(xiàn)所有新增加的擴(kuò)展層在不同的網(wǎng)絡(luò)體系結(jié)構(gòu)中都有自己的參數(shù)和訓(xùn)練過程,因此在進(jìn)行圖像分類的任務(wù)中,需要不斷實(shí)驗(yàn)?zāi)軐?shí)現(xiàn)最先進(jìn)的分類效果所實(shí)際需要哪些組件。根據(jù)以往的經(jīng)驗(yàn),可以先從最簡(jiǎn)單的卷積層開始,即整個(gè)網(wǎng)絡(luò)的池化層完全被卷積層替代,可以使用步幅長(zhǎng)度為2,以此來降低圖片的維度。由于在實(shí)現(xiàn)降低維度的過程中,是通過步幅為2的卷積層而不是池化層實(shí)現(xiàn)的,有研究學(xué)者Estrach等人[8]發(fā)現(xiàn)這也適用于神經(jīng)網(wǎng)絡(luò)的可逆性問題研究。
1 密集卷積神經(jīng)網(wǎng)絡(luò)模型
1.1 DenseNets模型結(jié)構(gòu)原理
DenseNets采用的是密集連接機(jī)制,即互相連接所有的層。每一層都會(huì)與前面所有層在channel維度上連接在一起,該層作為下一層的輸入,實(shí)現(xiàn)了特征重用的功能。DenseNets主要包括4個(gè)創(chuàng)新點(diǎn),分別是:減少了梯度消失的問題;加強(qiáng)了圖像特征的傳遞;更有效地利用了圖像;一定程度上減少了參數(shù)數(shù)量。DenseNets網(wǎng)絡(luò)連接方式如圖1所示。
在DenseNets中會(huì)連接前面所有層作為輸入:DenseNets網(wǎng)絡(luò)中,X0,X1,...,Xl-1表示將0~l-1層的輸出圖像特征圖做通道的合并,就像Inception那樣。例如由圖1可看到,第X3層,是由X0,X1,X2的輸出作為輸入。就是在圖1中看到的黃色特征圖的輸入是由紅色、綠色、紫色特征圖的輸出組成。即前面所有層的輸出是這一層的輸入。也可以認(rèn)為每一層都直接連接輸入層和損失函數(shù),所以可以減輕梯度消失現(xiàn)象。由此可知,在DenseNets中,特征傳遞方式是直接將前面所有層的特征concact后傳到下一層,Hl·代表非線性轉(zhuǎn)化函數(shù),是一個(gè)組合操作,采用的是BN+ReLU+3*3Conv結(jié)構(gòu)。如式(1)所示:
由于DenseNets采用的密集連接方式,所以需要圖像特征圖大小保持一致。所以在DenseNets網(wǎng)絡(luò)結(jié)構(gòu)中,使用Dense Block塊和Transition(Convolution、Pooling)結(jié)構(gòu)。Dense Block塊是包含很多層的模塊,每一個(gè)層需要圖像特征圖大小相同,層與層之間采用密集連接的方式。這樣就可以實(shí)現(xiàn)在每個(gè)Dense Block塊內(nèi)部的圖像特征圖大小統(tǒng)一,在進(jìn)行concatenation操作時(shí)就不會(huì)出現(xiàn)特征圖大小不一致的問題。Transition是位于2個(gè)不同Dense Blocks塊之間,通過Pooling操作使圖像的特征圖大小降低。
1.2 池化模型理論
1.2.1 最大值池化算法
最經(jīng)典的池化方法之一是最大值池化。該方法是將原始的輸入數(shù)據(jù),進(jìn)行采樣分塊實(shí)現(xiàn)區(qū)域選擇,選取每個(gè)區(qū)域位置的最大值。最大值池化的缺點(diǎn)是無法保留圖片的更多背景信息。最大值池化算法原理可寫為如下形式:
1.2.2 平均值池化算法
平均值池化也是先經(jīng)過采樣分塊后,再進(jìn)行的是計(jì)算池化域中所有元素的平均值輸入到下一層。平均值池化并不會(huì)只考慮最大的特征,而是考慮全局的元素值。所以,平均值池化后將不會(huì)保留特征圖的最大特征信息。平均值池化算法公式可寫為:
但需要指出的是,如果特征圖中有很多零元素,則特征圖的特性將大大降低。
2 全卷積池化算法
本文在實(shí)驗(yàn)中用步長(zhǎng)為2的標(biāo)準(zhǔn)卷積層替換了DenseNets網(wǎng)絡(luò)中存在的池化層。為了驗(yàn)證此種方案替換的可行性,這里涉及的用于定義CNNs中卷積層和池化層操作的數(shù)學(xué)公式為:
其中,f表示卷積神經(jīng)網(wǎng)絡(luò)中某一層產(chǎn)生的特征圖像。該特征圖可以將其描述尺寸為W×H×N的3維數(shù)組,而W表示寬度,H表示高度,N表示通道數(shù);k表示池化域的大小,k/2表示池化域一半的長(zhǎng)度;步幅長(zhǎng)度為r;gh,w,i,j,u=r·i+h,r·j+w,u是從s的位置映射到f的步長(zhǎng)映射關(guān)系;p是階數(shù)范式。如果r>k,則池化區(qū)域不會(huì)重疊;但是,當(dāng)前的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)通常包括k=3和r=2的池化重疊區(qū)域。
其實(shí),池化層可以看作是按特征圖大小進(jìn)行卷積,其中將激活函數(shù)替換為p范式。因此,在這里有一個(gè)疑問,為什么要在網(wǎng)絡(luò)層中引入這種特殊的層。也就是說池化層為什么可以幫助CNNs更好地提取特征。本次研究給出3種解釋:p范式表示的CNNs更加具有不變性;通過池化操作后的空間維數(shù)會(huì)減少,在較高層中網(wǎng)絡(luò)有可能會(huì)輸入較大的圖像;池化操作的特征提取功能可以使網(wǎng)絡(luò)優(yōu)化變得更加容易。
研究中先假設(shè)只有通過池化執(zhí)行的降維操作對(duì)CNNs有著至關(guān)重要的作用。現(xiàn)在就可以用步長(zhǎng)大于1的普通卷積層替換池化層。比如說對(duì)于k=3且r=2的池化層,可將其替換為具有相應(yīng)步幅和卷積核大小的卷積層,輸出通道數(shù)等于輸入通道數(shù)。其實(shí)刪除池化層的研究已然有了一些工作成果,LeCun等人[9]提出將池化層稱為子采樣層,這就指出后續(xù)研究可以使用不同的操作進(jìn)行子采樣。
3 實(shí)驗(yàn)分析
3.1 實(shí)驗(yàn)環(huán)境
在本次研究中,所有的實(shí)驗(yàn)都是在內(nèi)存大小為32 G RAM,操作系統(tǒng)是Ubuntu16.04 LTS的計(jì)算機(jī)上運(yùn)行。使用開源的機(jī)器視覺庫(kù)OpenCV,深度學(xué)習(xí)框架為TensorFlow??晒_獲得的cuda-convnet[10]軟件包用于使用單個(gè)NVIDIA GeForce GTX 1080TI GPU進(jìn)行實(shí)驗(yàn),另外CPU版本為Intel(R) Core(TM) i7-8700 CPU@3.20 GHz 3.19 GHz。以上算法均采用Python語(yǔ)言實(shí)現(xiàn)。
3.2 數(shù)據(jù)集
本文所使用的數(shù)據(jù)CIFAR-10數(shù)據(jù)集包括10個(gè)類別,是由32*32像素的自然彩色圖像組成的集合。研究中遵循CIFAR-10的通用實(shí)驗(yàn)協(xié)議,即選擇50 000張圖像進(jìn)行訓(xùn)練,選擇10 000張圖像進(jìn)行測(cè)試。實(shí)驗(yàn)中網(wǎng)絡(luò)的參數(shù)是通過10 000張?jiān)隍?yàn)證集上的錯(cuò)誤率來選擇的。過程中仍然遵循標(biāo)準(zhǔn)Nesterov Adam優(yōu)化器,其momentum為0.9,mini-batch(最小批量)為128。
街景門牌號(hào)碼(SVHN)數(shù)據(jù)集,包含了32*32彩色數(shù)字圖像。訓(xùn)練集中有73 257張圖像,測(cè)試集中有26 032張圖像,驗(yàn)證集有531 131張圖像。仿真時(shí)是按照3:1的比例劃分訓(xùn)練集和測(cè)試集,同時(shí)使用momentum為0.9的動(dòng)量和0.000 1的權(quán)重衰減來訓(xùn)練網(wǎng)絡(luò)。最小批量大小設(shè)置為128,初始學(xué)習(xí)率設(shè)置為0.001。同樣,訓(xùn)練100個(gè)epochs,每個(gè)epoch有20次迭代。
3.3 實(shí)驗(yàn)結(jié)果及分析
為了驗(yàn)證本文提出的全卷積替代池化的算法對(duì)圖像分類的效果,文中是以DenseNets網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ),比較了3組使用不同池化方法的實(shí)驗(yàn)。與最大值池化和平均值池化進(jìn)行了比較,以此證明網(wǎng)絡(luò)性能的提高。實(shí)驗(yàn)在2個(gè)基準(zhǔn)圖像分類數(shù)據(jù)集上評(píng)估了性能,包括CIFAR-10和SVHN數(shù)據(jù)集。
在CIFAR-10數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果見表1,在DenseNets中針對(duì)all-conv pooling操作后100個(gè)epochs后圖像分類在訓(xùn)練集和測(cè)試集上的準(zhǔn)確率的變化趨勢(shì)見圖2。從表1和圖2中可以看出,DenseNets中所提出的all-conv pooling在測(cè)試集上的準(zhǔn)確性分別為90.48%。所提出的all-conv pooling在測(cè)試集上的準(zhǔn)確率明顯高于DenseNets中平均值池化和最大值池化的準(zhǔn)確率。這也證明了所提出的all-conv pooling優(yōu)于DenseNets中現(xiàn)有的最先進(jìn)的最大值池化和平均值池化的結(jié)果。另外,還可以在圖2中看到,隨著DenseNets中的3種池化方法在CIFAR-10數(shù)據(jù)集上訓(xùn)練的epochs增加,測(cè)試集上的準(zhǔn)確率和訓(xùn)練集上的準(zhǔn)確率的總體趨勢(shì)是越來越好。研究中提出的all-conv pooling是具有最高的圖像分類準(zhǔn)確率。這表明所提出的all-conv pooling優(yōu)于DenseNets中的其他2種經(jīng)典池化方法,即:平均值池化和最大值池化,并且可以解決過擬合問題。
在SVHN數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果見表2,在實(shí)驗(yàn)過程中同樣訓(xùn)練100個(gè)epochs。圖3展示了在測(cè)試集上的準(zhǔn)確率和訓(xùn)練集上的準(zhǔn)確率。由圖3可以看出,在測(cè)試集上DenseNets中all-conv pooling的準(zhǔn)確率為94.70%。具有all-conv pooling的DenseNets超過了傳統(tǒng)的平均值池化和最大值池化,獲得當(dāng)前的最佳結(jié)果。另外,由圖3中也可以看到,在DenseNets中,對(duì)于3種池化方法,隨著SVHN數(shù)據(jù)集上訓(xùn)練輪數(shù)的增加,測(cè)試集上的準(zhǔn)確率和訓(xùn)練集上的準(zhǔn)確率的總體趨勢(shì)會(huì)越來越好。all-conv pooling具有最高的測(cè)試準(zhǔn)確率。研究所提出的all-conv pooling通過比較得知,證明了所提出的all-conv pooling的優(yōu)越性。
4 結(jié)束語(yǔ)
針對(duì)卷積神經(jīng)網(wǎng)絡(luò)池化層中經(jīng)典的最大值池化和平均值池化無法更詳細(xì)地提取圖像特征圖的有效信息。本文對(duì)DenseNets網(wǎng)絡(luò)結(jié)構(gòu)的池化層進(jìn)行了優(yōu)化,提出了新的卷積層替代池化層的方法從而學(xué)習(xí)到原圖像特征圖中更多的有用特征。本文利用CIFAR-10和SVHN數(shù)據(jù)集對(duì)all-conv pooling方法進(jìn)行測(cè)試,2組數(shù)據(jù)集均不做數(shù)據(jù)增強(qiáng)處理,并根據(jù)同一評(píng)價(jià)指標(biāo)對(duì)比分析了相應(yīng)的圖像結(jié)果,實(shí)驗(yàn)結(jié)果表明,all-conv pooling方法能提高圖像分類的準(zhǔn)確度。
參考文獻(xiàn)
[1] ?SZEGEDY C, LIU Wei, JIA Yangqing, et al. Going deeper with convolutions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Boston, MASSACHUSETTS: IEEE,2015:1-9.
[2] SIMONYAN ?K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[3] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA:IEEE, 2016:770-778.
[4] XIE S, GIRSHICK R, DOLLAR P, et al. Aggregated residual transformations for deep neural networks[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu, Hawaii:IEEE, 2017:5987-5995.
[5] HOWARD A G, ZHU Menglong, CHEN Bo, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017.
[6] FAHLMAN S E, LEBIERE C. The cascade-correlation learning architecture[M]// TOURETZKY D S. Advances in Neural Information Processing Systems2(NIPS). Los Altos, CA:Morgan Kaufmann, 1990:524-532.
[7] SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[8] JOAN B, ARTHUR S, LECUN Y. Signal recovery from pooling representations[C]//1st International Conference on Machine Learning(ICML 2014). Beijing, China:International Machine Learning Society(IMLS), 2014:1585-1598.
[9] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998,86(11):2278-2324.
[10]KRIZHEVSKY A. cuda-convnet[EB/OL]. http://code.google.com/p/cuda-convnet/.