謝沛松,胡黃水,張金棟
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,吉林 長春 130012)
目前,圖像分類廣泛應(yīng)用于醫(yī)學(xué)圖像、人臉識別[1]、交通車牌識別等領(lǐng)域[2]。因此,準(zhǔn)確的圖像分類方法成為圖像處理方面的研究熱點(diǎn)。傳統(tǒng)機(jī)器學(xué)習(xí)如最小距離分類方法簡單卻適應(yīng)性差,支持向量機(jī)分類法泛化能力好卻只適合小數(shù)據(jù)量樣本,K最優(yōu)近鄰算法無需參數(shù)估計(jì)和訓(xùn)練,但依然只應(yīng)用于數(shù)據(jù)量小模型。隨著信息技術(shù)的發(fā)展,深度學(xué)習(xí)逐漸用于海量數(shù)據(jù)時(shí)的圖像分類[3]。
自2012年Krizhevsky A等[4]在ILSVRC大賽中提出AlexNet經(jīng)典模型,人工神經(jīng)網(wǎng)絡(luò)(ANN)再次走進(jìn)人們視野,深度學(xué)習(xí)開始廣泛用于圖像分類,并獲得超越以往算法的成績后,在AlexNet模型中大量使用卷積池化,增加了網(wǎng)絡(luò)特征,并采用Relu[5]函數(shù)作為激活函數(shù)。文獻(xiàn)[6]提出GoogLeNet網(wǎng)絡(luò)模型,其中提出Inception V1結(jié)構(gòu)模型用不同尺寸的卷積核提取特征,增加了特征提取寬度,提高了模型預(yù)測率。而后為了克服參數(shù)過大,提出了Inception V2[7]、Inception V3[8]結(jié)構(gòu)。Lecun Y等[9]第一次用LeNet-5實(shí)現(xiàn)了手寫數(shù)字的分類,近年來,LeNet-5被多次改進(jìn)應(yīng)用于多個(gè)領(lǐng)域,而且取得良好效果。文獻(xiàn)[10]對LeNet-5網(wǎng)絡(luò)的框架調(diào)整,增加了卷積層和池化層的個(gè)數(shù),調(diào)整網(wǎng)絡(luò)內(nèi)部參數(shù),在人臉表情識別上取得較好成績。文獻(xiàn)[11]提出把Inception V1模塊嵌入LeNet-5網(wǎng)絡(luò)中,加大提取圖像的多尺度特征,引入跨連思想,充分利用低層次特征,在復(fù)雜紋理圖像中具有良好的分類能力。文獻(xiàn)[12]在識別形狀類似物體時(shí)提出將LeNet-5卷積層改變?yōu)殡p層非對稱卷積,降低提取特征的參數(shù),采取全局平均池化替換Flatten層,能快速收斂且各項(xiàng)指標(biāo)均優(yōu)于原網(wǎng)絡(luò)。LeNet-5存在網(wǎng)絡(luò)訓(xùn)練參數(shù)大、準(zhǔn)確率不夠高、容易過擬合等問題,因此文中提出一種改進(jìn)LeNet-5的圖像分類方法ILIC(Improved LeNet-5 model for Images Classification),在降低參數(shù)與過擬合的同時(shí)提升分類準(zhǔn)確率,比較不同batch_size大小模型準(zhǔn)確率,調(diào)試出最佳模型。
LeNet-5模型是Lecun Y等[9]提出的經(jīng)典CNN模型,早期,美國大多數(shù)銀行都采用LeNet-5模型識別支票上的手寫數(shù)字,其準(zhǔn)確性非常好。LeNet-5模型結(jié)合了特征提取和圖像識別。這是一個(gè)自學(xué)習(xí)過程,包括集成學(xué)習(xí)、反向傳播和選擇優(yōu)化,經(jīng)典的LeNet-5卷積網(wǎng)絡(luò)由一個(gè)輸入層、兩個(gè)卷積層、兩個(gè)池化層、兩個(gè)全連接層和一個(gè)輸出層組成。
傳統(tǒng)的LeNet-5網(wǎng)絡(luò)中,卷積層C1輸入圖像尺寸32*32,經(jīng)過一個(gè)步長為2的5*5卷積核,尺寸變?yōu)?8*28,且featuer maps為6,卷積層計(jì)算過程
(1)
式中:X——輸入需要卷積的M區(qū)域元素;
i,j——位置坐標(biāo);
W——卷積核元素;
m,n——卷積核尺寸;
b——偏移量;
f(*)——sigmod激活函數(shù)。
然后池化層S2的feature maps從6*28*28經(jīng)過2*2尺寸最大池化層變?yōu)?*14*14,特征圖大小減半,即得到最大池化,池化層計(jì)算過程為
pool=D(max(Yi,j)),i,j∈p,
(2)
式中:Y——池化區(qū)域p中的元素;
i,j——元素坐標(biāo);
D(*)——下采樣。
卷積層C3、池化層S4重復(fù)上述操作,得到16*5*5的feature maps,再執(zhí)行一次卷積核大小5*5,步長為1的卷積操作,得到1*120全連接層,最后連接1*84全連接層、1*10輸出層。
針對LeNet-5網(wǎng)絡(luò)參數(shù)過多、識別圖像準(zhǔn)確率低等缺點(diǎn),提出在傳統(tǒng)模型的基礎(chǔ)上,添加Inception V1模塊,增加網(wǎng)絡(luò)特征提取寬度。為了降低模型參數(shù),能在計(jì)算機(jī)資源占用量小的情況下實(shí)現(xiàn)網(wǎng)絡(luò)訓(xùn)練,提出使用連續(xù)非對稱卷積代替?zhèn)鹘y(tǒng)的大尺度卷積核,增加卷積核數(shù)量(fliter),并去掉最后的兩層全連接層,卷積層激活函數(shù)改為Relu函數(shù),使網(wǎng)絡(luò)更加有效率地梯度下降以及反向傳播,避免了梯度爆炸和梯度消失問題,文中改進(jìn)網(wǎng)絡(luò)的訓(xùn)練模型如圖1所示。
對輸入28*28圖片分別進(jìn)行卷積核大小為5*1、1*5的連續(xù)非對稱卷積提取圖像低維特征,其中步長(strides)為1,卷積核數(shù)量(fliters)為24,得到24*24*24的特征圖;然后經(jīng)過BN層批量標(biāo)準(zhǔn)化數(shù)據(jù),特征圖大小不改變;再通過最大池化層(Maxpool),poo_size為(2,2),strides設(shè)置為2,特征圖大小減半為24*12*12;Inception V1模塊設(shè)置每個(gè)通道卷積核數(shù)量為16,則輸出特征圖為64*12*12;再次經(jīng)過5*1、1*5連續(xù)非對稱卷積,其中步長(strides)為1,卷積核數(shù)量(fliters)為48,得到48*8*8的特征圖;又經(jīng)過BN層批量歸一化數(shù)據(jù);再經(jīng)過最大池化層(Maxpool),參數(shù)設(shè)置同第一次,得到48*4*4的特征圖;Flatten層將數(shù)據(jù)打平變成一維786*1,最后通過全連接層Softmax函數(shù)分類輸出,選擇交叉熵作分類器的損失函數(shù)改進(jìn)網(wǎng)絡(luò)參數(shù)[13-14],此次實(shí)驗(yàn)仿真里ILIC網(wǎng)絡(luò)模型最終訓(xùn)練參數(shù)42 254,對比于原LeNet-5網(wǎng)絡(luò)模型訓(xùn)練參數(shù)44 426,減少了訓(xùn)練參數(shù),ILIC模型參數(shù)見表1。
圖1 改進(jìn)的LeNet-5模型
表1 ILIC模型參數(shù)
整個(gè)網(wǎng)絡(luò)訓(xùn)練分為前向傳播與反向傳播兩個(gè)過程,其中,前向傳播通過人工神經(jīng)網(wǎng)絡(luò)對特征進(jìn)行提取,反向傳播根據(jù)交叉損失熵大小不斷調(diào)整參數(shù),直到模型收斂。
f(·)——Relu激活函數(shù);
downσ,τ(·)——采樣窗口大小為σ*τ的下采樣;
O——輸出層。
其中FilterConcat(·)連接Incepetion V1模塊中的四個(gè)通道,在程序上使用tf.concat將其在第三維度上合并。
Softmax函數(shù)的本質(zhì)是將一個(gè)K維的任意實(shí)數(shù)向量壓縮(映射)成另一個(gè)K維的實(shí)數(shù)向量,其中向量中的每個(gè)元素取值都介于(0,1)之間,而且所有元素之和為1,計(jì)算公式為
(4)
式中:j——輸出類別,j=1,2,…,K。
再對Softmax函數(shù)求導(dǎo)
(5)
反向傳播算法的參數(shù)更新采用隨機(jī)梯度下降法(Stochastic Gradient Descent, SGD),文中利用多元交叉熵?fù)p失函數(shù)來評價(jià)模型的預(yù)測值與真實(shí)值的差距
(6)
式中:y——實(shí)際標(biāo)簽;
a——預(yù)測輸出。
計(jì)算參數(shù)wj,bj的梯度,設(shè)zj=xj·wj+bj表示某神經(jīng)元的輸入值,由下式分別對損失函數(shù)中權(quán)值與偏置值求偏導(dǎo),
(7)
(8)
那么由式(5)可得
(10)
(11)
最后由如下公式對每一層wj,bj進(jìn)行權(quán)值更新:
(12)
(13)
式中:η——學(xué)習(xí)率,一般取0.001,用來控制更新步長,通過不斷更新wj,bj值,最后使模型收斂達(dá)到最優(yōu)。
批量標(biāo)準(zhǔn)化(Batch Normalization)[6]是指在網(wǎng)絡(luò)訓(xùn)練中對每個(gè)Batch_size里的數(shù)據(jù)歸一化至均值為0、方差為1。不僅可加速網(wǎng)絡(luò)收斂速度,還可使用較大的學(xué)習(xí)率來訓(xùn)練網(wǎng)絡(luò),改善梯度彌散,提高網(wǎng)絡(luò)的泛化能力,BN層應(yīng)加在卷積層后面和激活函數(shù)前面。設(shè)某Batch_size里數(shù)據(jù)為X={x1,x2,…,xm},那么數(shù)據(jù)的均值
(14)
其中,xi表示X中第i個(gè)數(shù)據(jù),計(jì)算X方差公式
(15)
(16)
式中:ε——微小的常數(shù),作用是防止分母為零。
再進(jìn)行尺度縮放與偏移操作
(17)
這樣可以變換回原始分布,實(shí)現(xiàn)恒等變換,Yi就是網(wǎng)絡(luò)的最終輸出。
對于傳統(tǒng)的大卷積核,雖然可以獲得更大的感受野、更多的特征提取,但是也會相應(yīng)帶來更多網(wǎng)絡(luò)參數(shù),在小分辨率圖像中可以使用連續(xù)非對稱的卷積核替換傳統(tǒng)卷積核,能擁有更深層網(wǎng)絡(luò)且有更多非線性變換降低過擬合,還能大量減少網(wǎng)絡(luò)參數(shù)[11]。
連續(xù)非對稱卷積原理如圖2所示。
圖2 連續(xù)非對稱卷積原理圖
對于輸入5*5圖像進(jìn)行3*1卷積,如果padding參數(shù)選用vaild,那么卷積運(yùn)算次數(shù)為45,得到特征圖3*5。再對其進(jìn)行卷積核1*3的卷積運(yùn)算,運(yùn)算次數(shù)為27,得到特征圖3*3??偣策\(yùn)算次數(shù)為72,則連續(xù)非對稱卷積相比原來3*3卷積核的運(yùn)算次數(shù)81次減少了9次。當(dāng)卷積核越大,減少的次數(shù)越多。如果以1*n、n*1卷積核來代替n*n卷積核,實(shí)現(xiàn)一組卷積,分別需要2*n、n*n次運(yùn)算,那么連續(xù)非對稱卷積運(yùn)算次數(shù)為后者的2/n。
Inception V1模塊由文獻(xiàn)[5]首次提出,如圖3所示。
圖3 Inception V1模塊
將1*1、3*3、5*5卷積層與3*3池化層堆疊在一起,增加了網(wǎng)絡(luò)的寬度,也增加了網(wǎng)絡(luò)對尺度的適應(yīng)性,通過最后濾波連接獲得非線性屬性。但是因?yàn)?*5卷積核需要大量卷積運(yùn)算,所以GoogLeNet借鑒了Network-in-Network的思想,使用1*1的卷積核實(shí)現(xiàn)降維操作,以此減小網(wǎng)絡(luò)的參數(shù)量。在3*3、5*5卷積核前面、3*3池化后面加入1*1卷積核,降低了輸入信道數(shù)量,能有效減小計(jì)算成本。
盡管Inception模塊在后來有許多更好的變體[16],文中采用最傳統(tǒng)的版本,原因是考慮到網(wǎng)絡(luò)復(fù)雜度低,數(shù)據(jù)集小,在計(jì)算力充足范圍內(nèi)無需做出更多降維操作,以避免造成信息過多損失。
文中實(shí)驗(yàn)所用軟件平臺為Tensorflow2.0,python3.8,pycharm,硬件GPU為GTX3090,24 G。
Fashion MNIST數(shù)據(jù)集是代替MNIST手寫數(shù)據(jù)集的圖像數(shù)據(jù)集,其中共有10個(gè)類別,60 000張訓(xùn)練圖,10 000張測試圖,圖像為28*28的灰度圖像,主要圖像內(nèi)容為服飾、鞋子、包等,F(xiàn)ashion MNIST數(shù)據(jù)集圖像如圖4所示。
由于圖片尺寸小、內(nèi)容不清楚等給分類帶來一定挑戰(zhàn),所以在每個(gè)batch_size里隨機(jī)地對圖像進(jìn)行寬度偏移、高度偏移、水平翻轉(zhuǎn)操作,增強(qiáng)數(shù)據(jù)特征提取多樣性,并將輸入除以數(shù)據(jù)集的標(biāo)準(zhǔn)差以完成標(biāo)準(zhǔn)化。
圖4 Fashion MNIST數(shù)據(jù)集圖像
首先對ILIC網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,優(yōu)化器選擇Adam函數(shù),學(xué)習(xí)率設(shè)置為0.001,epoch設(shè)置100,選擇交叉驗(yàn)證法更新網(wǎng)絡(luò)參數(shù),打開Tensorboard可視化,為防止過擬合,在Flatten層與輸出層添加Dropout層,設(shè)置失活率為0.5。因?yàn)椴煌琤atch_size會有不同的訓(xùn)練速度以及訓(xùn)練效果,分別設(shè)置64、128、256三種批次數(shù)量,比較不同batch_size訓(xùn)練效果。當(dāng)輸入batch_size為64時(shí),得到訓(xùn)練集與驗(yàn)證集準(zhǔn)確率、交叉損失熵如圖5所示。
圖5 ILIC網(wǎng)絡(luò)模型準(zhǔn)確率與損失函數(shù)
從圖5可以發(fā)現(xiàn),訓(xùn)練集準(zhǔn)確率隨迭代次數(shù)增加逐漸上升,迭代結(jié)束時(shí)達(dá)到96.2%。而驗(yàn)證集迭代30次以后準(zhǔn)確率基本保持92%以上,不隨訓(xùn)練集準(zhǔn)確率上升而上升。觀察loss曲線發(fā)現(xiàn),迭代30次后,驗(yàn)證集loss穩(wěn)定在0.23左右,最后改進(jìn)后LeNet-5網(wǎng)絡(luò)在測試集上得到準(zhǔn)確率92.1%。
其次再對原LeNet-5網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練以做比較,網(wǎng)絡(luò)參數(shù)設(shè)置采用與上面相同的參數(shù),且設(shè)置Dropout失活率0.5,當(dāng)輸入batch_size為64時(shí),得到訓(xùn)練集與驗(yàn)證集準(zhǔn)確率、交叉損失熵如圖6所示。
圖6 LeNet-5網(wǎng)絡(luò)模型準(zhǔn)確率與損失函數(shù)
從圖6可以發(fā)現(xiàn),原LeNet-5網(wǎng)絡(luò)訓(xùn)練集準(zhǔn)確率大于98%,而驗(yàn)證集準(zhǔn)確率僅達(dá)到90%,兩者相差8%,出現(xiàn)輕微過擬合,最終在測試集上得到準(zhǔn)確率為89.8%。隨著迭代次數(shù)的增加,訓(xùn)練集與測試集loss值反而相差越來越大,驗(yàn)證集loss在不斷增大,即出現(xiàn)了不收斂,與改進(jìn)后的網(wǎng)絡(luò)相比較,改進(jìn)后網(wǎng)絡(luò)收斂性明顯優(yōu)于原網(wǎng)絡(luò)。
針對改進(jìn)前后網(wǎng)絡(luò)輸入batch_size分別為64、128、256做對比實(shí)驗(yàn),參數(shù)設(shè)置保持不變,僅改變batch_size大小,得到測試集準(zhǔn)確率結(jié)果見表2。
表2 不同batch_size網(wǎng)絡(luò)模型準(zhǔn)確率 %
實(shí)驗(yàn)發(fā)現(xiàn),不同的batch_size對準(zhǔn)確率有很大影響,同一網(wǎng)絡(luò)下小量的batch_size輸入可以得到更高的準(zhǔn)確率,雖然小的batch_size能得到更高準(zhǔn)確率,但需花費(fèi)更長訓(xùn)練時(shí)間,所以針對不同的實(shí)驗(yàn)需要尋找合適的batch_size,在保證準(zhǔn)確率的條件下快速完成實(shí)驗(yàn)。
提出一種改進(jìn)LeNet-5的圖像分類方法ILIC,增加了卷積核個(gè)數(shù),引入了Inception V1模塊增加特征提取能力,采用連續(xù)非對稱卷積的方式降低卷積訓(xùn)練參數(shù),并加入批量標(biāo)準(zhǔn)化Dorpout方式增加訓(xùn)練準(zhǔn)確率,實(shí)驗(yàn)仿真表明,文中提出的ILIC方法提高了圖像分類準(zhǔn)確率,改進(jìn)后的網(wǎng)絡(luò)在Fashion MNIST數(shù)據(jù)集上分類準(zhǔn)確率達(dá)92.10%,比原網(wǎng)絡(luò)高2.26%,且改進(jìn)后的網(wǎng)絡(luò)收斂速度更快,產(chǎn)生過擬合的程度低。