楊真真 匡 楠 范 露 康 彬
(1. 南京郵電大學(xué)通信與網(wǎng)絡(luò)技術(shù)國家工程研究中心, 江蘇南京 210003; 2. 南京郵電大學(xué)理學(xué)院, 江蘇南京 210023; 3. 南京郵電大學(xué)通信與信息工程學(xué)院, 江蘇南京 210003; 4. 南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院, 江蘇南京 210003)
圖像分類,即給定一幅輸入圖像,通過某種分類算法來判斷該圖像所屬的類別。圖像分類的劃分方式十分多樣,劃分依據(jù)不同,分類結(jié)果就不同。根據(jù)圖像語義的不同可將圖像分類為對(duì)象分類、場(chǎng)景分類、事件分類、情感分類。圖像分類的主要流程包括圖像預(yù)處理[1]、圖像特征描述和提取[2]以及分類器[3]的設(shè)計(jì)。預(yù)處理包括圖像濾波(例如中值濾波[4]、均值濾波[5]、高斯濾波[6]等)和尺寸的歸一化等操作,其目的是為了方便目標(biāo)圖像后續(xù)處理;圖像特征是對(duì)凸顯特性或?qū)傩缘拿枋觯恳环鶊D像都有其本身的一些特征,特征提取,即根據(jù)圖像本身的特征,按照某種既定的圖像分類方式來選取合適的特征并進(jìn)行有效的提取;分類器就是按照所選取的特征來對(duì)目標(biāo)圖像進(jìn)行分類的一種算法。
傳統(tǒng)的圖像分類方法即按照上述流程分別進(jìn)行處理,性能差異性主要依賴于特征提取及分類器選擇兩方面。傳統(tǒng)圖像分類算法所采用的特征都為人工選取,常用的圖像特征有形狀、紋理、顏色等底層視覺特征,還有尺度不變特征變換[7]、局部二值模式[8]、方向梯度直方圖[9]等局部不變特征等,這些特征雖然具有一定的普適性,但對(duì)具體的圖像及特定的劃分方式針對(duì)性不強(qiáng),并且對(duì)于一些復(fù)雜場(chǎng)景的圖像,要尋找能準(zhǔn)確描述目標(biāo)圖像的人工特征絕非易事。常見的傳統(tǒng)分類器包括K最近鄰[10]、支持向量機(jī)[11]等傳統(tǒng)分類器,對(duì)于一些簡(jiǎn)單圖像分類任務(wù),這些分類器實(shí)現(xiàn)簡(jiǎn)單,效果良好,但對(duì)于一些類別之間差異細(xì)微、圖像干擾嚴(yán)重等問題,其分類精度大打折扣,即傳統(tǒng)分類器非常不適合復(fù)雜圖像的分類。
隨著計(jì)算機(jī)的快速發(fā)展以及計(jì)算能力的極大提高,深度學(xué)習(xí)[12-14]逐漸步入我們的視野。在圖像分類的領(lǐng)域,深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)[15-17]可謂大有用武之地。相較于傳統(tǒng)的圖像分類方法,其不再需要人工的對(duì)目標(biāo)圖像進(jìn)行特征描述和提取,而是通過神經(jīng)網(wǎng)絡(luò)自主地從訓(xùn)練樣本中學(xué)習(xí)特征,并且這些特征與分類器關(guān)系緊密,這很好地解決了人工提取特征和分類器選擇的難題。
本文第2節(jié)介紹了經(jīng)典神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu);第3節(jié)闡述了基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類中常用的數(shù)據(jù)集以及所采用的主流結(jié)構(gòu)模型的原理、優(yōu)缺點(diǎn)、時(shí)間/空間復(fù)雜度、訓(xùn)練模型過程中可能遇到的問題和相應(yīng)的解決方案以及基于深度學(xué)習(xí)的圖像分類拓展模型的生成式對(duì)抗網(wǎng)絡(luò)和膠囊網(wǎng)絡(luò);第4節(jié)通過仿真實(shí)驗(yàn)驗(yàn)證了在圖像分類精度上,基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類方法優(yōu)于傳統(tǒng)圖像分類方法,綜合比較了目前較為流行的卷積神經(jīng)網(wǎng)絡(luò)模型之間性能差異并簡(jiǎn)要分析其原因,并針對(duì)過擬合問題、數(shù)據(jù)集構(gòu)建方法以及生成式對(duì)抗網(wǎng)絡(luò)和膠囊網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)分析說明;最后,對(duì)基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類算法進(jìn)行總結(jié),并對(duì)未來該領(lǐng)域工作進(jìn)行展望。
神經(jīng)網(wǎng)絡(luò)[18]是一門重要的機(jī)器學(xué)習(xí)[19]技術(shù),同時(shí)也是深度學(xué)習(xí)的基礎(chǔ)。如圖1(a)所示,這是一個(gè)包含三個(gè)層次的經(jīng)典神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。其輸入層與輸出層的節(jié)點(diǎn)個(gè)數(shù)往往是固定的,中間層的節(jié)點(diǎn)個(gè)數(shù)可以自由指定;神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖中的拓?fù)渑c箭頭代表著預(yù)測(cè)過程中的數(shù)據(jù)流向;結(jié)構(gòu)圖中的關(guān)鍵不是圓圈(代表神經(jīng)元),而是連接線(代表神經(jīng)元之間的連接),每個(gè)連接線對(duì)應(yīng)一個(gè)不同權(quán)重(其值稱為權(quán)值),這是需要訓(xùn)練得到的。神經(jīng)網(wǎng)絡(luò)其本質(zhì)是由無數(shù)個(gè)神經(jīng)元構(gòu)成,具體的數(shù)據(jù)在神經(jīng)元中的流動(dòng)過程如圖1(b)所示,假設(shè)圖中輸入1、輸入2、輸入3分別用x1、x2和x3表示,權(quán)值1、權(quán)值2、權(quán)值3分別用w1、w2和w3表示,偏置項(xiàng)為b,非線性函數(shù)用g(·)表示,輸出用y表示,其過程可用如下式表示:
y=g(w1·x1+w2·x2+w3·x3+b)
(1)
圖1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)[20-22]相較于一般神經(jīng)網(wǎng)絡(luò)最突出的特征是增加了卷積層(conv layer)和池化層(pooling layer),其他層級(jí)結(jié)構(gòu)仍與一般神經(jīng)網(wǎng)絡(luò)一致。其數(shù)據(jù)在卷積層中的流動(dòng)過程仍以圖1來說明:假設(shè)一幅RGB彩色圖像(5×5)輸入該卷積層,括號(hào)內(nèi)的數(shù)值代表分辨率。則對(duì)應(yīng)的輸入不再是三個(gè)值,而是該彩色圖像三色通道對(duì)應(yīng)的3個(gè)像素矩陣,故設(shè)其三色像素矩陣分別為x1、x2和x3,其大小都為5×5,卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值也不再是一個(gè)值,一般是小于輸入像素矩陣大小的一個(gè)矩陣,其在輸入圖像上的作用過程與圖像處理中濾波器卷積過程一致,故稱作卷積核,設(shè)卷積核大小分別為w1、w2和w3,w代表(2×2)權(quán)值矩陣。非線性函數(shù)用G(·)表示,偏置矩陣為b,其輸出設(shè)為像素矩陣y,一般大小等于輸入圖像矩陣的大小。所以數(shù)據(jù)在卷積層中流動(dòng)過程可用如下式表示:
y=G(w1·x1+w2·x2+w3·x3+b)
(2)
卷積層最大的特點(diǎn)在于運(yùn)用了參數(shù)共享機(jī)制,卷積核的權(quán)重是通過訓(xùn)練得到的,并且在卷積的過程中卷積核的權(quán)重是不會(huì)改變的,這說明我們可以通過一個(gè)卷積核的操作提取原圖的不同位置的同樣特征。簡(jiǎn)單來說就是在一幅圖像中的不同位置的相同目標(biāo),它們的特征是基本相同的。參數(shù)共享機(jī)制大大減少了訓(xùn)練參數(shù)的個(gè)數(shù),同時(shí)也減少了過擬合的風(fēng)險(xiǎn)[23],提高了模型的泛化能力。
池化層一般連接在連續(xù)卷積層之后,對(duì)輸入作降采樣過程。降采樣的方式多種多樣,如最大池化、平均池化等。最大池化就是在圖像上對(duì)應(yīng)出濾波器大小的區(qū)域,在該區(qū)域內(nèi)取像素點(diǎn)最大的值,以此得到特征數(shù)據(jù),一般來說,該方法得到的特征數(shù)據(jù)更好地保留了圖像的紋理特征;平均池化即在上述區(qū)域內(nèi),對(duì)里面所有不為0的像素取均值,以此得到特征數(shù)據(jù),該方法更好地保留了對(duì)圖像背景信息的提取,需要注意的是,平均池化中所選取的像素點(diǎn)中不包含0像素,如把0像素點(diǎn)加上,則會(huì)增加分母,從而使整體數(shù)據(jù)變低(大面積0像素,不利于特征的提取)。下面以平均池化為例,說明降采樣過程,如圖2所示,輸入一幅4×4圖像矩陣,構(gòu)建一個(gè)2×2的滑動(dòng)濾波器在該圖像矩陣上滑動(dòng),步長(zhǎng)為2。該滑動(dòng)濾波器作用是計(jì)算其濾波范圍內(nèi)像素的平均值,最終將原像素矩陣降采樣為2×2的像素矩陣。該層的作用也是顯而易見的,一方面實(shí)現(xiàn)了對(duì)圖像矩陣的降維(類似于主成分分析[24]),降低了模型所需的計(jì)算量;另一方面,實(shí)現(xiàn)了不變性,包括尺度不變性、平移不變性和旋轉(zhuǎn)不變性[25]。
圖2 降采樣過程
通過卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類較之傳統(tǒng)的圖像分類方法最大的優(yōu)勢(shì)在于不需要針對(duì)特定的圖像數(shù)據(jù)集或分類方式提取具體的人工特征,而是模擬大腦的視覺處理機(jī)制對(duì)圖像層次化的抽象,自動(dòng)篩選特征,從而實(shí)現(xiàn)對(duì)圖像個(gè)性化的分類任務(wù)。這很好的解決了傳統(tǒng)圖像分類方法中人工提取特征這一難題,真正的實(shí)現(xiàn)了智能化。本節(jié)首先給出了基于卷積神經(jīng)網(wǎng)絡(luò)圖像分類常用數(shù)據(jù)集,接著給出了圖像分類中常采用的卷積神經(jīng)網(wǎng)絡(luò)模型、優(yōu)缺點(diǎn)、時(shí)間/空間復(fù)雜度、模型訓(xùn)練中可能遇到的問題及相應(yīng)解決方案以及在圖像分類任務(wù)中模型未來發(fā)展方向及趨勢(shì)的分析。
以下是幾種常用分類數(shù)據(jù)集,在分類難度上依次遞增。
(1)MNIST[26]:訓(xùn)練集(training set)包含60000個(gè)樣本和60000個(gè)標(biāo)簽,測(cè)試集(test set)包含10000個(gè)樣本和10000個(gè)標(biāo)簽,由來自250個(gè)不同人手寫數(shù)字(0-9)構(gòu)成。
(2)CIFAR-10[27]:該數(shù)據(jù)集共有60000張彩色圖像,這些圖像的分辨率為32×32,分為10類,需要注意的是這10個(gè)類之間是相互獨(dú)立的,每類6000幅圖,其中50000幅圖用于訓(xùn)練,10000幅圖用于測(cè)試。
(3)CIFAR-100:該數(shù)據(jù)集同樣有60000張彩色圖像,圖像分辨率為32×32,分為100個(gè)類,每類600幅圖像,包括500幅訓(xùn)練圖像和100幅測(cè)試圖像。相較于數(shù)據(jù)集CIFAR-10,該數(shù)據(jù)集又將100個(gè)類劃分為20個(gè)超類(Superclass)。
(4)ImageNet[28]:該數(shù)據(jù)集有1400多萬幅圖像,涵蓋2萬多個(gè)類別,其中有超過百萬的圖像有明確的類別標(biāo)注和圖像中物體位置的標(biāo)注。圖像分類、定位、檢測(cè)等研究工作大都于此數(shù)據(jù)集展開。
常用于圖像分類的經(jīng)典CNN網(wǎng)絡(luò)結(jié)構(gòu)模型種類繁多,例如LeNet[29]、AleXNet[30]、GoogLeNet[31]、VGGNet[32]等多種模型。下面僅對(duì)CNN最初的模型以及歷屆ILSVRC大賽中獲得冠亞軍且較之前網(wǎng)絡(luò)結(jié)構(gòu)創(chuàng)新性較大的圖像分類模型以及其優(yōu)缺點(diǎn)作簡(jiǎn)要分析,然后對(duì)以上模型的時(shí)間/空間復(fù)雜度作簡(jiǎn)要說明。
(1)LeNet模型[29]: 該模型誕生于1994年,是最早的卷積神經(jīng)網(wǎng)絡(luò)之一,是深度學(xué)習(xí)領(lǐng)域的奠基之作。其網(wǎng)絡(luò)共涉及60k參數(shù)。該模型的基本結(jié)構(gòu)為conv1(6)->pool1->conv2(16)->pool2->fc3(120)->fc4(84)->fc5(10)->softmax,括號(hào)中的數(shù)字代表通道數(shù)。其中,卷積(conv)層用于提取空間特征,池化(pool)層進(jìn)行映射到空間均值下采樣(subsample),全連接層(full connection)將前層是卷積層的輸出轉(zhuǎn)化為卷積核為h·w的全局卷積,其中h和w分別為前層卷積結(jié)果的高和寬;全連接層將前層是全連接層的輸出轉(zhuǎn)化為卷積核為1×1的卷積。該層起到將“分布式特征表述”映射到樣本標(biāo)記空間的作用。最后,輸出(output)層采用softmax[33]分類器,其輸出為一個(gè)向量,元素個(gè)數(shù)等于總類別個(gè)數(shù),元素值為測(cè)試圖像在各個(gè)分類上的評(píng)分(各個(gè)分類上的元素值加起來為1),元素值最大的那一類即被認(rèn)定為該測(cè)試圖像所屬的類別。該模型最早應(yīng)用于MNIST手寫識(shí)別數(shù)字的識(shí)別并且取得了不錯(cuò)的效果,但由于受當(dāng)時(shí)計(jì)算效率低下的影響,該模型的深度淺、參數(shù)少且結(jié)構(gòu)單一,并不適用于復(fù)雜的圖像分類任務(wù)。
(2)AlexNet模型[30]:該網(wǎng)絡(luò)共涉及約60M參數(shù),ILSVRC2012冠軍網(wǎng)絡(luò)。AlexNet有著和LeNet相似的網(wǎng)絡(luò)結(jié)構(gòu),但網(wǎng)絡(luò)層數(shù)更深,有更多的參數(shù)。相較于LeNet,該模型使用了ReLU[34]激活函數(shù),其梯度下降速度更快,因而訓(xùn)練模型所需的迭代次數(shù)大大降低。同時(shí),該模型使用了隨機(jī)失活(dropout)操作,在一定程度上避免了因訓(xùn)練產(chǎn)生的過擬合,訓(xùn)練模型的計(jì)算量也大大降低。但即便如此,該模型相較于LeNet模型其深度僅僅增加了3層,其對(duì)圖像的特征描述及提取能力仍然十分有限。
(3)GoogLeNet模型[31]:該網(wǎng)絡(luò)共涉及5M參數(shù),ILSVRC2014冠軍網(wǎng)絡(luò)。該模型最大的特點(diǎn)在于引入了Inception模塊,如圖3所示,該模塊共有4個(gè)分支,第一個(gè)分支對(duì)輸入進(jìn)行1×1卷積,它可以跨通道組織信息,提高網(wǎng)絡(luò)的表達(dá)能力;第二個(gè)分支先使用了1×1卷積,然后連接3×3卷積,相當(dāng)于進(jìn)行了兩次特征變換;第三個(gè)分支類似,先是1×1的卷積,然后連接5×5卷積;最后一個(gè)分支則是3×3最大池化后直接使用1×1卷積。該Inception模塊的引入大大提高了參數(shù)的利用效率,其原因在于:一般來說卷積層要提升表達(dá)能力,主要依靠增加輸出通道數(shù),但副作用是計(jì)算量增大和過擬合。每一個(gè)輸出通道對(duì)應(yīng)一個(gè)濾波器,同一個(gè)濾波器共享參數(shù),只能提取一類特征,因此一個(gè)輸出通道只能做一種特征處理。而該模型允許在輸出通道之間進(jìn)行信息組合,因此效果明顯。同時(shí)該模塊使用1×1卷積核對(duì)輸入進(jìn)行降維,也大大減少了參數(shù)量。GoogLeNet相較于之前的網(wǎng)絡(luò)模型其深度大大增加,達(dá)到了史無前例的22層,由于其參數(shù)量?jī)H為Alexnet的1/12,模型的計(jì)算量大大減小,但對(duì)圖像分類的精度又上升到了一個(gè)新的臺(tái)階。雖然GoogLeNet模型層次達(dá)到了22層,但想更進(jìn)一步加深層次卻是異常困難,原因在于隨著模型層次的加深,梯度彌散問題愈發(fā)嚴(yán)重,使得網(wǎng)絡(luò)難以訓(xùn)練。
圖3 Inception模塊
(4)VGGNet模型[32]:該模型是ILSVRC2014的亞軍網(wǎng)絡(luò),它是從AlexNet模型發(fā)展而來,主要修改了如下兩方面:(a)使用幾個(gè)帶有小濾波器的卷積層代替一個(gè)大濾波器的卷積層,即卷積層使用的卷積核較小,但增加了模型的深度;(b)采用多尺度(Multi-Scale)訓(xùn)練策略,具體來說,首先將原始圖像等比例縮放,保證短邊大于224,再在經(jīng)過處理的圖像上隨機(jī)選取224×224窗口,因?yàn)槲矬w尺度變化多樣,這種訓(xùn)練策略可以更好地識(shí)別物體。該模型雖然在ILSVRC2014沒有獲得冠軍,但其與冠軍的成績(jī)相差無幾,原因在于上述兩點(diǎn)改進(jìn)對(duì)模型的學(xué)習(xí)能力提供了非常大的幫助。但該網(wǎng)絡(luò)使用的參數(shù)過多,訓(xùn)練速度緩慢,后續(xù)研究仍可在此問題上繼續(xù)優(yōu)化。
(5)ResNet模型[35]:該模型是ILSVRC 2015的冠軍網(wǎng)絡(luò)。該模型旨在解決“退化”問題,即當(dāng)模型的層次加深后錯(cuò)誤率卻提高了。其原因在于:當(dāng)模型變復(fù)雜時(shí),隨機(jī)梯度下降(Stochastic Gradient Descent, SGD)[36]的優(yōu)化變得更加困難,導(dǎo)致了模型達(dá)不到好的學(xué)習(xí)效果。因此文獻(xiàn)[35]提出了Residual結(jié)構(gòu),如圖4所示,即增加一個(gè)恒等映射,將原始所需要學(xué)的函數(shù)H(X)轉(zhuǎn)換成F(X)+X,假設(shè)F(X)的優(yōu)化會(huì)比H(X)簡(jiǎn)單的多,則這兩種表達(dá)的效果相同,但是優(yōu)化的難度卻并不相同。該模型的出現(xiàn),使得網(wǎng)絡(luò)模型深度在很大范圍內(nèi)不受限制(目前可達(dá)到1000層以上),對(duì)后續(xù)卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展產(chǎn)生了深遠(yuǎn)的意義。
圖4 Residual結(jié)構(gòu)
(6)SENet模型[37]:該模型是ILSVRC 2017的冠軍網(wǎng)絡(luò)。SENet通過額外的分支(gap-fc-fc-sigm)來得到每個(gè)通道的[0,1]權(quán)重,自適應(yīng)地校正原各通道激活值響應(yīng),以提升有用通道響應(yīng)并抑制對(duì)當(dāng)前任務(wù)用處不大的通道響應(yīng)。該模型不僅在一定程度上減少了計(jì)算量,防止了模型訓(xùn)練的過擬合,同時(shí)更有利于對(duì)圖像特征的描述。
現(xiàn)在,對(duì)以上在ILSVRC大賽中獲得冠軍的圖像分類模型作錯(cuò)誤率分析,其結(jié)果如表1所示,其中第一列CNN網(wǎng)絡(luò)模型中“-數(shù)字”代表所訓(xùn)練網(wǎng)絡(luò)的深度(即模型層數(shù)),例如ResNet-50,”-50”代表該模型有50層;Top-1錯(cuò)誤率中的Top-1表示模型學(xué)習(xí)得到的標(biāo)簽(n維向量,n為數(shù)據(jù)集類別個(gè)數(shù),向量值為各類別所對(duì)應(yīng)的預(yù)測(cè)概率大小)取預(yù)測(cè)概率最大那一類作為分類結(jié)果,因而Top-1錯(cuò)誤率代表所學(xué)習(xí)到的標(biāo)簽中預(yù)測(cè)概率最大的那一類不是正確類別的比率,以此類推,Top-5錯(cuò)誤率代表所學(xué)習(xí)到的標(biāo)簽中預(yù)測(cè)概率最大的5個(gè)類別中不包含正確類別的比率[35,37]。表1中第二、三列為驗(yàn)證集上的錯(cuò)誤率,第四列為測(cè)試集上錯(cuò)誤率,其中所用測(cè)試集為當(dāng)年ILSVRC大賽指定測(cè)試集,故參考意義較大,尤其突出的是2017年ILSVRC冠軍網(wǎng)絡(luò)SENet在測(cè)試集上Top-5錯(cuò)誤率達(dá)到了2.25%相較于之前的網(wǎng)絡(luò)性能上有了質(zhì)的飛躍。從2012年冠軍網(wǎng)絡(luò)AlexNet到2017年冠軍網(wǎng)絡(luò)SeNet,在ImageNet數(shù)據(jù)集圖像分類的錯(cuò)誤率從15.3%下降到2.25%,可見卷積神經(jīng)網(wǎng)絡(luò)模型在近幾年發(fā)展非常迅速,遠(yuǎn)沒有達(dá)到瓶頸,故對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型后續(xù)研究仍尤為重要。
表1 基于CNN圖像分類模型在ImageNet數(shù)據(jù)集上錯(cuò)誤率對(duì)比
模型的時(shí)間復(fù)雜度和空間復(fù)雜度是衡量模型好壞的重要指標(biāo),時(shí)間復(fù)雜度決定了模型訓(xùn)練/預(yù)測(cè)需要運(yùn)算的次數(shù),空間復(fù)雜度決定了參數(shù)的數(shù)量。時(shí)間復(fù)雜度通常以浮點(diǎn)運(yùn)算次數(shù)(floating-point oprations, FLOPs)來衡量,空間復(fù)雜度以模型參數(shù)數(shù)量來衡量。隨著硬件水平以及計(jì)算能力的快速發(fā)展,模型的時(shí)間復(fù)雜度對(duì)訓(xùn)練和預(yù)測(cè)的影響總可以找到相應(yīng)的方法克服(例如增大對(duì)計(jì)算成本的投入),但如若應(yīng)用到一些對(duì)實(shí)時(shí)性要求高的項(xiàng)目中,對(duì)模型選擇的取舍還需權(quán)衡時(shí)間復(fù)雜度和精度的要求。下面著重對(duì)空間復(fù)雜度進(jìn)行分析,空間復(fù)雜度對(duì)模型性能優(yōu)劣的重要性不言而喻,一個(gè)模型的參數(shù)數(shù)量,往往會(huì)造成維數(shù)災(zāi)難,一方面帶來時(shí)間復(fù)雜度的增加;另一方面,意味著有許多參數(shù)需要被訓(xùn)練,因此需要訓(xùn)練的數(shù)據(jù)量大大增加,這無疑對(duì)數(shù)據(jù)集的樣本規(guī)模提出了更高的要求。再者,空間復(fù)雜度的提升對(duì)數(shù)據(jù)分布的刻畫能力也隨之增強(qiáng),這對(duì)于一些復(fù)雜數(shù)據(jù)集的分類任務(wù)無疑是一件好事,但對(duì)于一些簡(jiǎn)單數(shù)據(jù)集也是災(zāi)難性的,往往會(huì)造成嚴(yán)重的過擬合問題。表2列出了上述模型的FLOPs和參數(shù)數(shù)量,供學(xué)者針對(duì)圖像分類任務(wù)要求,合理選擇或改進(jìn)相關(guān)網(wǎng)絡(luò)模型。
表2 CNN圖像分類模型的時(shí)間復(fù)雜度和空間復(fù)雜度
前述網(wǎng)絡(luò)模型除了在模型結(jié)構(gòu)上有所創(chuàng)新之外,各模型所用訓(xùn)練技巧也不盡相同,下面對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練中所遇到的常見問題及解決方法作簡(jiǎn)要分析。
(1)過擬合(overfitting):過擬合,即模型在訓(xùn)練集范圍內(nèi)能很好的擬合數(shù)據(jù),在訓(xùn)練集外不能夠很好的擬合數(shù)據(jù)。造成該現(xiàn)象的原因主要有以下3種:(a)模型的復(fù)雜度過高,包括參數(shù)過多或過訓(xùn)練;(b)數(shù)據(jù)圖像噪聲過多,例如圖像數(shù)據(jù)的部分缺失、模糊等,如果模型與訓(xùn)練集數(shù)據(jù)完全擬合,其與真實(shí)場(chǎng)景偏差可能更大;(c)數(shù)據(jù)量有限,使得模型無法真正了解數(shù)據(jù)集的真實(shí)分布。因此,為了解決該問題,可從這三方面入手調(diào)優(yōu)。對(duì)于模型參數(shù)過多問題,可以減少模型深度;對(duì)于過訓(xùn)練問題可以使用諸如對(duì)損失函數(shù)(loss function)[38]、批量損失(batch loss)[39]加正則化約束、隨機(jī)失活、權(quán)值衰減等方法加以處理。對(duì)于數(shù)據(jù)圖像噪聲過多,可以在訓(xùn)練前先對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,以達(dá)到降噪的目的。對(duì)于數(shù)據(jù)量過少的問題,一方面可通過擴(kuò)充數(shù)據(jù)集以增加數(shù)據(jù)量,另一方面,可將原圖訓(xùn)練集中圖像進(jìn)行翻轉(zhuǎn)、平移、放大縮小等操作后重新加入訓(xùn)練集以達(dá)到擴(kuò)充數(shù)據(jù)集的目的。
(2)欠擬合(underfitting):欠擬合,即模型在訓(xùn)練集范圍內(nèi)不能很好的擬合數(shù)據(jù),該現(xiàn)象產(chǎn)生的原因主要是網(wǎng)絡(luò)模型深度不夠,不能對(duì)一些較復(fù)雜的數(shù)據(jù)集進(jìn)行很好的擬合,因此,解決該問題主要考慮加深網(wǎng)絡(luò)的層次。
(3)梯度消失(gradient vanishing)、梯度爆炸(gradient exploding):梯度消失[40]和梯度爆炸[41]本質(zhì)原因歸結(jié)為卷積神經(jīng)網(wǎng)絡(luò)采用反向傳播方式,該方式使用鏈?zhǔn)角髮?dǎo),計(jì)算每層梯度的時(shí)候會(huì)涉及連乘操作,因此如果網(wǎng)絡(luò)層次過多,連乘因子大部分小于1,最后乘積結(jié)果趨于0,也就是所謂的梯度消失;同理,如果連乘因子大部分大于1,最后乘積趨于無窮,也就是所謂的梯度爆炸。簡(jiǎn)而言之,梯度消失,即卷積神經(jīng)網(wǎng)絡(luò)后層的權(quán)值更新幅度要遠(yuǎn)大于前層權(quán)值更新幅度,當(dāng)前層的權(quán)值更新幅度過小(幾乎趨于停滯),后層也就失去存在的意義(相當(dāng)于只訓(xùn)練了后層);梯度爆炸,即卷積神經(jīng)網(wǎng)絡(luò)前層的權(quán)值更新幅度遠(yuǎn)大于后層權(quán)值更新幅度,導(dǎo)致網(wǎng)絡(luò)權(quán)重大幅更新,并因此使得網(wǎng)絡(luò)不穩(wěn)定,在極端情況下,前層權(quán)重的值將變得非常大直至溢出。對(duì)于梯度消失問題,常用的解決方法包括:引入ResNet模型中使用的Residual模塊,改進(jìn)激活函數(shù),如AlexNet中所使用的ReLU激活函數(shù)等;對(duì)于梯度爆炸問題,解決方法除了改進(jìn)激活函數(shù)之外,還可引入批量歸一化(Batch normalization, BN)[42]、梯度截?cái)?Gradient Clipping)[43]、權(quán)重正則化等優(yōu)化技術(shù)。
基于傳統(tǒng)CNN的圖像分類技術(shù)在有大量標(biāo)注樣本可訓(xùn)練的情況下已達(dá)到不錯(cuò)的性能,但卻無法用來在沒有大量標(biāo)注樣本的情況下訓(xùn)練,即無法完成半監(jiān)督學(xué)習(xí)(Semi-Supervised Learning,SSL)[44]甚至無監(jiān)督學(xué)習(xí)(Unsupervised Learning)[45],然而尋找大量標(biāo)注的數(shù)據(jù)樣本是一件十分困難的事情;此外傳統(tǒng)CNN網(wǎng)絡(luò)由于結(jié)構(gòu)的局限性,對(duì)重疊圖像分類任務(wù)性能不佳。近兩年,隨著生成式對(duì)抗網(wǎng)絡(luò)(generative adversarial network, GAN)[46]以及膠囊網(wǎng)絡(luò)(capsule network)[47]模型的興起,在上述領(lǐng)域有了一定的突破,具有很大的發(fā)展?jié)摿?。下面?duì)這兩種網(wǎng)絡(luò)進(jìn)行詳細(xì)介紹及分析。
(1)生成式對(duì)抗網(wǎng)絡(luò)
GAN由生成器網(wǎng)絡(luò)(generator network)和判別器網(wǎng)絡(luò)(discriminator network)兩部分構(gòu)成。生成器網(wǎng)絡(luò)主要從訓(xùn)練數(shù)據(jù)中生成偽造樣本,其輸出表示為x=g(z;θ(g));判別器網(wǎng)絡(luò)用于判斷輸入數(shù)據(jù)為真實(shí)樣本還是生成器偽造的樣本,其輸出表示為d(x;θ(d)),指示x是真實(shí)訓(xùn)練樣本而不是從模型抽取的偽造樣本的概率。簡(jiǎn)而言之,一個(gè)網(wǎng)絡(luò)生成偽造樣本,另一個(gè)網(wǎng)絡(luò)判斷所生成樣本是真實(shí)的還是模擬的。生成偽造樣本的網(wǎng)絡(luò)要優(yōu)化自己讓判別網(wǎng)絡(luò)認(rèn)為所生成樣本為真實(shí)樣本,判別的網(wǎng)絡(luò)也要優(yōu)化自己讓自己判斷更加準(zhǔn)確,二者關(guān)系行成對(duì)抗,因此稱為對(duì)抗網(wǎng)絡(luò)。該網(wǎng)絡(luò)的全局優(yōu)化函數(shù)如下所示:
(3)
其中
v(θ(g),θ(d))=Ex~pdatalog d(x)+
Ex~pmodellog(1-d(x))
(4)
從判別網(wǎng)絡(luò)的角度來說,希望對(duì)于真實(shí)樣本,其輸出概率越大越好;對(duì)于偽造的生成樣本來說,其輸出概率越小越好,故其目標(biāo)函數(shù)為:
(5)
從生成網(wǎng)絡(luò)的角度來說,希望其生成的偽造樣本由判別器判斷為真實(shí)的樣本的概率越高越好,即上式中第二項(xiàng)越小越好,上式第一項(xiàng)在生成網(wǎng)絡(luò)訓(xùn)練過程中可看作常數(shù),故其目標(biāo)函數(shù)為:
(6)
在訓(xùn)練過程中,采用交替迭代策略,即先固定其中一個(gè)網(wǎng)絡(luò)參數(shù)來優(yōu)化與之形成對(duì)抗的網(wǎng)絡(luò)。當(dāng)生成器樣本與實(shí)際數(shù)據(jù)不可區(qū)分,判別網(wǎng)絡(luò)對(duì)于生成器輸出樣本其判別概率處處為0.5時(shí),即達(dá)到理論上的納什均衡,可認(rèn)為模型收斂。
該網(wǎng)絡(luò)自2016年掀起研究熱潮以來,目前在網(wǎng)絡(luò)模型算法、訓(xùn)練優(yōu)化和應(yīng)用領(lǐng)域拓展等方面仍處于快速發(fā)展階段。在計(jì)算機(jī)視覺領(lǐng)域,自從基于GAN改進(jìn)的DCGAN[48](該方法將卷積網(wǎng)絡(luò)應(yīng)用于對(duì)抗網(wǎng)絡(luò))問世以來,其在目標(biāo)檢測(cè)[49]、圖像風(fēng)格遷移[50]、超分辨率重構(gòu)[51]等方向產(chǎn)生了舉足輕重的影響。該網(wǎng)絡(luò)同樣可以用于圖像分類[52-53],其核心思想是將生成網(wǎng)絡(luò)的輸出作為k+1類,相應(yīng)地,判別網(wǎng)絡(luò)的輸出為k+1類的分類問題。該網(wǎng)絡(luò)在圖像分類方面有重要意義,它改變了傳統(tǒng)CNN需要大量標(biāo)注樣本進(jìn)行學(xué)習(xí)的策略,使其可以在少量標(biāo)注樣本及大量未標(biāo)注樣本上進(jìn)行學(xué)習(xí)并取得了良好的效果,即所謂的半監(jiān)督學(xué)習(xí)。
(2)膠囊網(wǎng)絡(luò)
盡管目前業(yè)界最先進(jìn)的傳統(tǒng)CNN模型在圖像分類上取得了不錯(cuò)的性能,但依然掩蓋不了傳統(tǒng)CNN網(wǎng)絡(luò)結(jié)構(gòu)對(duì)物體之間的空間關(guān)系辨識(shí)度差以及對(duì)物體大幅度旋轉(zhuǎn)之后識(shí)別能力低下這兩個(gè)缺陷[47]。因此,最近Hinton等人在CNN基礎(chǔ)之上提出了膠囊網(wǎng)絡(luò)(capsule network)[47],即一個(gè)包含多個(gè)神經(jīng)元的載體,每個(gè)神經(jīng)元表示了圖像中出現(xiàn)的特定實(shí)體的各種屬性。這些屬性可以包括許多不同類型的實(shí)例化參數(shù),例如姿態(tài)(位置、大小、方向)、變形、速度、色相、紋理等。膠囊里一個(gè)非常特殊的屬性是圖像中某個(gè)類別的實(shí)例的存在,它的輸出數(shù)值大小就是實(shí)體存在的概率。
定義了膠囊這個(gè)結(jié)構(gòu),如果仍像傳統(tǒng)CNN模型使用BP算法來訓(xùn)練神經(jīng)元的權(quán)重,則所謂的膠囊無異于傳統(tǒng)CNN模型中下一層節(jié)點(diǎn),故Sabour等人對(duì)膠囊之間的訓(xùn)練提出了名為動(dòng)態(tài)路由(dynamic routing)的算法[47],該算法核心內(nèi)容可概括為:低級(jí)別的膠囊會(huì)將其輸出發(fā)送給“同意”該輸出的高級(jí)別膠囊。具體來說,即低級(jí)別的膠囊通過識(shí)別輸入目標(biāo)較簡(jiǎn)單的子部分來判斷一個(gè)該目標(biāo)可能是什么的“弱賭注”,而后,高級(jí)別的膠囊會(huì)采取這些低級(jí)別膠囊的“賭注”,假若某個(gè)較高級(jí)別的膠囊同意足夠多的低級(jí)別膠囊,則這些低級(jí)別膠囊的路由即為該較高級(jí)別的膠囊。
該網(wǎng)絡(luò)的輸出層由于使用膠囊結(jié)構(gòu)得到輸出各個(gè)分類概率值(類似于softmax應(yīng)用于多分類任務(wù)的輸出形式),故其目標(biāo)函數(shù)有別于傳統(tǒng)CNN模型的目標(biāo)函數(shù),被稱之為間隔損失(margin loss),如下所示:
Lk=Tkmax(0,m+-‖vk‖)2+
λ(1-Tk)max(0,‖vk‖-m-)2
(7)
其中k表示分類;Tk是分類的示性函數(shù)(k類存在為1,不存在為0):‖vk‖表示膠囊的輸出概率;m+為上界,懲罰假正例(false positive),即預(yù)測(cè)k類存在實(shí)則不存在,m-為下界,懲罰假反例(false negative),即預(yù)測(cè)k類不存在實(shí)則存在;λ為比例系數(shù),調(diào)整兩者比重。
膠囊網(wǎng)絡(luò)在MNIST數(shù)據(jù)集分類任務(wù)中取得了目前該領(lǐng)域內(nèi)處于領(lǐng)先地位的成績(jī),僅僅一個(gè)三層的網(wǎng)絡(luò)(一個(gè)卷積層和兩個(gè)膠囊層)且并沒有使用過多的訓(xùn)練技巧,其錯(cuò)誤率達(dá)到了0.25%。但由于該網(wǎng)絡(luò)對(duì)比于目前流行傳統(tǒng)CNN模型,其只屬于一個(gè)淺層網(wǎng)絡(luò),故其在較復(fù)雜數(shù)據(jù)集,如ImageNet上的識(shí)別準(zhǔn)確率距離傳統(tǒng)深度CNN網(wǎng)絡(luò)還有一定差距,但未來通過加深網(wǎng)絡(luò)結(jié)構(gòu)、增加訓(xùn)練技巧、改善路由算法等,其在大型數(shù)據(jù)集分類任務(wù)中具有很大的發(fā)展?jié)摿Α?/p>
膠囊網(wǎng)絡(luò)概念在2017年11月才由Hinton等人提出,是當(dāng)前計(jì)算機(jī)視覺領(lǐng)域的最新技術(shù)。目前,在圖像分類及圖像重構(gòu)領(lǐng)域具有開創(chuàng)性意義。但該網(wǎng)絡(luò)訓(xùn)練速度極慢,很大程度由于內(nèi)部循環(huán)的路由協(xié)議算法;此外,目前還不清楚膠囊網(wǎng)路是否可以增大網(wǎng)絡(luò)深度,用于規(guī)模更大的樣本數(shù)據(jù)集。
本節(jié)圖像分類性能評(píng)估實(shí)驗(yàn)主要分為5部分,第1部分以圖像分類精度為標(biāo)準(zhǔn),對(duì)比了卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)圖像分類方法性能的優(yōu)劣;第2部分,以多項(xiàng)性能指標(biāo)綜合分析近幾年比較著名的卷積神經(jīng)網(wǎng)絡(luò)模型,并進(jìn)一步驗(yàn)證各模型的優(yōu)缺點(diǎn)。第3部分,針對(duì)3.3節(jié)所述訓(xùn)練模型過程中遇到的較普遍的過擬合問題展開實(shí)驗(yàn),說明常見模型中所運(yùn)用到的過擬合策略以及各策略對(duì)模型精度的影響。第4部分,參照3.1節(jié)公開數(shù)據(jù)集構(gòu)建方法及一些構(gòu)建準(zhǔn)則,通過實(shí)驗(yàn)來說明數(shù)據(jù)集樣本構(gòu)建方法及樣本規(guī)模對(duì)現(xiàn)有模型訓(xùn)練的影響。第5部分,通過實(shí)驗(yàn)分析生成式對(duì)抗網(wǎng)絡(luò)及膠囊網(wǎng)絡(luò)的優(yōu)勢(shì)與缺陷。
下面以MNIST數(shù)據(jù)集為載體,綜合比較基于卷積神經(jīng)網(wǎng)絡(luò)、基于K最近鄰(k-Nearest Neighbor, KNN)[10]以及基于多層感知機(jī)(Multi Layer Perception, MLP)[54]在簡(jiǎn)單圖像多分類任務(wù)中的性能。
(1)基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類:利用tensorflow[55]我們?cè)O(shè)計(jì)了一個(gè)簡(jiǎn)單的CNN網(wǎng)絡(luò)來進(jìn)行圖像分類,該網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示,該圖為tensorboard[56]導(dǎo)出圖。該CNN網(wǎng)絡(luò)一共分為5層:輸入層、兩個(gè)卷積層以及兩個(gè)全連接層。利用交叉熵?fù)p失函數(shù),基于誤差來進(jìn)行反向傳播(Back Propagation, BP)[57]訓(xùn)練。本次訓(xùn)練的模型的初始權(quán)重采用截?cái)嗟碾S機(jī)正態(tài)分布,學(xué)習(xí)率為0.1,共迭代了6000次。
圖6給出了準(zhǔn)確率隨迭代次數(shù)的變化情況,由圖6可知在為訓(xùn)練模型過程中,隨著迭代次數(shù)的增加,其在測(cè)試集上的準(zhǔn)確率變化,準(zhǔn)確率最終穩(wěn)定維持在98.5%以上,可見CNN在MNIST數(shù)據(jù)集上的分類性能相當(dāng)好。
(2)基于多層感知機(jī)的圖像分類:所謂多層感知機(jī),即指含有多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),其隱藏層全為全連接層。為了便于比較,同樣在tensorflow上設(shè)計(jì)了一個(gè)含有兩個(gè)隱層的多層感知機(jī),所用的激活函數(shù)、損失函數(shù)及初始權(quán)重均與CNN網(wǎng)絡(luò)相同,經(jīng)過訓(xùn)練,發(fā)現(xiàn)其最終準(zhǔn)確率在96%左右,與CNN網(wǎng)絡(luò)還是有一定差距。
圖5 CNN網(wǎng)絡(luò)模型
(3)基于K最近鄰的圖像分類:用K最近鄰對(duì)圖像進(jìn)行分類主要分為以下四個(gè)步驟:(a)計(jì)算訓(xùn)練樣本與測(cè)試樣本間的距離;(b)對(duì)樣本距離升序排列;(c)選前K個(gè)距離最小的樣本;(d)根據(jù)樣本對(duì)數(shù)據(jù)進(jìn)行投票,得到分類結(jié)果。同樣使用tensorflow進(jìn)行實(shí)驗(yàn),共進(jìn)行了200組測(cè)試,每組測(cè)試隨機(jī)從測(cè)試集中選取1張圖像進(jìn)行預(yù)測(cè),并與標(biāo)簽值進(jìn)行比較,最后得到平均準(zhǔn)確率約為89.5%。
圖6 準(zhǔn)確率隨迭代次數(shù)的變化
綜上所述,給出CNN、MLP、KNN算法準(zhǔn)確率比較如表3所示。
表3 CNN、MLP、KNN算法準(zhǔn)確率比較
由表3可以看出,基于神經(jīng)網(wǎng)絡(luò)多層感知機(jī)算法對(duì)比傳統(tǒng)的機(jī)器學(xué)習(xí)方法K最近鄰算法在圖像分類上存在較大優(yōu)勢(shì),然而基于神經(jīng)網(wǎng)絡(luò)改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)在圖像分類上性能更是遙遙領(lǐng)先。
為了更好地分析近幾年卷積神經(jīng)網(wǎng)絡(luò)模型的性能及展示模型訓(xùn)練及評(píng)估方法,下面以CIFAR-10數(shù)據(jù)集為載體,從頭訓(xùn)練目前較為流行的AlexNet- 8、VGGNet-16、GoogLeNet-22、ResNet-50、ResNet-101模型,“-”后為網(wǎng)絡(luò)層數(shù)。
本次實(shí)驗(yàn)采用單片Tesla M40 GPU(顯存12G),通過tensorflow進(jìn)行訓(xùn)練,其訓(xùn)練過程仍采用tensorboard進(jìn)行可視化。為了便于實(shí)驗(yàn)比較,本次訓(xùn)練的所有模型采用的優(yōu)化算法均為rmsprop[58],其優(yōu)化器參數(shù)及訓(xùn)練技巧也都相同。本次訓(xùn)練結(jié)果不代表各模型的最優(yōu)性能,一個(gè)模型性能的好壞并不由模型結(jié)構(gòu)完全決定,后期的優(yōu)化(如參數(shù)調(diào)優(yōu)、訓(xùn)練技巧的合理使用)也尤為重要。因此本次實(shí)驗(yàn)僅考慮模型本身帶來的性能差異。
訓(xùn)練過程中模型損失值的變化如圖7(a)所示,該5個(gè)模型使用了相同的優(yōu)化算法及相應(yīng)參數(shù),相同的退化學(xué)習(xí)率(即學(xué)習(xí)率會(huì)隨著迭代次數(shù)增多自適應(yīng)下降),因此損失值的變化過程主要由模型結(jié)構(gòu)決定。從該圖可以看出除了AlexNet- 8在迭代了10萬次后,損失值幾乎為0,其他模型的損失值波動(dòng)均在20萬次~30萬次之間達(dá)到穩(wěn)定,可認(rèn)為模型訓(xùn)練收斂。損失值反應(yīng)了訓(xùn)練樣本通過模型預(yù)測(cè)的準(zhǔn)確程度,即損失值越大,模型對(duì)訓(xùn)練樣本的刻畫越不精確。因此,當(dāng)模型收斂時(shí),AlexNet- 8對(duì)訓(xùn)練集樣本刻畫最為精確,GoogLeNet較其他模型損失略大。
圖7 CNN模型訓(xùn)練
圖7(b)反應(yīng)了CNN各模型每秒迭代次數(shù)對(duì)比,可以發(fā)現(xiàn)并不是模型層數(shù)越多,每秒迭代次數(shù)越少。GoogLeNet-22雖然有22層,卻是所有參加對(duì)比的模型中迭代速度最快的,達(dá)到每秒迭代7次左右。這主要得益于GoogLeNet-22的模型結(jié)構(gòu),使得其參數(shù)僅為500萬,為AlexNet- 8參數(shù)量的1/12。其引入的inception模塊在減少參數(shù)量上厥功至偉,同時(shí)又使模型不失表達(dá)能力。對(duì)于具有相同結(jié)構(gòu)的模型,僅層數(shù)加深,其訓(xùn)練時(shí)間跟層數(shù)呈正相關(guān),如本次試驗(yàn)中ResNet-50每秒約能迭代3.5次而ResNet-101僅為2次。
以上所訓(xùn)練模型在CIFAR-10數(shù)據(jù)集上錯(cuò)誤率見表4所示。
由表4可以看出其所有模型在訓(xùn)練集Top-1錯(cuò)誤率遠(yuǎn)低于測(cè)試集Top-1錯(cuò)誤率,說明在訓(xùn)練模型時(shí)均產(chǎn)生了嚴(yán)重的過擬合現(xiàn)象。表3中ResNet-50在CIFAR-10測(cè)試集上Top-1錯(cuò)誤率表現(xiàn)反而略高于ResNet-101,但也不代表深度增加就毫無意義,如表1中ResNet在ImageNet測(cè)試集上Top-1錯(cuò)誤率隨著深度的增加而減小。但從上可分析得出模型的深度與數(shù)據(jù)集的復(fù)雜度存在著密切的聯(lián)系。表4中各模型,除了AlexNet- 8,其他模型在測(cè)試集上Top-1錯(cuò)誤率基本都已控制在10%以內(nèi),Top-3錯(cuò)誤率在1.6%以內(nèi),其性能相當(dāng)優(yōu)秀。綜合考慮訓(xùn)練時(shí)間和測(cè)試集準(zhǔn)確率,在本次對(duì)比實(shí)驗(yàn)中,GoogleNet和ResNet網(wǎng)絡(luò)較為優(yōu)秀,其中ResNet由于Residual結(jié)構(gòu)的引入使得CNN模型深度的不斷增加成為可能,相信未來圖像分類模型在這兩個(gè)模型基礎(chǔ)上進(jìn)行改進(jìn)(如引入新的模塊、增加新的訓(xùn)練技巧、參數(shù)進(jìn)一步調(diào)優(yōu)等)會(huì)取得更優(yōu)的性能。
由于在訓(xùn)練基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類模型中,層次較深的網(wǎng)絡(luò)不可避免的會(huì)產(chǎn)生過擬合現(xiàn)象,為了盡量減少過擬合問題帶來對(duì)模型正確率的影響,一系列策略被用于CNN模型。下面僅以ResNet模型為例,通過對(duì)比試驗(yàn)說明以下三種減緩過擬合策略對(duì)模型精度產(chǎn)生的影響。
(1)通過增加數(shù)據(jù)量來減少模型的過擬合。此策略往往效果最佳,但對(duì)于數(shù)據(jù)的收集卻是一大考驗(yàn),以此受到啟發(fā),產(chǎn)生了數(shù)據(jù)增強(qiáng)技術(shù)。本實(shí)驗(yàn)通過對(duì)比經(jīng)過數(shù)據(jù)增強(qiáng)以及未經(jīng)過數(shù)據(jù)增強(qiáng)訓(xùn)練的模型來分析該技術(shù)對(duì)模型精度的影響,其中所使用的數(shù)據(jù)增強(qiáng)技術(shù)主要為隨機(jī)增加訓(xùn)練集圖像的對(duì)比度、亮度、色度和飽和度,并將經(jīng)過預(yù)處理后的圖像一并加入訓(xùn)練集用于模型訓(xùn)練。如表5所示,在同一數(shù)據(jù)集上,使用數(shù)據(jù)增強(qiáng)技術(shù)與未使用此技術(shù)在模型精度上足足相差三個(gè)百分點(diǎn),證明數(shù)據(jù)增強(qiáng)技術(shù)不失為一種解決過擬合問題好的策略。
表4 基于CNN圖像分類模型在CIFAR-10數(shù)據(jù)集上錯(cuò)誤率對(duì)比
表5 數(shù)據(jù)增強(qiáng)技術(shù)對(duì)模型準(zhǔn)確率影響
(2)通過使用批次歸一化來減少過擬合風(fēng)險(xiǎn)。關(guān)于批次歸一化技巧減少過擬合風(fēng)險(xiǎn)的有效性已在文獻(xiàn)[59]中進(jìn)行了理論證明,下面通過對(duì)比實(shí)驗(yàn)說明ResNet模型逐層使用批次歸一化兩種方式對(duì)模型精度的影響,其中方式一是在每個(gè)激活層之前使用批次歸一化;方式二是在每個(gè)激活層之后使用批次歸一化。為了便于訓(xùn)練,該實(shí)驗(yàn)使用flowers數(shù)據(jù)集(訓(xùn)練數(shù)據(jù)集大小為3320,測(cè)試數(shù)據(jù)集大小為350,分類個(gè)數(shù)為5)以及CIFAR-10上分別訓(xùn)練,如表6所示,可發(fā)現(xiàn)模型準(zhǔn)確率在使用方式一較之方式二有明顯優(yōu)勢(shì),故單從批次歸一化對(duì)模型精度的影響來看,建議在工程實(shí)踐中采用方式一。
表6 批次歸一化方式對(duì)模型準(zhǔn)確率的影響
(3)通過減少CNN模型卷積層數(shù)來降低模型復(fù)雜度,以此緩解過擬合。該對(duì)比實(shí)驗(yàn)如表7所示,其實(shí)驗(yàn)數(shù)據(jù)來源于文獻(xiàn)[35],該實(shí)驗(yàn)證明了過高的模型層數(shù)(表中模型層數(shù)為1202)反而會(huì)帶來模型精度的下降,因此在訓(xùn)練模型時(shí),可以根據(jù)數(shù)據(jù)集的大小及復(fù)雜度適當(dāng)增加或刪減卷積層數(shù),以此減緩過擬合帶來的對(duì)模型準(zhǔn)確率的影響。
基于圖像分類任務(wù)的需要,數(shù)據(jù)集的構(gòu)建往往決定著模型的訓(xùn)練效果,故在工程實(shí)踐中,構(gòu)建圖像分類任務(wù)所需的數(shù)據(jù)集也是一門學(xué)問。受上文中公開數(shù)據(jù)集構(gòu)建方法的啟發(fā),構(gòu)建數(shù)據(jù)集可分為訓(xùn)練數(shù)據(jù)集(需按照?qǐng)D像標(biāo)簽類別分類存放)、測(cè)試數(shù)據(jù)集(需按照?qǐng)D像標(biāo)簽類別分類存放)以及標(biāo)簽文件(訓(xùn)練數(shù)據(jù)及測(cè)試數(shù)據(jù)圖像的類別標(biāo)簽) 三部分,其中訓(xùn)練數(shù)據(jù)集及測(cè)試數(shù)據(jù)集需滿足互斥關(guān)系,非嚴(yán)格意義的獨(dú)立同分布(各類別的樣本數(shù)據(jù)量盡量相同)。下面對(duì)樣本規(guī)模和CNN模型之間的關(guān)系作簡(jiǎn)要說明,樣本規(guī)模和CNN模型的復(fù)雜度呈正相關(guān),模型的復(fù)雜度越高,意味著該模型能表示相對(duì)更多、更復(fù)雜的數(shù)據(jù)關(guān)系。因此,選擇適合實(shí)際應(yīng)用的樣本規(guī)模也尤為重要。
下面通過實(shí)驗(yàn)說明數(shù)據(jù)集樣本構(gòu)建方法及樣本規(guī)模對(duì)現(xiàn)有模型訓(xùn)練的影響。所選用的待測(cè)試模型為ResNet-50,數(shù)據(jù)集仍為flowers, 為了測(cè)試樣本規(guī)模對(duì)現(xiàn)有模型的影響,重構(gòu)flowers的訓(xùn)練集,將原本擁有3320個(gè)標(biāo)注樣本的訓(xùn)練數(shù)據(jù)集隨機(jī)縮減為2500和1500進(jìn)行重新訓(xùn)練及評(píng)估性能,而后又使用數(shù)據(jù)增強(qiáng)技術(shù)在原數(shù)據(jù)集上擴(kuò)充數(shù)據(jù)集并進(jìn)行相應(yīng)實(shí)驗(yàn),所使用數(shù)據(jù)增強(qiáng)技術(shù)的方法與4.3(a)中所述一致。其實(shí)驗(yàn)結(jié)果如表8所示。
表7 模型層數(shù)對(duì)模型準(zhǔn)確率的影響
表8 數(shù)據(jù)樣本規(guī)模對(duì)CNN影響
由表8可見,在未使用數(shù)據(jù)增強(qiáng)技術(shù)的情況下,訓(xùn)練模型迭代收斂次數(shù)與訓(xùn)練樣本數(shù)呈負(fù)相關(guān),模型測(cè)試準(zhǔn)確率則與訓(xùn)練樣本數(shù)基本呈正相關(guān);在樣本規(guī)模較小的情況下,訓(xùn)練模型在訓(xùn)練數(shù)據(jù)集上擬合效果越好,當(dāng)訓(xùn)練樣本規(guī)模為1500時(shí),其在收斂時(shí)的損失值近乎為0,在訓(xùn)練集上的準(zhǔn)確率也為實(shí)驗(yàn)中最高,達(dá)到了99.67%。在使用數(shù)據(jù)增強(qiáng)技術(shù)的情況下,由于其本質(zhì)是在原始圖像上隨機(jī)加入噪聲構(gòu)成新圖像,然后再加入原訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,故訓(xùn)練集中許多樣本的相似度很高,通過實(shí)驗(yàn)可發(fā)現(xiàn),模型在達(dá)到收斂時(shí),其迭代收斂次數(shù)僅為5.5萬,遠(yuǎn)低于沒通過數(shù)據(jù)增強(qiáng)技術(shù)擴(kuò)充數(shù)據(jù)集的原訓(xùn)練數(shù)據(jù)集;其次,雖然該技術(shù)在收斂時(shí)損失值為0.3,但在訓(xùn)練集上的準(zhǔn)確率達(dá)到了99.26%,擬合相當(dāng)良好,且在測(cè)試集上的準(zhǔn)確率達(dá)到了88.75%,為所測(cè)試實(shí)驗(yàn)中最高。
由以上實(shí)驗(yàn)分析,可得出以下結(jié)論:(a)在條件允許的情況下,對(duì)于傳統(tǒng)深層次CNN模型,采集的樣本規(guī)模越大越好。關(guān)于現(xiàn)有較深層次CNN模型是否能夠承載龐大數(shù)據(jù)集的能力,論文[60]驗(yàn)證了通過擴(kuò)充數(shù)據(jù)集至比ImageNet數(shù)據(jù)集大200多倍的數(shù)據(jù)集在比沒擴(kuò)充前的訓(xùn)練效果好,可見現(xiàn)有CNN模型具有至少200個(gè)ImageNet樣本規(guī)模大小的模型承載能力。(b)在無法采集足夠多的標(biāo)記樣本的情況下,可通過數(shù)據(jù)增強(qiáng)技術(shù)擴(kuò)充數(shù)據(jù)集以提高模型泛化性能。
為了更好地分析生成式對(duì)抗網(wǎng)絡(luò)和膠囊網(wǎng)絡(luò)優(yōu)缺點(diǎn),下面通過實(shí)驗(yàn)進(jìn)行說明:
(1)生成式對(duì)抗網(wǎng)絡(luò):該網(wǎng)絡(luò)性能在有監(jiān)督圖像分類領(lǐng)域較之傳統(tǒng)CNN網(wǎng)絡(luò)并沒有明顯優(yōu)勢(shì),但在半監(jiān)督甚至無監(jiān)督圖像分類領(lǐng)域其性能良好,下面以Conv-CatGAN為例,說明其在圖像分類半監(jiān)督領(lǐng)域貢獻(xiàn)。如表9所示,表中k的值表示從訓(xùn)練集中隨即均勻選出已標(biāo)注樣本數(shù)據(jù),訓(xùn)練集中其余樣本不提供樣本標(biāo)注,使用Conv-CatGAN進(jìn)行半監(jiān)督訓(xùn)練,雖然其準(zhǔn)確率沒有有監(jiān)督訓(xùn)練高,但其需要的標(biāo)注樣本數(shù)甚至不足原樣本數(shù)的百分之一,可見此網(wǎng)絡(luò)的潛力之大。但該網(wǎng)絡(luò)的結(jié)構(gòu)特性導(dǎo)致了其不容易訓(xùn)練,文獻(xiàn)[52]提供了在此方面的幫助,并進(jìn)一步提高了生成式對(duì)抗網(wǎng)絡(luò)在圖像分類任務(wù)的性能。
(2)膠囊網(wǎng)絡(luò):為了更好地分析模型性能,該實(shí)驗(yàn)主要考量在MNIST數(shù)據(jù)集上的分類測(cè)試準(zhǔn)確率、訓(xùn)練收斂時(shí)的損失值(該損失值為膠囊網(wǎng)絡(luò)用于圖像分類的損失值),以及模型達(dá)到收斂的迭代次數(shù)來說明膠囊網(wǎng)絡(luò)的潛力,如表10所示。該實(shí)驗(yàn)中,每次模型迭代中,其路由算法迭代次數(shù)為3,所訓(xùn)練模型基于原論文的邊緣損失與重構(gòu)損失之和,以此達(dá)到圖像分類更好的效果。
結(jié)果顯示模型達(dá)到收斂時(shí),其迭代次數(shù)為6萬次,這在不使用過多優(yōu)化技巧的情況下,其收斂速度屬上乘水平;模型收斂損失值達(dá)到了4.99×10-4,準(zhǔn)確率達(dá)到了99.64%,該模型對(duì)MNIST數(shù)據(jù)集的刻畫能力可媲美CNN深層模型,在文獻(xiàn)[47]中,通過集成7個(gè)膠囊網(wǎng)絡(luò)對(duì)CIFAR-10數(shù)據(jù)集進(jìn)行訓(xùn)練,其在測(cè)試集上的準(zhǔn)確率為10.6%,相比于最優(yōu)CNN網(wǎng)絡(luò)還存在一定差距。未來通過優(yōu)化算法加深模型深度,其對(duì)復(fù)雜數(shù)據(jù)集的刻畫能力有望超越CNN模型。
此外,該模型的另一大優(yōu)勢(shì)在于對(duì)重疊圖像的識(shí)別,Hinton等人在MultiMNIST數(shù)據(jù)集上進(jìn)行訓(xùn)練,該數(shù)據(jù)集基于MNIST數(shù)據(jù)集進(jìn)行重構(gòu),使得每幅圖像中有兩個(gè)數(shù)字,且兩個(gè)數(shù)字的平均重疊率為80%,在每次模型迭代中,其路由算法迭代次數(shù)設(shè)置為3,所訓(xùn)練模型同樣基于邊緣損失和重構(gòu)損失[47],此時(shí)其在測(cè)試集上的準(zhǔn)確率達(dá)到94.8%。
表9 生成式對(duì)抗網(wǎng)絡(luò)性能分析
表10 膠囊網(wǎng)絡(luò)性能分析
本文對(duì)基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類進(jìn)行了介紹。首先回顧了傳統(tǒng)圖像分類方法及其存在問題,以及卷積神經(jīng)網(wǎng)絡(luò)在圖像分類任務(wù)上的優(yōu)越性;其次,介紹了神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),而后在此基礎(chǔ)上介紹了卷積神經(jīng)網(wǎng)絡(luò)特有的池化層及卷積層的結(jié)構(gòu)特點(diǎn)和功能作用;然后,介紹了目前較先進(jìn)的基于卷積神經(jīng)網(wǎng)絡(luò)的分類方法,包括此類方法所運(yùn)用的圖像分類數(shù)據(jù)集和卷積神經(jīng)網(wǎng)絡(luò)模型、優(yōu)缺點(diǎn)、時(shí)間/空間復(fù)雜度、模型訓(xùn)練過程中可能存在的問題及改進(jìn)方案,與此同時(shí)也對(duì)基于深度學(xué)習(xí)的圖像分類拓展模型的生成式對(duì)抗網(wǎng)絡(luò)、膠囊網(wǎng)路進(jìn)行介紹;最后,對(duì)基于卷積神經(jīng)網(wǎng)絡(luò)的分類方法和傳統(tǒng)的機(jī)器學(xué)習(xí)圖像分類方法作了個(gè)對(duì)比,以此說明卷積神經(jīng)網(wǎng)絡(luò)在圖像分類任務(wù)上的優(yōu)勢(shì);同時(shí),對(duì)目前較為流行的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了訓(xùn)練及模型性能評(píng)估實(shí)驗(yàn),以此比較各模型的性能及說明訓(xùn)練中的注意事項(xiàng);再者,還對(duì)過擬合問題、數(shù)據(jù)集構(gòu)建方法提出可參考性建議并通過實(shí)驗(yàn)驗(yàn)證其有效性。盡管,基于卷積神經(jīng)網(wǎng)絡(luò)的方法對(duì)于一些簡(jiǎn)單的圖像分類任務(wù)取得了很好的效果,但對(duì)于一些復(fù)雜的圖像分類其性能還有待提高,如圖像分類的一個(gè)分支人臉識(shí)別[61],由于光照、姿態(tài)、遮擋、年齡變化、海量數(shù)據(jù)等問題,其在精度及識(shí)別速度上仍然有待提高。其次,圖像分類不僅僅是一個(gè)獨(dú)立的任務(wù),更是眾多圖像處理任務(wù)的基礎(chǔ),如在目標(biāo)檢測(cè)的任務(wù)中,Cao等人先對(duì)圖像進(jìn)行分類以獲得先驗(yàn)知識(shí),再進(jìn)行圖像中目標(biāo)識(shí)別的算法,對(duì)識(shí)別的精度產(chǎn)生了積極的影響[62]。再者,對(duì)基于半監(jiān)督甚至無監(jiān)督以及重疊圖像分類任務(wù)的研究才剛剛起步,如何將卷積神經(jīng)網(wǎng)絡(luò)更好地運(yùn)用此領(lǐng)域(如結(jié)合膠囊網(wǎng)絡(luò)、生成式對(duì)抗網(wǎng)絡(luò)等)是未來研究熱點(diǎn)。因此,還需對(duì)基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類開展更加深入的研究。