岳有軍, 田博凱, 王紅君, 趙 輝,2
(1.天津理工大學(xué)電氣電子工程學(xué)院,天津市復(fù)雜系統(tǒng)控制理論與應(yīng)用重點(diǎn)實(shí)驗(yàn)室,天津 300384;2.天津農(nóng)學(xué)院工程技術(shù)學(xué)院,天津 300384)
蘋果產(chǎn)業(yè)中,對(duì)采摘后的蘋果進(jìn)行外觀分類是一個(gè)重要環(huán)節(jié),在蘋果生長過程中難免會(huì)產(chǎn)生病害導(dǎo)致表面存在病斑或者腐爛現(xiàn)象,所以需要對(duì)采摘后的蘋果進(jìn)行分類。目前大多數(shù)的蘋果外觀分類還是采用人工的方式,這樣會(huì)消耗大量的人力,效率低下,影響后續(xù)蘋果的銷售。因此,實(shí)現(xiàn)對(duì)蘋果外觀快速、準(zhǔn)確分類對(duì)蘋果產(chǎn)業(yè)的快速發(fā)展具有重要意義。
目前對(duì)蘋果的分類識(shí)別研究已經(jīng)取得了一些進(jìn)展,尹秀珍等[1]采用支持向量機(jī)(SVM)的方法,對(duì)蘋果果實(shí)病害進(jìn)行分類識(shí)別;霍迎秋等[2]利用壓縮感知理論,求解待測樣本特征向量在特征矩陣上的稀疏表示系數(shù)向量,通過對(duì)系數(shù)向量的分析實(shí)現(xiàn)蘋果病害的分類; Omrani等[3]利用徑向基函數(shù)的支持向量回歸對(duì)蘋果病害進(jìn)行檢測。Khan等[4]提出一種基于強(qiáng)相關(guān)性和基于特征選擇的遺傳算法對(duì)蘋果病害進(jìn)行分割和識(shí)別。王梓萌等[5]通過主成分分析(PCA)分別與馬氏距離判別模型和Fisher判別模型結(jié)合,比較兩種判別模型對(duì)霉心病的判別精度,完成對(duì)蘋果的霉心病的檢測。由于采摘后的蘋果外觀存在病斑或腐爛的情況在蘋果圖像中的比例較小,不容易分辨,用傳統(tǒng)方法識(shí)別難度較大,很難保證相對(duì)較高的精度。
近年來,隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)開始廣泛應(yīng)用到各行各業(yè)[6-11]。農(nóng)業(yè)方面,王細(xì)萍等[12]通過基于卷積網(wǎng)絡(luò)和時(shí)變沖量學(xué)習(xí)的方法對(duì)蘋果病變圖像進(jìn)行識(shí)別;程鴻芳等[13]利用改進(jìn)LeNet卷積神經(jīng)網(wǎng)絡(luò)的方法對(duì)蘋果圖像進(jìn)行識(shí)別。Muhammad等[14]提出基于相關(guān)系數(shù)和深度卷積神經(jīng)網(wǎng)絡(luò)特征的方法用于果樹病害自動(dòng)分割識(shí)別;Jiang等[15]將改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法應(yīng)用到了檢測蘋果葉片病害中。這些研究表明,卷積神經(jīng)網(wǎng)絡(luò)對(duì)蘋果的外觀分類識(shí)別有很好的應(yīng)用性,克服了傳統(tǒng)方法在效率和精度上的不足。
為了實(shí)現(xiàn)對(duì)采摘后的蘋果進(jìn)行精確的分類識(shí)別,提出了一種基于改進(jìn)VGGNet的識(shí)別方法??紤]到蘋果病斑和腐爛數(shù)據(jù)的多樣性,數(shù)據(jù)集中收集了多種的蘋果病斑和腐爛樣本,并應(yīng)用數(shù)據(jù)增廣技術(shù),增加數(shù)據(jù)集中圖片的數(shù)量,避免網(wǎng)絡(luò)發(fā)生過擬合現(xiàn)象。以構(gòu)建的分類網(wǎng)絡(luò)為基礎(chǔ),將其用于蘋果外觀圖像的特征提取與表達(dá),建立蘋果外觀分類器,并通過實(shí)驗(yàn)檢驗(yàn)本文方法的有效性。
VGGNet網(wǎng)絡(luò)作為一個(gè)經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),主要包含輸入層、卷積層、池化層和全連接層。
卷積層的作用是做特征提取,每個(gè)卷積核與上一層輸入的特征圖進(jìn)行卷積,具體就是卷積核以一定的步長在特征圖上進(jìn)行滑動(dòng),并進(jìn)行卷積運(yùn)算,這樣就能得到此層的特征圖。每一個(gè)卷積核進(jìn)行卷積運(yùn)算后就能得到一個(gè)特征圖,也就是說能提取到一種特征。池化層也叫下采樣層,作用是主要用于特征降維,壓縮數(shù)據(jù)和參數(shù)的數(shù)量,減小過擬合,對(duì)后續(xù)層中所需要的參數(shù)也有了大幅度的縮減,同時(shí)提高模型的容錯(cuò)性。池化層主要分為最大池化(max pooling)和平均池化(average pooling)兩種,最大池化就是對(duì)鄰域內(nèi)特征點(diǎn)取最大,平均池化即對(duì)領(lǐng)域內(nèi)特征點(diǎn)取平均值,比較常用的是最大池化。
全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中主要起到分類器的作用,將學(xué)到的分布式特征映射到樣本標(biāo)記空間。全連接層通常在最后一個(gè)卷積層或池化層之后,其每一個(gè)神經(jīng)元和上層的全部神經(jīng)元相連接。
VGGNet的最主要的思想就是增加網(wǎng)絡(luò)深度,減小卷積核尺寸(3×3)。減少卷積核的好處就是可以減少參數(shù)和計(jì)算量。VGGNet結(jié)構(gòu)相對(duì)于其他深層卷積神經(jīng)網(wǎng)絡(luò)來說,對(duì)結(jié)構(gòu)和數(shù)據(jù)量相對(duì)較小的訓(xùn)練數(shù)據(jù)集有較好的處理能力,并且易于實(shí)現(xiàn),識(shí)別效率較高。其中最典型的結(jié)構(gòu)是VGG-16,有13個(gè)卷積層和3個(gè)全連接層,共16個(gè)權(quán)重層。VGG-16的輸入為224 pixel×224 pixel的RGB圖像,經(jīng)過整個(gè)卷積網(wǎng)絡(luò)的處理之后,輸出為輸入圖像屬于每個(gè)類別的概率。模型總體上分為6部分,前5部分為多個(gè)卷積核大小為 3×3的卷積層構(gòu)成,后一部分為3個(gè)全連接層。VGG-16中的每個(gè)卷積層卷積步長(stride)為1 pixel,并通過邊界填充(padding)為1 pixel來保持輸入輸出維度保持不變。池化層采用的是最大池化,窗口大小為2×2。3個(gè)全連接層的通道數(shù)分別為4 096、4 096、1 000,1 000表示輸入圖像在1 000類中每一類的得分,由于VGG-16是在ImageNet數(shù)據(jù)集上訓(xùn)練得到的,所以分類數(shù)為1 000。最后一層為softmax層,用于將得分轉(zhuǎn)化為輸入圖像屬于每個(gè)類別的概率。為了使權(quán)重具有非線性特征,在卷積層中使用了ReLU做非線性變換,加快網(wǎng)絡(luò)收斂速度。
由于蘋果外觀分類數(shù)據(jù)集和ImageNet數(shù)據(jù)集相差較大,將VGG-16直接應(yīng)用于蘋果外觀分類會(huì)導(dǎo)致識(shí)別準(zhǔn)確率的降低,所以針對(duì)蘋果外觀分類的特點(diǎn)對(duì)VGG網(wǎng)絡(luò)進(jìn)行改進(jìn)。
1.2.1 批歸一化
卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程的本質(zhì)就是為了學(xué)習(xí)數(shù)據(jù)分布,一旦訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)的分布不同,那么網(wǎng)絡(luò)的泛化能力也會(huì)大大降低。對(duì)于輸入的數(shù)據(jù),已經(jīng)進(jìn)行了人為的歸一化,由于前面訓(xùn)練參數(shù)的更新將導(dǎo)致后面層輸入數(shù)據(jù)分布的變化。
為了解決這個(gè)問題,使用了批歸一化的方法。在網(wǎng)絡(luò)的每一個(gè)卷積層之后,激活函數(shù)之前,又插入了一個(gè)歸一化層。
此方法是將每一層的激活值進(jìn)行歸一化之后,將它們映射到方差為1均值為0的區(qū)域,從而解決了梯度消失的問題。當(dāng)梯度變大之后,網(wǎng)絡(luò)更新速度和訓(xùn)練速度變快,帶來的好處是達(dá)到相同的正確率所需要的迭代次數(shù)更少,迭代相同次數(shù)時(shí)正確率會(huì)變高。
批歸一化處理算法如下,批處理輸入數(shù)據(jù)為m個(gè)樣本x1~xm,輸入數(shù)據(jù)的均值μ為
(1)
方差σ為
(2)
然后將數(shù)據(jù)歸一化
(3)
公式如下:
yi=γixi+βi
(4)
(5)
βi=E(xi)
(6)
式中:參數(shù)γi和βi是通過訓(xùn)練學(xué)習(xí)得到的,Var為方差函數(shù),E為均值函數(shù)。
1.2.2 全局平均池化
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)一般在卷積層之后添加全連接層進(jìn)行特征的向量化,此外由于神經(jīng)網(wǎng)絡(luò)的黑箱特征,設(shè)計(jì)幾個(gè)全連接層還可以增加卷積神經(jīng)網(wǎng)絡(luò)的分類性能,幾乎成了卷積神經(jīng)網(wǎng)絡(luò)的標(biāo)配。但是,全連接層有一個(gè)缺點(diǎn)就是參數(shù)量過多,一方面增加了神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測試計(jì)算量,降低了速度;另一方面參數(shù)過多會(huì)導(dǎo)致網(wǎng)絡(luò)的過擬合。
conv3-64、conv3-128、conv3-256和conv3-512等表示卷積核大小為3×3,通道數(shù)為64、128、256和512的卷積層,maxpool為步長為2 pixel最大池化層,BN(batch normalization)為批歸一化層圖2 改進(jìn)VGG模型Fig.2 Improve the VGG model
針對(duì)于此問題,可以通過全局平均池化來解決。全局平均池化相對(duì)于傳統(tǒng)的全連接層來說,能防止網(wǎng)絡(luò)的過擬合,并增強(qiáng)特征圖與類別的關(guān)系。
全局平均池化的主要思想是將每個(gè)進(jìn)入全連接層之前的特征圖融合為一個(gè)特征點(diǎn),然后將這些特征點(diǎn)組成特征向量輸入到softmax中進(jìn)行分類,這樣就會(huì)降低參數(shù)數(shù)量,減小計(jì)算量,防止網(wǎng)絡(luò)的過擬合。例如網(wǎng)絡(luò)最后一層的數(shù)據(jù)是n個(gè)m×m的特征圖,全局平均池化就是計(jì)算每一張?zhí)卣鲌D的像素點(diǎn)的均值,輸出一個(gè)特征點(diǎn),這樣n個(gè)特征圖就輸出n個(gè)特征點(diǎn),這些特征點(diǎn)組成一個(gè)1×n的特征向量,就可以輸入到softmax中進(jìn)行分類了。如圖1所示。
圖1 全局平均池化Fig.1 Global average pooling
1.2.3 聯(lián)合損失函數(shù)
對(duì)于常見的圖像分類問題,通常采用softmax loss損失函數(shù)來求損失,softmax loss是將前一層的輸出映射到(0,1)的區(qū)間內(nèi),最小化分類概率和真實(shí)分布的交叉熵使分類的概率更加接近真實(shí)類別。但是在蘋果外觀分類問題上,由于蘋果病斑和蘋果腐爛的情況非常相似,導(dǎo)致特征差異化不大。
可以采用softmax loss和center loss聯(lián)合損失函數(shù)的方法,在softmax loss可以保證類間特征距離最大的基礎(chǔ)上,加入center loss可以保證類內(nèi)的特征距離最小,讓同一類別的樣本都能靠近對(duì)應(yīng)類別的特征中心,使訓(xùn)練更加容易并方便進(jìn)行優(yōu)化。
softmax loss損失函數(shù)為
(7)
center loss損失函數(shù)為
(8)
式中:xi表示一共m個(gè)樣本中屬于yi的第i個(gè)樣本特征;wj表示在全連接層的參數(shù)矩陣中的第j列,b為偏置;cyi表示第yi類別的特征中心。
基于改進(jìn)的蘋果外觀分類模型在VGG-16模型的基礎(chǔ)上添加了批歸一化層,并采用全局平均池化層替代了之前的全連接層,最后采用聯(lián)合損失函數(shù)的方法加入了center loss配合softmax loss使用,保證了識(shí)別模型的準(zhǔn)確性。模型如圖2所示。
以采摘后的蘋果為研究對(duì)象,用采摘后的蘋果圖片作為數(shù)據(jù)進(jìn)行訓(xùn)練。由于收集到的圖片數(shù)量有限,為了增加數(shù)據(jù)的多樣性,降低網(wǎng)絡(luò)過擬合的風(fēng)險(xiǎn),在預(yù)處理階段需要利用數(shù)據(jù)增廣技術(shù)來處理數(shù)據(jù)。數(shù)據(jù)增廣技術(shù)是在保證數(shù)據(jù)類別不變的前提下,對(duì)原始圖片進(jìn)行各種變換,增加數(shù)據(jù)量,提高模型的泛化能力。數(shù)據(jù)增廣的方式有很多,現(xiàn)采用下面幾種方式進(jìn)行數(shù)據(jù)增廣:
(1)對(duì)原圖像進(jìn)行隨機(jī)旋轉(zhuǎn)(90°~180°)和水平翻轉(zhuǎn)。由于是對(duì)采摘后的蘋果進(jìn)行外觀分類,所以蘋果在圖片中的方向是不確定的,可以采用隨機(jī)旋轉(zhuǎn)的方法增加數(shù)據(jù)集的隨機(jī)性。水平翻轉(zhuǎn)不同于旋轉(zhuǎn)180°的方法,而是類似于鏡面的翻轉(zhuǎn),可以改變蘋果在圖片中的位置,增加數(shù)據(jù)集的數(shù)量。
(2)對(duì)原圖像進(jìn)行平移和放大。平移是將圖像沿著x方向或y方向進(jìn)行移動(dòng),或者沿x和y方向移動(dòng),保證蘋果在圖片中位置的隨機(jī)性。因?yàn)槊總€(gè)蘋果在圖像中的大小不一樣,所以可以對(duì)原圖像進(jìn)行等比例放大。經(jīng)過平移和放大之后,可以進(jìn)一步增加原有數(shù)據(jù)集的數(shù)量。
(3)在原圖像中添加噪聲。過擬合通常發(fā)生在卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)高頻特征的時(shí)候,因?yàn)榈皖l特征很容易就能學(xué)到,高頻特征只有到最后才能學(xué)到,但高頻特征對(duì)神經(jīng)網(wǎng)絡(luò)未做的任務(wù)沒有幫助,會(huì)對(duì)低頻特征產(chǎn)生影響,可以使用隨即加入噪聲來消除這寫特征。
經(jīng)過在原有獲取到的數(shù)據(jù)集基礎(chǔ)上進(jìn)行數(shù)據(jù)增廣之后,可以得到約20 000張?zhí)O果圖片,其中15 000張圖片作為訓(xùn)練集,5 000張圖片作為測試集。將數(shù)據(jù)集分為正常、病斑和腐爛蘋果三類,每一類的標(biāo)簽分別為0、1和2,如圖3所示。訓(xùn)練之前,將數(shù)據(jù)集中所有圖片統(tǒng)一設(shè)置為224×224像素。
圖3 蘋果數(shù)據(jù)集示意圖Fig.3 Schematic diagram of apple dataset
試驗(yàn)在Ubuntu 18.04的操作平臺(tái)下進(jìn)行,計(jì)算機(jī)配置為Intel Xeon(R)CPU E5-2650 v4@2.20 Hz×48、12 GB的 GeForce GTX 1080Ti×2 GPU并且運(yùn)行內(nèi)存為64 GB。采用Tensorflow深度學(xué)習(xí)框架,結(jié)合Python語言編程實(shí)現(xiàn)網(wǎng)絡(luò)的訓(xùn)練和測試。
采用隨機(jī)梯度下降法(stochastic gradient descent, SGD)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,用批次訓(xùn)練的方法將訓(xùn)練集和測試集分為多個(gè)批次,訓(xùn)練時(shí)的batch size設(shè)置為64,測試時(shí)的batch size設(shè)置為50,迭代次數(shù)(epoch)為100次。初始學(xué)習(xí)率設(shè)置為0.01,并且分階段逐次減小為原來的0.1倍,正則化系數(shù)設(shè)置為0.005。
為了測試改進(jìn)后的網(wǎng)絡(luò)對(duì)蘋果外觀識(shí)別準(zhǔn)確率產(chǎn)生的影響,將改進(jìn)后的模型與改進(jìn)前的模型、AlexNet以及GoogLeNet進(jìn)行準(zhǔn)確率的比較,驗(yàn)證方法的有效性。
文中為改進(jìn)后的算法,命名為improve VGGNet,進(jìn)行訓(xùn)練時(shí)不同模型的損失函數(shù)曲線如圖4所示。
圖4 不同CNN模型的訓(xùn)練損失Fig.4 Training loss of different CNN models
可以看出,改進(jìn)后模型的損失函數(shù)相對(duì)于其他卷積神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練時(shí)較早的就達(dá)到擬合狀態(tài),逐漸接近于0。
訓(xùn)練時(shí)的準(zhǔn)確率如圖5所示,可以看出幾個(gè)模型的準(zhǔn)確率在迭代次數(shù)在30 000次以上都達(dá)到了一個(gè)較高的值,改進(jìn)后的模型相對(duì)于其他模型較早的穩(wěn)定在1附近,相對(duì)于對(duì)于其他模型準(zhǔn)確率有明顯提升。
圖5 不同CNN模型的準(zhǔn)確率Fig.5 Accuracy of different CNN models
為了驗(yàn)證本文算法在對(duì)正常蘋果、病斑蘋果和腐爛蘋果分類的有效性,在測試集下,將目前在分類方面應(yīng)用較多的AlexNet、GoogLeNet和VGGNet算法進(jìn)行對(duì)比,各模型識(shí)別結(jié)果如表1所示。
表1 不同方法的性能對(duì)比
從表1中可以看出,在卷積神經(jīng)網(wǎng)絡(luò)中,AlexNet、GoogLeNet、VGG-16和改進(jìn)模型識(shí)別率分別為96.91%、98.60%、97.86%和99.25%??梢钥闯鼋?jīng)過改進(jìn)后的模型相比較其他四種模型對(duì)于蘋果的識(shí)別率還是有明顯提升的,證明了本文方法的有效性。GoogLeNet與之最為接近,AlexNet由于卷積層數(shù)較少等原因,在卷積神經(jīng)網(wǎng)絡(luò)中最低。
總體來看,三類蘋果中正常蘋果識(shí)別率最高,腐爛蘋果居中,因?yàn)樘O果中病斑特征不太明顯,所以病斑蘋果識(shí)別率最低。經(jīng)過改進(jìn)后的模型相對(duì)于其他3種模型識(shí)別率較高,能很好地滿足蘋果外觀分類的要求。
提出了一種基于VGG模型的蘋果外觀分類方法,得出以下結(jié)論。
(1)針對(duì)VGG-16在蘋果外觀分類的訓(xùn)練過程中容易出現(xiàn)計(jì)算量大、過擬合的問題,提出在利用數(shù)據(jù)增廣技術(shù)增大數(shù)據(jù)量的同時(shí),用批歸一化、全局池化和聯(lián)合損失函數(shù)對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,優(yōu)化后的網(wǎng)絡(luò)比原網(wǎng)絡(luò)的平均準(zhǔn)確率提高1.4%。
(2)試驗(yàn)表明對(duì)采摘后的蘋果進(jìn)行外觀分類平均準(zhǔn)確率達(dá)到99.25%。為了驗(yàn)證改進(jìn)后模型在蘋果外觀分類上的有效性,與在蘋果識(shí)別方向應(yīng)用較多的AlexNet、GoogLeNet和未改進(jìn)的VGGNet算法進(jìn)行對(duì)比,結(jié)果表明改進(jìn)后模型的平均準(zhǔn)確率均高出其他模型。
(3)改進(jìn)后的模型雖然計(jì)算量不大,但是仍有可優(yōu)化空間,今后還需要在確保精度高的同時(shí),使計(jì)算量最小,從而方便后續(xù)對(duì)蘋果外觀分類的研究和應(yīng)用。