胡勝利,吳 季
(安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
深度學(xué)習(xí)在人工智能(Artificial Intelligence,AI)中屬于一個(gè)重要的分支,在圖像識(shí)別等領(lǐng)域取得了不錯(cuò)的成績(jī)。在深度學(xué)習(xí)還未得到真正應(yīng)用之前,處理圖像的方法一般有閾值處理、邊緣、區(qū)域、圖論等。對(duì)人臉圖像進(jìn)行識(shí)別時(shí),一般采用的是Haar-like特征+級(jí)聯(lián)分類器。這些傳統(tǒng)方法在處理圖像數(shù)據(jù)時(shí),都需要進(jìn)行十分復(fù)雜的預(yù)處理工作(即特征提取工作),不僅耗時(shí)長(zhǎng)、精度低,而且破壞了許多圖像原有的特性。因深度學(xué)習(xí)的興起,卷積神經(jīng)網(wǎng)絡(luò)開(kāi)始應(yīng)用于圖像處理中,解決了傳統(tǒng)人工特征提取圖像存在的種種問(wèn)題。隨著深度學(xué)習(xí)的發(fā)展,相關(guān)神經(jīng)網(wǎng)絡(luò)模型也不斷推陳出新[1],如 He等[2]將Resnet101應(yīng)用在深度卷積神經(jīng)網(wǎng)絡(luò)中,大大提高了圖像分類的準(zhǔn)確度。深度學(xué)習(xí)模型應(yīng)用在圖像處理中,可以得到極高的準(zhǔn)確率。Doon等[3]使用12層卷積神經(jīng)網(wǎng)絡(luò)(CNN)對(duì)CIFAR-10數(shù)據(jù)集進(jìn)行圖像識(shí)別,在測(cè)試中得到了87%的準(zhǔn)確率。但當(dāng)深度模型應(yīng)用于小樣本的圖像數(shù)據(jù)中時(shí),訓(xùn)練學(xué)習(xí)效果不好,只有在訓(xùn)練樣本量很大時(shí),才可以很好地泛化到不同的樣本[4]。而且,當(dāng)使用深度學(xué)習(xí)模型進(jìn)行高精度實(shí)驗(yàn)時(shí),需要用到的計(jì)算機(jī)硬件價(jià)格極其昂貴,在計(jì)算量中計(jì)算代價(jià)極大。所以,一般在訓(xùn)練小樣本的樣本數(shù)據(jù)時(shí),運(yùn)用遷移學(xué)習(xí)對(duì)深度模型進(jìn)行遷移訓(xùn)練,可以有效解決因樣本量少帶的來(lái)準(zhǔn)確率低等問(wèn)題。
針對(duì)小樣本圖像分類的問(wèn)題,本文采用遷移學(xué)習(xí)的方法,將深度卷積神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于小樣本的圖像處理中,旨在為小樣本圖像分類提供一種新方法。
圖像識(shí)別領(lǐng)域一般以卷積神經(jīng)網(wǎng)絡(luò)(CNN)為研究核心。該網(wǎng)絡(luò)的主要執(zhí)行內(nèi)容是選定一部分區(qū)域,提取到特征后將其傳遞到高層進(jìn)行信息綜合,主要層次包括輸入層、卷積層、激勵(lì)層、池化層、全連接層、輸出層。在提取特征的過(guò)程中,為了不讓圖像失真一般會(huì)填充零像素。這是因?yàn)橄噜彽牧阆袼夭粫?huì)在下一層激活其相應(yīng)的卷積單元[5]。CNN比BP神經(jīng)網(wǎng)絡(luò)多引入了感受野、權(quán)值共享和下采樣這3種新思想[6]。
遷移學(xué)習(xí)是針對(duì)在圖像識(shí)別時(shí)因數(shù)據(jù)集量少無(wú)法使深度模型的訓(xùn)練任務(wù)從頭開(kāi)始而開(kāi)發(fā)出的一種新的機(jī)器學(xué)習(xí)方法[7]。遷移學(xué)習(xí)將已經(jīng)訓(xùn)練好的模型放到新的分類任務(wù)中再次進(jìn)行圖像識(shí)別,把之前所學(xué)習(xí)到的原有特征當(dāng)作新數(shù)據(jù)的特征再次進(jìn)行識(shí)別。其工作流程是先實(shí)例化基本模型并將預(yù)訓(xùn)練的權(quán)重加載到其中,再凍結(jié)模型中基礎(chǔ)層的所有層,然后在基礎(chǔ)模型的一層或多層的輸出之上創(chuàng)建一個(gè)新的全連接層或分類器層,最后在新的數(shù)據(jù)集上訓(xùn)練新的模型。Yang等[8]遷移了GoogleNet中Inception-V3的預(yù)訓(xùn)練模型,并且應(yīng)用在擁有10類水果的數(shù)據(jù)集中,得到了高于94%的訓(xùn)練和測(cè)試精度。
遷移學(xué)習(xí)目前研究的主要對(duì)象是源域和目標(biāo)域的場(chǎng)景。設(shè)源域?yàn)镈s,目標(biāo)域?yàn)镈t,其中域D由特征空間χ和邊緣分布概率ρx組成,每個(gè)輸入的樣本為X∈χ。遷移學(xué)習(xí)可以定義為:給定源域Ds、學(xué)習(xí)任務(wù)Ts、目標(biāo)域Dt和學(xué)習(xí)任務(wù)Tt,以獲取源域Ds和學(xué)習(xí)任務(wù)Ts中的知識(shí)來(lái)幫助提升目標(biāo)域中的預(yù)測(cè)函數(shù)ft(·)的學(xué)習(xí)為目的,其中Ds≠Dt或Ts≠Tt。
MobileNet-V2是一個(gè)輕量級(jí)的卷積神經(jīng)網(wǎng)絡(luò),它與一般的卷積神經(jīng)網(wǎng)絡(luò)相比,加入了深度可分離卷積和倒置殘差結(jié)構(gòu)。其中,深度可分離卷積的作用是將輸入的特征降低到原來(lái)的1/9~1/8,并通過(guò)1×1的卷積計(jì)算輸入通道的線性組合來(lái)構(gòu)建新的特征[9]。MobileNet-V2網(wǎng)絡(luò)將原先的MobileNet-V1網(wǎng)絡(luò)中的特征提取部分做了相應(yīng)的改進(jìn),提出了倒置殘差結(jié)構(gòu)的方法。該方法使用1×1卷積進(jìn)行特征升維用來(lái)學(xué)習(xí)更多特征,然后使用了3×3的深度可分離卷積與1×1的卷積進(jìn)行降維,從而得到最優(yōu)的特征。加入殘差結(jié)構(gòu)可防止網(wǎng)絡(luò)加深之后發(fā)生梯度消失的現(xiàn)象。MobileNet-V2中還增加了線性瓶頸層,用于降低ReLu函數(shù)對(duì)特征造成的破環(huán)。
Inception-V3網(wǎng)絡(luò)可以在不增加計(jì)算成本的基礎(chǔ)上擴(kuò)張網(wǎng)絡(luò),在相同的計(jì)算能力下提取更多的細(xì)微特征,提高訓(xùn)練效果。其設(shè)計(jì)理論主要是基于Hebbian原理和多尺度處理的直覺(jué)來(lái)增加網(wǎng)絡(luò)的深度和寬度[10]。
Inception基礎(chǔ)模塊如圖1所示。1×1卷積用于處理輸入圖像的尺寸,降低計(jì)算成本。Inception-V3模塊將5×5卷積替換成2個(gè)連續(xù)的3×3卷積,進(jìn)一步降低了計(jì)算成本。它與VGG網(wǎng)絡(luò)不同之處在于VGG網(wǎng)絡(luò)只是卷積層不斷堆疊,而Inception-V3中采用不同尺寸的卷積核,將感受野不斷放大,最后實(shí)現(xiàn)拼接,達(dá)到不同尺度的特征融合。Inception-V3的最大特點(diǎn)是將層與層之間的卷積計(jì)算進(jìn)行了擴(kuò)展。
圖1 Inception基礎(chǔ)模塊
Xception模型是Inception-V3的一種改進(jìn)模型,主要引入了深度可分離卷積和殘差塊。與普通深度可分離卷積操作相反,Xception先進(jìn)行1×1的卷積操作,再進(jìn)行3×3的卷積。Xception模型可以將卷積神經(jīng)網(wǎng)絡(luò)的特征圖中跨通道相關(guān)性和空間相關(guān)性的映射完全解耦[11]。
數(shù)據(jù)增強(qiáng)可解決數(shù)據(jù)中樣本量過(guò)少或者樣本類別不均衡的問(wèn)題。而數(shù)據(jù)增強(qiáng)的方法主要從單樣本和多樣本2個(gè)角度出發(fā),單樣本主要是樣本的顏色變換和形狀的幾何變換,多樣本主要是插值變換和混淆變換。一般在圖像處理中較實(shí)用的方法是Mix-up,對(duì)圖像和標(biāo)簽都進(jìn)行了線性插值,不僅增強(qiáng)了原始圖像數(shù)據(jù)集,還有效避免了模型過(guò)度擬合的風(fēng)險(xiǎn)[12]。
針對(duì)貓狗數(shù)據(jù)集,本文主要采用的是單樣本的數(shù)據(jù)增強(qiáng)方法,對(duì)小樣本圖像數(shù)據(jù)進(jìn)行水平翻轉(zhuǎn),按比例對(duì)圖像的角度進(jìn)行隨機(jī)旋轉(zhuǎn)、縮放、裁剪以及對(duì)圖像的高度和寬度按比例進(jìn)行調(diào)整。
在深度卷積神經(jīng)網(wǎng)絡(luò)中,當(dāng)遇到小樣本圖像數(shù)據(jù)時(shí),通常會(huì)因樣本數(shù)據(jù)過(guò)少導(dǎo)致圖像識(shí)別效果不夠理想。若重新建立模型會(huì)消耗大量的人力,增加計(jì)算成本。遷移學(xué)習(xí)不僅可以學(xué)習(xí)到來(lái)自目標(biāo)數(shù)據(jù)集之外的圖像底層特征,還可以學(xué)習(xí)到訓(xùn)練目標(biāo)數(shù)據(jù)集上的高級(jí)特征,對(duì)提升圖像分類效果有極大幫助。為了證明遷移學(xué)習(xí)的效果,本文提出了一種基于遷移學(xué)習(xí)的小樣本圖像分類方法。該方法使用ImageNet數(shù)據(jù)集上訓(xùn)練而成的MobileNet-V2,Inception-V3和Xception的預(yù)訓(xùn)練模型。因?yàn)轭A(yù)訓(xùn)練的數(shù)據(jù)集和本次訓(xùn)練的貓狗圖像數(shù)據(jù)都屬于圖像數(shù)據(jù),所以關(guān)于圖像的底層特征是可以被遷移的,符合遷移學(xué)習(xí)的條件。
基于遷移學(xué)習(xí)的小樣本圖像分類方法整體分為預(yù)訓(xùn)練和模型遷移2個(gè)部分,遷移學(xué)習(xí)流程如圖2所示。圖2中左半邊圖為預(yù)訓(xùn)練的流程,右半邊圖為將模型遷移訓(xùn)練的流程。
圖2 遷移學(xué)習(xí)流程
預(yù)訓(xùn)練流程的執(zhí)行過(guò)程與一般卷積神經(jīng)網(wǎng)絡(luò)的隨機(jī)初始化訓(xùn)練過(guò)程類似,當(dāng)模型達(dá)到收斂后即可輸出預(yù)訓(xùn)練模型。
模型遷移訓(xùn)練不僅需要將訓(xùn)練好的模型參數(shù)進(jìn)行遷移,還需要通過(guò)目標(biāo)數(shù)據(jù)集來(lái)微調(diào)網(wǎng)絡(luò),使整個(gè)模型可以進(jìn)一步地適應(yīng)目標(biāo)任務(wù)。貓狗圖像分類任務(wù)的具體遷移訓(xùn)練方法步驟如下。
1)準(zhǔn)備數(shù)據(jù)集。預(yù)訓(xùn)練模型中應(yīng)用的是ImageNet數(shù)據(jù)集,將貓狗數(shù)據(jù)集作為目標(biāo)數(shù)據(jù)集并將其作為預(yù)訓(xùn)練模型的輸入。
2)選定模型。遷移訓(xùn)練選擇MobileNet-V2,Inception-V3和Xception 3種模型,對(duì)比3種遷移模型的優(yōu)劣性。
3)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)。首先根據(jù)遷移選擇的網(wǎng)絡(luò)特征將預(yù)訓(xùn)練模型中的特征進(jìn)行提取,應(yīng)用到目標(biāo)數(shù)據(jù)集中,并將預(yù)測(cè)的類別更改為實(shí)驗(yàn)中所需要的類別;然后使用層數(shù)凍結(jié)、數(shù)據(jù)增強(qiáng)、Dropout等技術(shù)對(duì)遷移訓(xùn)練模型進(jìn)行參數(shù)調(diào)整;最后對(duì)網(wǎng)絡(luò)進(jìn)行微調(diào),解凍部分層次,提取到的分類特征更貼切于目標(biāo)數(shù)據(jù)集,進(jìn)一步提升分類效果。
選用Tensorflow框架,處理器為intel(R) Core(TM)i7-7500u CPU,RAM 為8 GB,顯卡為NVIDIA GeForce 940MX。實(shí)驗(yàn)涉及2個(gè)數(shù)據(jù)集,一個(gè)是以ImageNet為源域數(shù)據(jù)集,由140萬(wàn)張圖像和1 000個(gè)類別組成的大型數(shù)據(jù)集;另一個(gè)是以貓狗數(shù)據(jù)集為目標(biāo)域數(shù)據(jù)集,總共包含3 000張貓狗圖片。
將貓狗數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。其中,驗(yàn)證集和訓(xùn)練集是同步完成的,這2個(gè)部分是在原有的舊樣本中進(jìn)行訓(xùn)練學(xué)習(xí),而測(cè)試集是新的樣本,不參與舊知識(shí)的訓(xùn)練。在貓狗圖像分類實(shí)驗(yàn)中,訓(xùn)練集是將遷移過(guò)來(lái)的深度模型與貓狗數(shù)據(jù)集中的數(shù)據(jù)樣本進(jìn)行擬合;驗(yàn)證集是查看訓(xùn)練集訓(xùn)練后的模型,再次進(jìn)行驗(yàn)證是否合理可行,并對(duì)該模型的泛化能力做初步地評(píng)估,有利于及時(shí)對(duì)訓(xùn)練的網(wǎng)絡(luò)模型進(jìn)行參數(shù)調(diào)整;測(cè)試集主要是用來(lái)測(cè)試微調(diào)后的網(wǎng)絡(luò)是否能很好地泛化到未被訓(xùn)練的樣本中,也就是微調(diào)后的網(wǎng)絡(luò)可以應(yīng)用于實(shí)際場(chǎng)景中,同時(shí)對(duì)于那些未知的樣本網(wǎng)絡(luò)也能進(jìn)行處理,對(duì)得到后的訓(xùn)練模型進(jìn)行深層次的評(píng)估。
4.2.1特征提取
特征提取是將在源域中預(yù)訓(xùn)練完成后的模型的訓(xùn)練權(quán)重進(jìn)行凍結(jié),并將它遷移到訓(xùn)練目標(biāo)數(shù)據(jù)集中。這樣只需修改網(wǎng)絡(luò)最后的分類器,即可完成對(duì)小樣本圖像的訓(xùn)練。遷移學(xué)習(xí)進(jìn)行特征提取的目的是將源域中提取出的特征應(yīng)用到目標(biāo)域小樣本數(shù)據(jù)中,不僅簡(jiǎn)化了特征提取步驟,而且能夠獲得性能更好的訓(xùn)練模型。特征提取的詳細(xì)步驟如下。
1)為了防止訓(xùn)練過(guò)程中修改預(yù)訓(xùn)練模型中的基礎(chǔ)權(quán)重信息,將MobileNet-V2,Xception和Inception-V3在ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練好的權(quán)重作為目標(biāo)數(shù)據(jù)集的輸入,并凍結(jié)3種模型的頂層,建立基本模型。
2)對(duì)小樣本貓狗數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng),以此來(lái)反映目標(biāo)數(shù)據(jù)集的更多細(xì)節(jié),增加模型的泛化能力。
3)設(shè)置輸入圖片的尺寸為(100,100,3),采用預(yù)處理方法將圖像像素從[0,255]調(diào)整至[-1,1],并建立特征提取器,將(100,100,3)圖像轉(zhuǎn)換成(4,4,1 280)的特征塊。
4)將定義好的基本模型和特征提取器連接在一起構(gòu)建模型,對(duì)獲取到的特征向量進(jìn)行全局平均池化。
5)為了進(jìn)一步降低運(yùn)算量,將Dropout設(shè)置為0.3,設(shè)置分類層,對(duì)貓狗圖像進(jìn)行分類,得出預(yù)測(cè)結(jié)果,構(gòu)建圖像分類模型。
在特征提取的實(shí)驗(yàn)中,設(shè)置學(xué)習(xí)率為0.000 1,優(yōu)化器為Adam,損失函數(shù)為二進(jìn)制交叉熵,周期數(shù)為10,且3種網(wǎng)絡(luò)模型的參數(shù)設(shè)置相同。
4.2.2微調(diào)
在3種網(wǎng)絡(luò)模型完成訓(xùn)練集和驗(yàn)證集的流程,且兩者的數(shù)據(jù)處于收斂狀態(tài)后,為了使目標(biāo)數(shù)據(jù)得到訓(xùn)練以更好地適應(yīng)目標(biāo)域,需要對(duì)這3種模型進(jìn)行微調(diào),解凍全部或基本的模型。一般而言,對(duì)于圖像分類任務(wù)來(lái)說(shuō),模型底層包含的是圖像最基本的功能,幾乎可以應(yīng)用到任何類型的圖像,因此模型底層不需要進(jìn)行調(diào)整,依然處于凍結(jié)的狀態(tài)。微調(diào)是調(diào)整模型的頂層部分,將模型的頂層部分與后添加的分類層在小樣本的目標(biāo)域數(shù)據(jù)集中繼續(xù)進(jìn)行訓(xùn)練,調(diào)整預(yù)訓(xùn)練的網(wǎng)絡(luò)權(quán)重,以更好地適應(yīng)小樣本目標(biāo)數(shù)據(jù),最終提升3種模型的分類精度。微調(diào)的詳細(xì)步驟如下。
1)MobileNet-V2模型總共有155層,設(shè)置前100層為底層部分并凍結(jié),從第101層解除凍結(jié),并與最后添加的全局平均池化層和分類層重新開(kāi)始訓(xùn)練網(wǎng)絡(luò)的權(quán)重,并設(shè)置優(yōu)化器為RMSprop,學(xué)習(xí)率為0.000 01,周期數(shù)為10。
2)Inception-V3模型原特征提取層名為“mixed8”,為凍結(jié)狀態(tài),將“mixed7”之后的層次進(jìn)行解凍, “mixed7”之前的層次依然處于凍結(jié)狀態(tài),微調(diào)后模型的參數(shù)設(shè)置和MobileNet-V2相同。
3)解凍Xception模型的基本預(yù)訓(xùn)練模型,仍處于凍結(jié)的部分是BatchNorMalization層,即批標(biāo)準(zhǔn)化層。這是因?yàn)锽atchNorMalization層的更新會(huì)使模型所學(xué)習(xí)的知識(shí)遭到破壞,因此解凍了基本模型,并且學(xué)習(xí)率按原訓(xùn)練模型的十分之一對(duì)整個(gè)模型進(jìn)行端到端的訓(xùn)練,所以,微調(diào)后的訓(xùn)練時(shí)間比Inception-V3和MobileNet-V2模型解凍部分層次的訓(xùn)練時(shí)間長(zhǎng),微調(diào)后模型的參數(shù)設(shè)置和MobileNet-V2相同。
在3種模型上應(yīng)用同一個(gè)目標(biāo)數(shù)據(jù)集同時(shí)進(jìn)行特征提取和微調(diào),比較在微調(diào)操作前后的訓(xùn)練精度和損失變化。同時(shí),將3種模型在新樣本測(cè)試集中進(jìn)行泛化,觀察測(cè)試精度和損失的變化情況。3種模型微調(diào)前后的精度與損失見(jiàn)表1, 3種模型在測(cè)試集上的精度與損失見(jiàn)表2。其中,精度為正確識(shí)別圖像和標(biāo)簽的概率;損失為預(yù)測(cè)標(biāo)簽和正確標(biāo)簽之間的差距。
表1 3種模型微調(diào)前后的精度與損失 %
表2 3種模型在測(cè)試集上的精度與損失 %
表1中的數(shù)據(jù)反映的是在整個(gè)訓(xùn)練周期中在第10個(gè)周期和第20個(gè)周期,也就是微調(diào)前后的最后一個(gè)周期上的訓(xùn)練精度以及損失情況。由表1可以看出,3種模型進(jìn)行微調(diào)后,精度和損失的變化都是極為可觀的,均有一定的提升。由表2可以看出, MobileNet-V2的測(cè)試精度最高,損失最低,說(shuō)明MobileNet-V2模型在適應(yīng)新樣本的過(guò)程中泛化性能最好。
3種模型微調(diào)前后的精度與損失變化仿真圖如圖3~5所示。其中,每個(gè)小圖的中間線為微調(diào)前后兩者的分隔線。
(a) 精度變化曲線
(a) 精度變化曲線
(a) 精度變化曲線
從圖3~5可以看出,微調(diào)前后Inception-V3模型的精度最高,且精度提升變化最為明顯。Xception模型在精度提升方面已經(jīng)趨近于飽和狀態(tài);Inception-V3模型在微調(diào)剛開(kāi)始時(shí)精度上升明顯,MobileNet-V2模型仍然有精度提升的可能。
通過(guò)實(shí)驗(yàn)可以看出,運(yùn)用遷移學(xué)習(xí)的方法將遷移深度卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于小樣本的圖像處理中可以構(gòu)造出泛化性能很高的模型,大大減少了原深度模型訓(xùn)練時(shí)產(chǎn)生的過(guò)擬合問(wèn)題。
將遷移學(xué)習(xí)的理念與深度模型的方法結(jié)合,應(yīng)用于小樣本數(shù)據(jù)處理中,不僅訓(xùn)練時(shí)間短,而且準(zhǔn)確率也很高。模型經(jīng)過(guò)微調(diào)后,泛化性能提高,更加適用于圖像分類處理。可以適當(dāng)增加輸入數(shù)據(jù)集的大小以提升精度,但這樣會(huì)使訓(xùn)練時(shí)間延長(zhǎng),或者通過(guò)優(yōu)勢(shì)組合,繼續(xù)進(jìn)化模型,進(jìn)一步提高對(duì)特征提取感受野的范圍大小等。