方 雙 趙鳳霞 楚松峰 吳振華
(鄭州大學(xué)機(jī)械與動(dòng)力工程學(xué)院,河南 鄭州 450001)
紅棗在生長(zhǎng)、成熟、收獲和存放過(guò)程中,會(huì)產(chǎn)生黃皮、霉變、破頭等缺陷[1],這些缺陷降低了紅棗的品質(zhì),因此深加工前需要進(jìn)行缺陷棗的識(shí)別和篩選。目前主要依靠人工篩選紅棗,勞動(dòng)強(qiáng)度大、主觀性強(qiáng),而且費(fèi)時(shí)、費(fèi)力、效率低下[2]。為此,學(xué)者們對(duì)缺陷紅棗的檢測(cè)進(jìn)行了深入研究,并取得了較大的進(jìn)展。海潮等[3]根據(jù)紅棗的表面缺陷特征提出基于Blob分析的紅棗表面缺陷識(shí)別方法,該方法對(duì)缺陷棗的識(shí)別率達(dá)到90%以上,但是對(duì)黑斑棗的識(shí)別率較低且速度也較慢。詹映等[4]對(duì)南疆紅棗顏色分級(jí)進(jìn)行研究,提取預(yù)處理圖片的紅體均值、綠體均值和藍(lán)體均值及其均方差,再將圖片從RGB轉(zhuǎn)換到HIS顏色空間,提取色度均值、亮度均值和飽和度均值及其均方差,利用提取的12個(gè)特征變量結(jié)合BP神經(jīng)網(wǎng)絡(luò)對(duì)南疆駿棗和灰棗的外部品質(zhì)進(jìn)行了定量化分級(jí)研究。蘇軍等[5]提出了基于GA優(yōu)化SVM的干制紅棗識(shí)別方法,但是該方法存在對(duì)霉變棗分類(lèi)效果不明顯的問(wèn)題。以上基于傳統(tǒng)機(jī)器學(xué)習(xí)的紅棗缺陷識(shí)別方法主要依據(jù)經(jīng)驗(yàn),易受樣本和人為主觀性的影響,需要針對(duì)不同的分類(lèi)情況精心設(shè)計(jì)特征,這需要耗費(fèi)大量的時(shí)間和精力[6],且設(shè)計(jì)的特征很難具有普適性,魯棒性差。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)可以有效地克服上述弊端,其對(duì)圖像的空間不變形具有良好的適應(yīng)性,其強(qiáng)大的自主學(xué)習(xí)能力可以自動(dòng)提取并學(xué)習(xí)圖像中的特征信息,無(wú)需額外的監(jiān)督訓(xùn)練[6-7]。近年來(lái)已被逐漸應(yīng)用于人臉識(shí)別[8]、目標(biāo)檢測(cè)[9]和圖像識(shí)別[10-11]等領(lǐng)域。將卷積神經(jīng)網(wǎng)絡(luò)用于缺陷紅棗識(shí)別的研究也陸續(xù)展開(kāi)。曾窕俊等[12]提出一種基于幀間最短路徑搜索的目標(biāo)定位方法和集成卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)視頻圖像中的蟲(chóng)蝕棗、霉變棗、裂痕棗、黑頭棗進(jìn)行定位和檢測(cè),分類(lèi)準(zhǔn)確率達(dá)到98.45%。文懷興等[13]提出了一種基于深度殘差網(wǎng)絡(luò)對(duì)紅棗表面缺陷以及紋理識(shí)別的分類(lèi)算法,對(duì)正常棗、霉變棗和破皮棗進(jìn)行分類(lèi),其分類(lèi)準(zhǔn)確率達(dá)到96.11%。以上方法只針對(duì)常見(jiàn)的缺陷紅棗進(jìn)行了研究,但是對(duì)黃皮棗的研究較少。楊志銳等[14]提出一種基于網(wǎng)中網(wǎng)的卷積神經(jīng)網(wǎng)絡(luò)對(duì)紅棗進(jìn)行檢測(cè),對(duì)圖片進(jìn)行背景分離、消除噪聲、勻光處理等數(shù)據(jù)預(yù)處理操作,使其總體準(zhǔn)確率達(dá)到94.79%,對(duì)于黃皮棗的識(shí)別準(zhǔn)確率為95.56%,但操作復(fù)雜且模型性能還有一定的提升空間。
黃皮棗制干后呈黃色,肉質(zhì)不堅(jiān)實(shí)、口感差,但其外觀特征和顏色特征與正常紅棗相似,且顏色特征受光照的影響比較大,增大了識(shí)別的難度。為了提高缺陷紅棗的識(shí)別率,擬提出一種基于AlexNet[15]的多尺度卷積神經(jīng)網(wǎng)絡(luò)缺陷紅棗識(shí)別方法,利用多尺度卷積模塊提取多尺度的紅棗特征信息;在卷積層中加入批標(biāo)準(zhǔn)化處理以減少訓(xùn)練過(guò)程中數(shù)據(jù)分布的變化,提高網(wǎng)絡(luò)的泛化能力,避免過(guò)擬合。
試驗(yàn)研究對(duì)象是新疆干制紅棗,圖1為在生產(chǎn)環(huán)境下采集的紅棗檢測(cè)的部分圖像,將圖像進(jìn)行分割、去背景操作之后,得到紅棗數(shù)據(jù)集,數(shù)據(jù)集中包括4類(lèi)紅棗,分別為黃皮棗、霉變棗、破頭棗和正常棗,如圖2所示。對(duì)所采集到的圖像進(jìn)行特征分類(lèi)和人工標(biāo)記,并對(duì)所采集的紅棗圖像樣本進(jìn)行隨機(jī)旋轉(zhuǎn)、隨機(jī)剪切、水平翻轉(zhuǎn)和垂直翻轉(zhuǎn)等數(shù)據(jù)增強(qiáng)處理共得到2 800張紅棗圖片,并將所有圖片均勻混合,然后按照7∶2∶1的比例劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,即訓(xùn)練集圖片1 960張,驗(yàn)證集圖片560張、測(cè)試集280張。
圖1 生產(chǎn)環(huán)境下紅棗檢測(cè)的部分圖像
圖2 訓(xùn)練集紅棗圖像示例
在進(jìn)行訓(xùn)練之前,對(duì)圖像進(jìn)行必要的預(yù)處理可以增強(qiáng)樣本數(shù)據(jù),從而提高模型的性能。文中進(jìn)行的預(yù)處理操作包括:
(1) 統(tǒng)一圖片大小為227×227,作為模型的輸入。
(2) 樣本數(shù)據(jù)歸一化:將圖片格式數(shù)據(jù)轉(zhuǎn)換為RGB三通道的矩陣向量,并將圖像像素值從[0,255]映射到[0,1],以避免數(shù)據(jù)經(jīng)激活函數(shù)處理時(shí)神經(jīng)元進(jìn)入“死區(qū)”,導(dǎo)致神經(jīng)元失活,可以加速卷積神經(jīng)網(wǎng)絡(luò)的收斂速度。
(3) 樣本數(shù)據(jù)標(biāo)準(zhǔn)化:對(duì)圖像進(jìn)行均值和方差的均衡處理,使得圖片數(shù)據(jù)更加符合數(shù)據(jù)分布的規(guī)律,提高訓(xùn)練模型的泛化效果。
多尺度卷積神經(jīng)網(wǎng)絡(luò)模型是一種基于AlexNet改進(jìn)的神經(jīng)網(wǎng)絡(luò)模型,將傳統(tǒng)AlexNet模型中的部分卷積層替換為多尺度卷積模塊,從而有效地提取紅棗的多尺度特征;引入批量歸一化層減少訓(xùn)練過(guò)程中數(shù)據(jù)分布的變化,提高網(wǎng)絡(luò)的泛化能力。
傳統(tǒng)的AlexNet模型結(jié)構(gòu)如圖3所示,主要包括5個(gè)卷積層、2個(gè)池化層和2個(gè)全連接層以及一個(gè)輸出層。卷積層用于提取目標(biāo)不同層次的特征;池化層對(duì)特征進(jìn)行壓縮,降低分辨率,進(jìn)而減少冗余特征;全連接層對(duì)最后一層卷積層提取到的特征進(jìn)行加權(quán),通過(guò)線性變換將特征空間映射到樣本標(biāo)記空間;并在最后的輸出層用softmax對(duì)目標(biāo)進(jìn)行分類(lèi)。
AlexNet模型采用傳統(tǒng)的卷積濾波器,參數(shù)眾多且卷積計(jì)算量很大,不利于模型充分學(xué)習(xí)數(shù)據(jù)的特征,采用多尺度卷積模塊不僅可以大大減少模型中的參數(shù),還可以在增加模型深度和寬度的同時(shí)充分學(xué)習(xí)和利用紅棗的特征信息,從而提高模型的識(shí)別準(zhǔn)確率;模型訓(xùn)練過(guò)程中參數(shù)一直不斷地更新,會(huì)引起各網(wǎng)絡(luò)層輸出數(shù)據(jù)的分布隨之發(fā)生變化,不利于提高模型的泛化性,從而影響模型對(duì)紅棗的識(shí)別效果。針對(duì)上述問(wèn)題,引入多尺度卷積模塊和批量歸一化層對(duì)AlexNet模型進(jìn)行改進(jìn)。
2.2.1 多尺度卷積模塊 構(gòu)建多尺度卷積模塊如圖4所示。該模塊中有4個(gè)支路,每個(gè)支路對(duì)輸入特征進(jìn)行卷積操作提取特征之后,再進(jìn)行特征融合操作,作為下一個(gè)模塊的輸入;每個(gè)支路中有不同大小的濾波器,這樣可以增加網(wǎng)絡(luò)對(duì)尺度的適應(yīng)性,有利于提取多尺度的特征信息,在增加網(wǎng)絡(luò)寬度的同時(shí)也增加了網(wǎng)絡(luò)的深度;每條支路中都包括1×1卷積,主要用于壓縮提取特征的維度,減少模型中的參數(shù),同時(shí)添加非線性函數(shù),有助于網(wǎng)絡(luò)提取抽象的特征。
圖3 傳統(tǒng)的AlexNet模型結(jié)構(gòu)示意圖
2.2.2 批量歸一化層 在模型進(jìn)行卷積操作時(shí)加入批量標(biāo)準(zhǔn)化(Batch Normalization,BN)層,該過(guò)程可以保證網(wǎng)絡(luò)容量、加快網(wǎng)絡(luò)的訓(xùn)練速度并提高網(wǎng)絡(luò)泛化能力,減少訓(xùn)練過(guò)程中參數(shù)更新引起的各層數(shù)據(jù)分布發(fā)生變化對(duì)模型的影響。批量歸一化[16]過(guò)程如下,首先計(jì)算每個(gè)批次中m個(gè)樣本x1~xm的均值和方差:
(1)
(2)
式中:
μ——批次的均值;
σ——批次的方差。
將數(shù)據(jù)進(jìn)行歸一化:
(3)
圖4 多尺度卷積模塊
式中:
β——防止方差σ為0時(shí)分式不成立而設(shè)置的常量。
(4)
βi=E[xi],
(5)
yi=γixi+βi,
(6)
式中:
γi、βi——通過(guò)訓(xùn)練得到的重構(gòu)參數(shù)。
Var[xi]、E[xi]、yi——樣本xi的方差、均值、標(biāo)簽。
2.2.3 多尺度卷積神經(jīng)網(wǎng)絡(luò)模型 引入多尺度卷積模塊和批量歸一化層后,基于AlexNet的多尺度卷積神經(jīng)網(wǎng)絡(luò)如圖5所示。該網(wǎng)絡(luò)在AlexNet模型中引入了5個(gè)BN層,將后面4個(gè)傳統(tǒng)的卷積層替換為多尺度卷積模塊,并在前2個(gè)多尺度卷積模塊之后添加了池化層壓縮圖片的特征。4個(gè)多尺度卷積模塊的參數(shù)如表1所示。
2.2.4 傳統(tǒng)卷積層和多尺度卷積模塊的參數(shù)和計(jì)算量對(duì)比 為了便于將傳統(tǒng)卷積層和多尺度卷積模塊進(jìn)行對(duì)比,設(shè)置傳統(tǒng)AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的具體參數(shù)如表2所示。
按式(7)、(8)分別計(jì)算出AlexNet模型中各卷積層參數(shù)量、計(jì)算量和多尺度卷積神經(jīng)網(wǎng)絡(luò)中各多尺度卷積模塊的參數(shù)量、計(jì)算量,并將對(duì)應(yīng)的卷積層和多尺度卷積模塊的參數(shù)量和計(jì)算量進(jìn)行對(duì)比,其計(jì)算結(jié)果如表3所示。
(7)
(8)
式中:
A——參數(shù)量;
B——計(jì)算量;
n——卷積層數(shù);
ki——尺寸為i×i的卷積核;
圖5 多尺度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
表1 模型中4個(gè)多尺度卷積模塊的參數(shù)?
表2 傳統(tǒng)的AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的網(wǎng)絡(luò)參數(shù)
表3 傳統(tǒng)卷積層和多尺度卷積模塊的參數(shù)和計(jì)算量對(duì)比
cl-1、cl——第l個(gè)卷積層的輸入通道數(shù)和輸出通道數(shù);
Hl-1、Wl——第l個(gè)卷積層輸入特征的高度和寬度。
由計(jì)算結(jié)果可知,卷積層2的參數(shù)量和計(jì)算量分別是多尺度卷積模塊1的15.19倍和16.00倍,卷積層3的參數(shù)量和計(jì)算量均是多尺度卷積模塊2的7.14倍,卷積層4、卷積層5的參數(shù)量和計(jì)算量分別是多尺度卷積模塊3、多尺度卷積模塊4的8.58倍和10.15倍。鑒于卷積運(yùn)算中加法運(yùn)算與乘法運(yùn)算的次數(shù)近似相等,因此在此處僅計(jì)算出乘法運(yùn)算的計(jì)算量,并進(jìn)行對(duì)比,其比值與卷積運(yùn)算中加法運(yùn)算和乘法運(yùn)算相加的比值近似相等。由表3 可知,設(shè)計(jì)的多尺度卷積模塊可以大大減少模型中的參數(shù)和計(jì)算量,加快模型的訓(xùn)練速度。
為了驗(yàn)證多尺度卷積神經(jīng)網(wǎng)絡(luò)在缺陷紅棗分類(lèi)上的有效性,將提出的算法與淺層網(wǎng)絡(luò)LeNet[17]、深層網(wǎng)絡(luò)VGG16[18]和經(jīng)典AlexNet網(wǎng)絡(luò)進(jìn)行對(duì)比。模型的訓(xùn)練和測(cè)試環(huán)境是Anaconda 4.8.5平臺(tái)、運(yùn)行內(nèi)存為64 GB、NVIDIA GeForce RTX 2080 Ti顯卡GPU、并行CUDA[19]編程平臺(tái),keras深度學(xué)習(xí)框架和python3.7.7編程語(yǔ)言。在模型訓(xùn)練過(guò)程中將訓(xùn)練集和驗(yàn)證集分為多個(gè)批次,綜合考慮計(jì)算機(jī)的硬件環(huán)境,在試驗(yàn)過(guò)程中利用keras框架中的生成器函數(shù)[20],設(shè)置batch_size為64,通過(guò)數(shù)據(jù)流的形式,從訓(xùn)練樣本中每次提取64個(gè)樣本參與訓(xùn)練,采用Adam優(yōu)化器,并設(shè)置初始學(xué)習(xí)率為0.001,訓(xùn)練總輪數(shù)為500次。
為了驗(yàn)證不同網(wǎng)絡(luò)架構(gòu)對(duì)缺陷紅棗分類(lèi)的影響和文中提出算法的有效性,將紅棗數(shù)據(jù)集分別統(tǒng)一大小為32×32、227×227、224×224的尺寸,并分別將LeNet模型、AlexNet模型和VGG16模型在數(shù)據(jù)集上進(jìn)行訓(xùn)練。4個(gè)模型在訓(xùn)練集和測(cè)試集上的準(zhǔn)確率和損失函數(shù)如圖6、7所示。
由圖6可知,淺層網(wǎng)絡(luò)LeNet模型的學(xué)習(xí)較緩慢,經(jīng)近500輪迭代才達(dá)到收斂,且在學(xué)習(xí)過(guò)程中波動(dòng)較大。而深層網(wǎng)絡(luò)VGG16模型、AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練過(guò)程都能夠快速地收斂,在訓(xùn)練集上表現(xiàn)良好,其中AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練過(guò)程相對(duì)平穩(wěn)。
由圖7可知,淺層網(wǎng)絡(luò)LeNet模型在驗(yàn)證集上的表現(xiàn)隨著迭代次數(shù)的增加逐漸變好,但整體表現(xiàn)不如其他3個(gè)模型,而且其波動(dòng)較大。VGG16模型的驗(yàn)證準(zhǔn)確率和驗(yàn)證損失函數(shù)在前80輪迭代中分別迅速上升和下降,但是隨著迭代的進(jìn)行,驗(yàn)證準(zhǔn)確率有降低的趨勢(shì)并收斂到91.8%,驗(yàn)證損失也有逐漸上升的趨勢(shì),這是因?yàn)閂GG16出現(xiàn)了在驗(yàn)證集上出現(xiàn)過(guò)的過(guò)擬合現(xiàn)象。AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)在驗(yàn)證集上均表現(xiàn)良好,在前100輪迭代中,AlexNet模型的驗(yàn)證準(zhǔn)確率高于多尺度卷積神經(jīng)網(wǎng)絡(luò)模型,但是在后面的迭代中,多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的驗(yàn)證準(zhǔn)確率收斂到97.4%,AlexNet模型的驗(yàn)證準(zhǔn)確率收斂到95.4%,且多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的驗(yàn)證損失函數(shù)遠(yuǎn)小于AlexNet模型的驗(yàn)證損失。
綜上可知,LeNet模型學(xué)習(xí)緩慢且波動(dòng)大主要是因?yàn)槠浣Y(jié)構(gòu)過(guò)于簡(jiǎn)單,學(xué)習(xí)效率低,需要更多的迭代來(lái)充分學(xué)習(xí)圖像中的特征;VGG16模型雖然學(xué)習(xí)很快,但是出現(xiàn)了過(guò)擬合,這主要是因?yàn)閂GG16模型參數(shù)眾多,比較復(fù)雜,圖片數(shù)據(jù)集有限,模型得不到充分地訓(xùn)練,使得其泛化性能較差;AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練集和驗(yàn)證集上都可以快速收斂,并且未出現(xiàn)過(guò)擬合現(xiàn)象,后者的收斂速度雖然稍慢,但其驗(yàn)證集收斂準(zhǔn)確率與前者相比提高了2%,且驗(yàn)證損失遠(yuǎn)小于前者。完成500輪訓(xùn)練,AlexNet模型和多尺度卷積神經(jīng)網(wǎng)絡(luò)分別耗時(shí)0.924 h和0.483 h,多尺度卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)間相對(duì)減少了40.13%,與2.2.4部分傳統(tǒng)卷積層和多尺度卷積模塊的對(duì)比結(jié)果相一致。說(shuō)明所構(gòu)建的多尺度卷積神經(jīng)網(wǎng)絡(luò)模型減少了大量的參數(shù),可以縮短模型的訓(xùn)練時(shí)間,且與AlexNet模型相比,其性能得到了明顯的提升。
圖6 模型的訓(xùn)練準(zhǔn)確率和訓(xùn)練損失函數(shù)對(duì)比圖
圖7 模型的驗(yàn)證準(zhǔn)確率和驗(yàn)證損失函數(shù)對(duì)比圖
為了驗(yàn)證多尺度卷積神經(jīng)網(wǎng)絡(luò)模型的泛化性,用其對(duì)測(cè)試集中的280張圖片分別進(jìn)行識(shí)別,結(jié)果如表5所示。
表5 多尺度卷積神經(jīng)網(wǎng)絡(luò)模型在測(cè)試集的識(shí)別結(jié)果
由表5可知,多尺度卷積神經(jīng)網(wǎng)絡(luò)模型在測(cè)試集上的平均識(shí)別準(zhǔn)確率為97.14%。與文獻(xiàn)[12]中提出的基于深度殘差網(wǎng)絡(luò)對(duì)紅棗表面缺陷分類(lèi)的準(zhǔn)確率(96.11%)相比,識(shí)別精度更高。
提出了一種基于多尺度卷積神經(jīng)網(wǎng)絡(luò)的缺陷紅棗識(shí)別方法,并對(duì)黃皮棗、霉變棗、破頭棗和正常棗進(jìn)行了檢驗(yàn)。與LeNet模型、VGG16模型相比,提出的方法可以充分學(xué)習(xí)紅棗圖片中的特征信息,且未出現(xiàn)過(guò)擬合現(xiàn)象;與AlexNet模型進(jìn)行對(duì)比,訓(xùn)練時(shí)間減少了40.13%,驗(yàn)證準(zhǔn)確率提高2%,說(shuō)明多尺度卷積模塊能夠大大減少卷積運(yùn)算中的參數(shù),加速模型的訓(xùn)練,并提高了模型的準(zhǔn)確率,其平均識(shí)別率達(dá)到了97.14%,而且對(duì)黃皮棗也有較高的識(shí)別率。
試驗(yàn)提出的多尺度卷積神經(jīng)網(wǎng)絡(luò)還存在優(yōu)化的空間,后續(xù)可考慮制作包含更多缺陷紅棗的較大數(shù)據(jù)集,結(jié)合更先進(jìn)、高效的網(wǎng)絡(luò)模塊對(duì)其作進(jìn)一步改進(jìn)。