倪 黎,鄒衛(wèi)軍
(南京理工大學(xué)自動(dòng)化學(xué)院, 南京210094)
基于大數(shù)據(jù)的深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的新領(lǐng)域,也是其發(fā)展的趨勢(shì)所在。深度學(xué)習(xí)的基礎(chǔ)結(jié)構(gòu)是深度神經(jīng)網(wǎng)絡(luò),多層非線性運(yùn)算單元組成深度學(xué)習(xí)的網(wǎng)絡(luò)架構(gòu),這些單元類似于生物的神經(jīng)細(xì)胞,同時(shí)具有自適應(yīng)的特點(diǎn)。
以深度學(xué)習(xí)理論為基礎(chǔ)的Inception是ILSVRC 2014比賽的冠軍[1],網(wǎng)絡(luò)結(jié)構(gòu)的靈感來源于NIN[2],由Inception v1逐步發(fā)展到Icpetion v4[3-5]。該網(wǎng)絡(luò)從擴(kuò)展網(wǎng)絡(luò)的寬度入手,組合了幾種不同的卷積結(jié)構(gòu),在保證層數(shù)的同時(shí)大幅減小了參數(shù)量,解決了參數(shù)冗余帶來的過擬合等問題。
Xception[6]是Inception的極端化體現(xiàn),不同于常規(guī)的卷積操作,Xception使用深度可分離卷積(Depthwise Separable Convolutions),將通道間的相關(guān)性和空間相關(guān)性分開考慮,在不增加參數(shù)量的情況下取得了非常好的效果。由于Xception的優(yōu)秀表現(xiàn),使其在眾多領(lǐng)域得到應(yīng)用。文獻(xiàn)[7]用Xception模塊改進(jìn)了U-Net體系結(jié)構(gòu),從而提取了遙感圖像中的建筑物。文獻(xiàn)[8]則比較了Xception等網(wǎng)絡(luò)進(jìn)行煙霧檢測(cè)的能力。
SEnet(Squeeze and Excitation Networks)[9]是Imagenet 2017圖像分類任務(wù)的第一名,其特點(diǎn)在于它考慮的不是從空間維度上優(yōu)化神經(jīng)網(wǎng)絡(luò),而是著眼于特征通道之間的關(guān)系。SEnet中的SE模塊能夠增加有用特征的影響度,弱化無用特征所占的比重,從而提升網(wǎng)絡(luò)性能。通過與Xception網(wǎng)絡(luò)的結(jié)合,能夠更進(jìn)一步提升Xception的準(zhǔn)確度。
本文將SE模塊嵌入Xception中,通過實(shí)驗(yàn)證明,SE模塊能夠有效地提升Xception的精確度。再將SE-Xception應(yīng)用到動(dòng)物種類識(shí)別中,取得了良好的效果。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)[10]主要由特征提取層和特征映射層構(gòu)成,能夠自主提取圖像特征,可以直接使用原始圖像,避免了對(duì)輸入圖像的復(fù)雜預(yù)處理過程。
卷積神經(jīng)網(wǎng)絡(luò)由一系列卷積層、激活層、池化層及全連接層構(gòu)成。卷積過程提取輸入信號(hào)的不同特征,每個(gè)卷積核提取整個(gè)特征圖上的某個(gè)單一特征,多核卷積使得特征被充分提取,提取到的特征再作為輸入傳入下一層,這些特征由低級(jí)到高級(jí)層層遞進(jìn)。因此,深層的網(wǎng)絡(luò)結(jié)構(gòu)使學(xué)習(xí)的特征更加全局化。
為了解決參數(shù)過多的問題,Inception網(wǎng)絡(luò)中的Inception模塊使用了多分支結(jié)構(gòu)增加網(wǎng)絡(luò)寬度,在分支中加入1×1卷積來減少參與運(yùn)算的通道數(shù),并且用全局平均池化代替了全連接層。
受到Inception模塊的啟發(fā),Xception將前者的思路極端化,同時(shí)引入了深度可分離卷積。經(jīng)過極限化對(duì)比分析,使用深度可分離卷積代替Inception模塊,將卷積操作在通道上和空間上完全分離開。首先進(jìn)行通道上的卷積以獲得特征圖,再使用1×1的卷積核將這些特征圖融合起來。一個(gè)簡化的Xception模塊如圖1所示。
圖1 簡化的Xception模塊Fig.1 Simplified Xception module
Xception包含36個(gè)卷積層、14個(gè)模塊,每個(gè)模塊中包含若干個(gè)深度可分離卷積,后接池化層,并且?guī)缀醵疾捎昧薘esnet中的殘差連接[11]。除殘差連接中的1×1卷積外,使用的卷積核全部為3×3大小。最后進(jìn)行全局平均池化,經(jīng)過全連接層輸出結(jié)果。
SE模塊的核心是壓縮(Squeeze)和激勵(lì)(Excitation)。在卷積操作得到具有多個(gè)通道的特征之后,使用SE模塊可以重新標(biāo)定每個(gè)特征通道的權(quán)重。SE模塊分為3個(gè)步驟,分別是壓縮、激勵(lì)和重定權(quán)重(Reweight),原理圖如圖2所示。
壓縮操作使用全局平均池化(Global Average Pooling)將每個(gè)特征通道都?jí)嚎s成一個(gè)實(shí)數(shù),這樣就將感受野擴(kuò)展到全局范圍。該實(shí)數(shù)由如下公式得到
式(1)中,u為通過卷積后得到的特征圖,C為u的通道數(shù),W×H為u的空間維度。
圖2 SE模塊原理圖Fig.2 Schematic diagram of SE module
接著,激勵(lì)操作捕獲壓縮后的實(shí)數(shù)列信息,使用兩個(gè)全連接(FC)層增加模塊的非線性。先經(jīng)過第一個(gè)全連接層降維,再通過ReLU激活,然后經(jīng)過第二個(gè)全連接層升維,最后經(jīng)過sigmoid激活函數(shù),整個(gè)過程如下
式(2)中,δ為非線性激活函數(shù)ReLU,W1和W2分別為兩個(gè)FC層的參數(shù),σ為sigmoid函數(shù)。
最后重定權(quán)重,用原特征逐通道乘以激勵(lì)操作獲得的通道重要度系數(shù),得到重新標(biāo)定的特征
(1)網(wǎng)絡(luò)結(jié)構(gòu)
為了減少參數(shù)增長,僅在Xception的Middle flow部分嵌入SE模塊,嵌入方式如圖3所示。
圖3 SE模塊嵌入Middle flow的示意圖Fig.3 Schematic diagram of SE module embedding Middle flow
輸入的訓(xùn)練圖像先經(jīng)過若干個(gè)深度可分離卷積得到特征圖,再經(jīng)過SE模塊、重定通道的重要程度系數(shù),從而使得有效特征的影響力得到增強(qiáng),無關(guān)特征的影響力被削弱,最后加上殘差。文獻(xiàn)[9]通過對(duì)比實(shí)驗(yàn)比較了降維率r的不同取值對(duì)實(shí)驗(yàn)結(jié)果的影響,兼顧錯(cuò)誤率和參數(shù)量,本實(shí)驗(yàn)SE模塊中的參數(shù)r選取16。由于沒有在特征通道數(shù)較多的層中嵌入SE模塊,因此模型的復(fù)雜度和計(jì)算量僅有微量增加。
(2)數(shù)據(jù)集
驗(yàn)證實(shí)驗(yàn)在Oxford-IIIT Pet[12]數(shù)據(jù)集和CUB_200_2011[13]數(shù)據(jù)集上進(jìn)行。
Oxford-IIIT Pet數(shù)據(jù)集包含了37個(gè)種類的寵物,每個(gè)種類有大約200張圖片,一共7349張圖片。CUB_200_2011是一個(gè)鳥類數(shù)據(jù)集,有200個(gè)種類,11788張圖片。
將上述每個(gè)數(shù)據(jù)集所有數(shù)據(jù)的80%劃分為訓(xùn)練集,20%劃分為測(cè)試集。
(3)數(shù)據(jù)預(yù)處理
為了適應(yīng)網(wǎng)絡(luò)所需的輸入數(shù)據(jù)大小,使用二次線性插值法將原始圖片尺寸統(tǒng)一放縮為299×299。再進(jìn)行零均值化處理,即減去同一個(gè)數(shù)據(jù)集中所有圖片的均值,使得處理后的均值為零,這樣可以加快反向傳播過程中模型的收斂。再除以所有圖片的標(biāo)準(zhǔn)差,從而使特征標(biāo)準(zhǔn)化。
(4)實(shí)驗(yàn)過程
將原始的jpg格式數(shù)據(jù)集轉(zhuǎn)換為TFRecords格式(TFRecords是TensorFlow的一種標(biāo)準(zhǔn)二進(jìn)制數(shù)據(jù)格式),能夠使圖片讀取更加高效。使用shuffle batch隨機(jī)打亂批量讀取,讀取的圖片數(shù)據(jù)輸入網(wǎng)絡(luò),經(jīng)過一系列層,最后輸出稀疏表示的分類結(jié)果。
損失函數(shù)使用Softmax交叉熵?fù)p失
式(4)中,k為預(yù)測(cè)的類別數(shù),zj為第j個(gè)類別的預(yù)測(cè)輸出,N為一個(gè)訓(xùn)練批次的大小。
優(yōu)化器為Adam[14],Adam能夠在消耗更少資源的情況下使模型更快收斂。初始學(xué)習(xí)率設(shè)置為0.0001,使用指數(shù)衰減法,學(xué)習(xí)率更新公式如下
式(5)中,lr為初始學(xué)習(xí)率,β1為Adam優(yōu)化算法中梯度的一階矩估計(jì)的衰減系數(shù),β2為二階矩估計(jì)的衰減系數(shù),t為步數(shù)。
使用的電腦配置為16G內(nèi)存、i7-8700KCPU、gtx1080ti顯卡。
實(shí)驗(yàn)在TensorFlow上進(jìn)行,TensorFlow是谷歌2015年開源的基于數(shù)據(jù)流圖的深度學(xué)習(xí)框架,能夠快速地搭建網(wǎng)絡(luò)。該框架支持分布式計(jì)算,有利于大數(shù)據(jù)集和大型網(wǎng)絡(luò)的訓(xùn)練,高效靈活,在國內(nèi)外得到廣泛應(yīng)用。TensorFlow可以在一個(gè)或多個(gè)CPU/GPU上運(yùn)行,除計(jì)算機(jī)外,它還可以應(yīng)用于移動(dòng)設(shè)備等多種計(jì)算平臺(tái)上。TensorFlow提供有十分便捷的可視化工具TensorBoard,能夠以圖形和曲線的形式展現(xiàn)數(shù)據(jù),使網(wǎng)絡(luò)結(jié)構(gòu)和變量更加直觀。
在上述條件下分別訓(xùn)練30000步、50000步,訓(xùn)練集的精確度曲線如圖4、圖5所示。
圖 4 SE-Xception與Xception在Oxford-IIIT Pet數(shù)據(jù)集上的實(shí)驗(yàn)對(duì)比Fig.4 Experiment comparison between SE-Xception and Xception on Oxford-IIIT Pet dataset
由實(shí)驗(yàn)結(jié)果可知,隨著訓(xùn)練步數(shù)的增加,模型通過自主學(xué)習(xí)的方式調(diào)整權(quán)值和偏差,從而降低了訓(xùn)練誤差,使得精確度逐步升高。在不同的數(shù)據(jù)集上,使用原始的Xception 模塊進(jìn)行訓(xùn)練,獲得上升的精確度曲線。融合SE模塊后,SEXception網(wǎng)絡(luò)訓(xùn)練獲得的精確度曲線均在Xception之上。圖4中的Oxford-IIIT Pet數(shù)據(jù)集有1%~1.7%的提升,圖5中的CUB_200_2011數(shù)據(jù)集有0.8%~1%的提升。
圖 5 SE-Xception與Xception在CUB_200_2011數(shù)據(jù)集上的實(shí)驗(yàn)對(duì)比Fig.5 Experiment comparison between SE-Xception and Xception on CUB_200_2011 dataset
使用訓(xùn)練好的網(wǎng)絡(luò)在測(cè)試集上分別進(jìn)行測(cè)試,測(cè)試集的精確度如表1所示。
表1 測(cè)試集精確度對(duì)比Table 1 Accuracy comparison of test sets
由表1可知,融合SE模塊的Xception在不同測(cè)試集上的精確度均高于原始的Xception。因此,SEnet可以進(jìn)一步提高Xception的精確度。
Imagenet[15]是一個(gè)大規(guī)模圖像識(shí)別數(shù)據(jù)庫,它的出現(xiàn)對(duì)深度學(xué)習(xí)的發(fā)展產(chǎn)生了深遠(yuǎn)的影響。該數(shù)據(jù)庫目前有14197122張圖片,共21841個(gè)類別。
從Imagenet中搜集10種動(dòng)物的彩色圖片數(shù)據(jù),剔除其中像素過小和模糊的數(shù)據(jù)后,一共有10074張。
部分種類圖片示例如圖6所示。
為了消除數(shù)據(jù)量差異對(duì)實(shí)驗(yàn)結(jié)果的影響,每類數(shù)據(jù)的數(shù)據(jù)量盡量相近,均在742~1188之間,數(shù)據(jù)分布如圖7所示。
其中,9164張劃分為訓(xùn)練集,910張劃分為測(cè)試集,訓(xùn)練集和測(cè)試集劃分比例如圖8所示。
圖6 動(dòng)物圖片數(shù)據(jù)示例Fig.6 Examples of image data for animals
圖7 動(dòng)物圖片數(shù)據(jù)分布折線圖Fig.7 Polyline diagram of distribution for animals image data
圖8 訓(xùn)練集與測(cè)試集劃分統(tǒng)計(jì)圖Fig.8 Statistical diagram of the division between training set and test set
將上述數(shù)據(jù)的訓(xùn)練集作為訓(xùn)練數(shù)據(jù),使用Xception網(wǎng)絡(luò)進(jìn)行訓(xùn)練,Adam加快模型收斂。使用原始圖片訓(xùn)練20000步,初步訓(xùn)練的訓(xùn)練集精確度曲線如圖9所示(實(shí)線)。
圖9 Xception 在動(dòng)物圖片訓(xùn)練集上的精確度曲線Fig.9 Accuracy curves of Xception on animal image training set
在0步~5000步之間,由于訓(xùn)練誤差的快速下降,測(cè)試集的精確度迅速上升;在5000步~18000步之間,測(cè)試集的精確度仍逐步上升,但上升的趨勢(shì)逐漸平緩;18000步之后,精確度曲線最終趨于穩(wěn)定,繼續(xù)訓(xùn)練得到的訓(xùn)練集精度為93.5%。由于數(shù)據(jù)中有除待識(shí)別物體以外的很多無關(guān)物體,網(wǎng)絡(luò)在訓(xùn)練的過程中會(huì)學(xué)習(xí)到這些無關(guān)物體的特征,并將這些特征作為判斷依據(jù)。因此,對(duì)圖片進(jìn)行適當(dāng)裁剪除去冗余特征,再重新放大為299×299大小,使神經(jīng)網(wǎng)絡(luò)能夠獲得更清晰準(zhǔn)確的訓(xùn)練數(shù)據(jù)。進(jìn)行再次訓(xùn)練,得到的訓(xùn)練集精確度如圖9和圖10所示(虛線)。
輸入的數(shù)據(jù)集去除冗余特征后,訓(xùn)練集精確度曲線收斂較快,最終精確度為95.0%,相比于不處理數(shù)據(jù)集時(shí)提升了1.5%。由此可以說明,圖像數(shù)據(jù)中的其他物體會(huì)形成干擾因素,對(duì)網(wǎng)絡(luò)的學(xué)習(xí)造成一定影響。再在此基礎(chǔ)上用SE-Xception網(wǎng)絡(luò)替換Xception網(wǎng)絡(luò),同樣訓(xùn)練20000步,獲得的訓(xùn)練集精確度如圖10所示(實(shí)線)。
圖10 除去冗余特征的Xception和SE-Xception訓(xùn)練集精確度曲線Fig.10 Accuracy curves of Xception and SE-Xception with redundant characteristics removed on training set
由圖10可知,將Xception網(wǎng)絡(luò)替換為SEXception網(wǎng)絡(luò)后,訓(xùn)練集精確度提升了2%。用訓(xùn)練好的網(wǎng)絡(luò)分別在測(cè)試集上進(jìn)行測(cè)試,測(cè)試集精確度如表2所示。
表2 動(dòng)物種類識(shí)別測(cè)試集精確度Table 2 Accuracy of animal species recognition on test set
由表2可知,測(cè)試集的精確度逐步提高,最終達(dá)到95.63%。
本文通過在TensorFlow平臺(tái)上進(jìn)行實(shí)驗(yàn),證明了融合SE模塊的Xception具有更高的精確度,能夠更好地應(yīng)用于圖像識(shí)別問題。在動(dòng)物種類的識(shí)別任務(wù)中,收集了10種動(dòng)物的圖片數(shù)據(jù),制作成TFRecords格式。先使用Xception網(wǎng)絡(luò)進(jìn)行訓(xùn)練,輸入不經(jīng)處理的原始數(shù)據(jù)時(shí),測(cè)試集精確度只有88.79%;除去冗余特征后,測(cè)試集精確度提升到了90.87%;在此基礎(chǔ)上將Xception替換為SE-Xception網(wǎng)絡(luò),最終測(cè)試集精確度能夠達(dá)到95.63%。