羅炤茜,陳月芬,占煜輝,厲科迪
(臺(tái)州學(xué)院電子與信息工程學(xué)院, 臺(tái)州 318000)
作為一個(gè)世界農(nóng)業(yè)大國,我國的水果產(chǎn)量呈逐年上升的趨勢(shì)。作為提供人體營養(yǎng)的必需品,水果在人們?nèi)粘I钪械男枨罅坎粩嘣黾?,水果行業(yè)市場(chǎng)規(guī)模持續(xù)增長(zhǎng),并且隨著生活水平的不斷提高,人們對(duì)于優(yōu)質(zhì)和新鮮的水果需求不斷增長(zhǎng),高品質(zhì)的水果是當(dāng)今水果市場(chǎng)競(jìng)爭(zhēng)成功的首要條件。因此,水果分級(jí)是各大水果市場(chǎng)、果汁加工廠以及水果種植戶的重要環(huán)節(jié),而我國的水果產(chǎn)量基數(shù)龐大,傳統(tǒng)的依靠人工方式進(jìn)行分類、分級(jí),不僅效率低下、勞動(dòng)量大,而且容易受到人為因素的影響,存在較大的人工誤差等缺點(diǎn)。物聯(lián)網(wǎng)技術(shù)和人工智能的興起引領(lǐng)著人們的生活走向智能化,無人超市越來越流行,因此亟需研究水果智能分類分級(jí)模型,提高水果識(shí)別率和分級(jí)準(zhǔn)確率,對(duì)經(jīng)濟(jì)、農(nóng)業(yè)的發(fā)展具有重要的意義。
近年來,機(jī)器視覺技術(shù)在農(nóng)產(chǎn)品檢測(cè)中得到廣泛的應(yīng)用,提高了檢測(cè)精度和效率,成為農(nóng)產(chǎn)品自動(dòng)化檢測(cè)與分選技術(shù)的重要手段。因此國內(nèi)外學(xué)者圍繞著基于機(jī)器視覺的水果自動(dòng)識(shí)別和分級(jí)進(jìn)行了大量的研究[1],如Blanc[2]設(shè)計(jì)了一種可以對(duì)葡萄的重量和顏色均勻度進(jìn)行分級(jí)的系統(tǒng);Baigvand[3]等設(shè)計(jì)了一套完整的機(jī)器視覺分級(jí)系統(tǒng),實(shí)現(xiàn)了對(duì)無花果品質(zhì)的實(shí)時(shí)檢測(cè),將無花果干成功地分為5 個(gè)等級(jí);王干[4]等通過采用三個(gè)攝像機(jī)對(duì)傳輸中的臍橙多面拍照,并基于圖像處理技術(shù)實(shí)現(xiàn)了臍橙的品質(zhì)分級(jí)?;跈C(jī)器視覺技術(shù)并借助于攝像機(jī)代替人眼采集物體圖像,再利用圖像處理技術(shù)實(shí)現(xiàn)對(duì)物體特征的提取,經(jīng)各種分類器實(shí)現(xiàn)識(shí)別,其中圖像處理技術(shù)在水果圖像特征提取中扮演重要的角色。孫斐[5]通過研究幾何特征實(shí)現(xiàn)蘋果的特征提取,最終實(shí)現(xiàn)蘋果大小的分級(jí)。蔣林權(quán)[6]采用灰度共生矩陣提取碭山梨缺陷區(qū)域和果梗區(qū)域的紋理特征,融合Gabor 提取紋理特征的方法,提高了對(duì)碭山梨表面缺陷的識(shí)別準(zhǔn)確率;肖壯[7]通過Matlab 軟件處理紅提串的彩色圖像,獲得了果肉和果粉區(qū)域的像素點(diǎn)坐標(biāo)值和RGB 值,最終實(shí)現(xiàn)了顏色特征的提取。
綜上所述,由于圖像處理技術(shù)的發(fā)展,當(dāng)前計(jì)算機(jī)視覺技術(shù)在水果識(shí)別和分揀領(lǐng)域得到了廣泛的應(yīng)用,并取得了一定的研究成果。但已有成果主要存在以下不足:一是當(dāng)前對(duì)水果圖像的特征提取、缺陷檢測(cè)等大部分為傳統(tǒng)的圖像處理,該方法主要基于人工經(jīng)驗(yàn)對(duì)圖像進(jìn)行特征提取,主要提取水果的幾何、紋理和顏色等特征,這些特征的提取均為人工設(shè)計(jì),具有很大的局限性,為了準(zhǔn)確對(duì)水果進(jìn)行分類,甚至需要人工進(jìn)一步的判斷,自動(dòng)化程度降低;二是應(yīng)用傳統(tǒng)圖像處理技術(shù)進(jìn)行特征提取對(duì)水果圖像質(zhì)量要求較高,但圖像采集時(shí)容易受到噪聲或者光照變化的影響,可靠性較差。
根據(jù)以上分析可以看出:傳統(tǒng)的圖像處理技術(shù)應(yīng)用到水果自動(dòng)分級(jí)的局限性很大,而當(dāng)前在人工智能領(lǐng)域,深度學(xué)習(xí)在目標(biāo)識(shí)別及分類方面取得了令人矚目的成績(jī),性能上與傳統(tǒng)的識(shí)別和分類算法相比,產(chǎn)生了質(zhì)的飛躍,物體辨別分析能力已經(jīng)可以媲美人類的辨別能力,甚至在某些領(lǐng)域已經(jīng)超過了人類的辨別能力。基于此,本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的水果自動(dòng)分級(jí)算法,并以蘋果為例,將深度學(xué)習(xí)理論應(yīng)用到蘋果的自動(dòng)分級(jí),提高蘋果自動(dòng)分級(jí)的準(zhǔn)確率,促進(jìn)自動(dòng)化。
本文系統(tǒng)的整體設(shè)計(jì)包括水果圖像的采集和數(shù)據(jù)增強(qiáng)、卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)和訓(xùn)練以及對(duì)測(cè)試圖像的精確識(shí)別。在設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)時(shí),考慮到Keras作為Tensorflow 的高端接口,支持GPU 和CPU,具有高度的模塊化,包括了網(wǎng)絡(luò)層、損失函數(shù)、優(yōu)化器、激活函數(shù)等方法的獨(dú)立模塊,結(jié)合Tensorflow 作為后端,非常有利于根據(jù)需求快速搭建并訓(xùn)練新的網(wǎng)絡(luò)模型[8],因此,本文采用Keras建立卷積神經(jīng)網(wǎng)絡(luò),系統(tǒng)的設(shè)計(jì)框圖如圖1所示。
圖1 系統(tǒng)框圖Fig.1 Chart of system
目前,國內(nèi)外尚未形成統(tǒng)一的用于水果分級(jí)的圖像集,本文實(shí)驗(yàn)使用的蘋果圖像集來自超市、菜場(chǎng)等果蔬銷售場(chǎng)合采購的實(shí)物拍攝,實(shí)驗(yàn)中收集了一級(jí)紅富士圖像600 張、二級(jí)紅富士600 張、普通蘋果600 張和爛蘋果300 張,共計(jì)2100 張,包含四種級(jí)別的蘋果圖像,圖2所示為本文所用的部分樣本示意圖。
圖2 部分圖像樣本示意圖Fig.2 Part of image sample diagram
由于數(shù)據(jù)庫規(guī)模比較小,容易在訓(xùn)練過程中出現(xiàn)“過擬合”現(xiàn)象,即容易將樣本本身的一些特點(diǎn)視為所有潛在樣本都具有的特點(diǎn),以至于模型的泛化能力較弱,影響測(cè)試的正確率。因此,本文采用了圖像的一些幾何變換,包括:(1)將圖像在40°范圍內(nèi)隨機(jī)旋轉(zhuǎn);(2)將圖像在水平方向隨機(jī)平移,平移程度不超過原寬度的0.2倍;(3)將圖像在垂直方向隨機(jī)平移,平移程度不超過原高度的0.2 倍;(4)將圖像進(jìn)行隨機(jī)裁剪。通過上述變換將數(shù)據(jù)樣本擴(kuò)充為原來的4 倍,以此來緩解過擬合現(xiàn)象。將所有圖像的尺寸大小調(diào)整為256×256×3,并將像素值除以255 進(jìn)行歸一化處理。對(duì)所有樣本進(jìn)行標(biāo)注,在存儲(chǔ)時(shí)將每類蘋果的標(biāo)簽值設(shè)為0~3,在讀入圖像后轉(zhuǎn)換為獨(dú)熱編碼形式進(jìn)行模型的訓(xùn)練和測(cè)試,即每類蘋果的標(biāo)簽值為長(zhǎng)度為4 的向量y={a0,a1,a2,a3},其中第i個(gè)級(jí)別的蘋果標(biāo)簽值中只有ai= 1,其他值均為0。將標(biāo)注后的所有樣本按照8∶1∶1的比例劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。
本文建立的卷積神經(jīng)網(wǎng)絡(luò)模型如圖3所示,包括3個(gè)卷積層、3 個(gè)池化層、2 個(gè)全連接層和Softmax 輸出層。輸入圖像為256×256×3 的彩色圖像,三個(gè)卷積層的核大小均為3×3,步長(zhǎng)為1,通道數(shù)分別為16、32、32,填充方式均為“Same”,以便保持卷積前后圖像大小不變,激活函數(shù)采用Relu 函數(shù)。池化層的目的是通過下采樣減少經(jīng)過卷積運(yùn)算之后的數(shù)據(jù)量,本文網(wǎng)絡(luò)結(jié)構(gòu)中的三個(gè)池化層均為2×2 的最大池化,輸入圖像經(jīng)過上述三個(gè)卷積層和三次池化之后的輸出大小為32×32×32,經(jīng)過第一個(gè)全連接層(Flatten)轉(zhuǎn)換為32768 的一維數(shù)據(jù),再輸入神經(jīng)元數(shù)目為64 的全連接層,輸出層采用Softmax作為激活函數(shù),計(jì)算得到分屬4個(gè)級(jí)別的概率。網(wǎng)絡(luò)中各層輸出大小及所需的權(quán)重?cái)?shù)目如表1所示。
圖3 卷積神經(jīng)網(wǎng)絡(luò)模型Fig.3 Model of convolutional neural network
表1 卷積神經(jīng)網(wǎng)絡(luò)模型各層參數(shù)Tab.1 Parameters of convolutional neural network
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的目的是根據(jù)訓(xùn)練數(shù)據(jù)集不斷學(xué)習(xí)并調(diào)整權(quán)重參數(shù),從而得到最優(yōu)的權(quán)重值,訓(xùn)練過程如圖4 所示,首先從訓(xùn)練集中讀取一批樣本,作為上述網(wǎng)絡(luò)結(jié)構(gòu)的輸入信號(hào),經(jīng)過網(wǎng)絡(luò)的前向運(yùn)算計(jì)算預(yù)測(cè)結(jié)果,前向運(yùn)算時(shí)所用的激活函數(shù)為Relu函數(shù):f(x)=max(0,x),最后將模型計(jì)算的預(yù)測(cè)值轉(zhuǎn)換為分屬每一種類別的概率值,由于本文輸出類別共有4 類,因此采用Softmax 函數(shù)進(jìn)行計(jì)算,Softmax 函數(shù)又稱為歸一化指數(shù)函數(shù),它是二分類函數(shù)Sigmoid在多分類上的推廣,目的是將多分類的結(jié)果以概率的形式呈現(xiàn),其計(jì)算方法如公式(1)所示,其中yk(k= 1,2,…,N) 為模型前向計(jì)算的預(yù)測(cè)值,pi為當(dāng)前輸入,屬于第i種類別的輸出概率,N為類別數(shù)量。
圖4 網(wǎng)絡(luò)模型的訓(xùn)練Fig.4 Training of network models
卷積神經(jīng)網(wǎng)絡(luò)的輸出值與標(biāo)簽值(真實(shí)值)之間存在誤差,神經(jīng)網(wǎng)絡(luò)中不同的權(quán)重值將會(huì)產(chǎn)生不同的誤差,因此需要引入損失函數(shù)來衡量輸出值與標(biāo)簽值之間的誤差,本文采用交叉熵?fù)p失函數(shù),計(jì)算方法如公式(2)所示,其中p′i為第i類水果的理想概率值,pi為第i類水果的模型預(yù)測(cè)輸出概率值,每一輪的損失值為所有樣本損失值的平均值。
將誤差反向傳播用于調(diào)整網(wǎng)絡(luò)的權(quán)重值,尋找模型的最優(yōu)解,即網(wǎng)絡(luò)的優(yōu)化。常見的優(yōu)化方法有梯度下降法、動(dòng)量?jī)?yōu)化法、自適應(yīng)學(xué)習(xí)率優(yōu)化法,本文采用自適應(yīng)學(xué)習(xí)率優(yōu)化方法中的Adam優(yōu)化,算法如下[8]:
(1)初始化時(shí)間步t=0,一階和二階矩變量s=0,r=0,初始參數(shù)為θ;
(2)從訓(xùn)練集中讀取小批量樣本,設(shè)包含m個(gè)樣本{x(1),…,x(m)},對(duì)應(yīng)目標(biāo)為y(i);
(3)計(jì)算梯度g←
(4)t←t+ 1
(5)更新有偏一階和二階矩估計(jì):
(7)計(jì)算更新:
其中,? 為學(xué)習(xí)步長(zhǎng),默認(rèn)為0.001,ρ1和ρ2為矩估計(jì)的指數(shù)衰減速率,在區(qū)間[0,1)內(nèi),默認(rèn)ρ1= 0.9,ρ2=0.999,δ是一個(gè)用于數(shù)值穩(wěn)定的小常數(shù),默認(rèn)δ= 10-8。
本文實(shí)驗(yàn)仿真基于Keras 接口,結(jié)合Tensorflow 為后端,以Python 為編程語言,每批數(shù)據(jù)為32 張隨機(jī)讀取的圖像,學(xué)習(xí)率為0.001,訓(xùn)練輪數(shù)設(shè)為30 輪。表2所示為每經(jīng)過5 輪訓(xùn)練后訓(xùn)練集的損失值和正確率以及驗(yàn)證集的損失值和正確率變化過程。
表2 損失值與正確率Tab.2 Loss and accuracy
將測(cè)試數(shù)據(jù)集的樣本輸入到上述經(jīng)過30 輪訓(xùn)練后的模型,得到了整體93.78% 的正確率和91.91% 的召回率,為了進(jìn)一步分析每一種蘋果級(jí)別的預(yù)測(cè)結(jié)果,表3 給出了預(yù)測(cè)結(jié)果的精確率、召回率和分類綜合指標(biāo)F值。表3 中正確率反映了被預(yù)測(cè)為第i類樣本的數(shù)量中真實(shí)樣本(即本來就是第i類樣本)所占的比例,召回率反映了第i類樣本總量中被預(yù)測(cè)為第i類樣本所占的比例,而F值則是正確率和召回率的加權(quán)調(diào)和平均,即
表3 測(cè)試結(jié)果Tab.3 Result of test
從表3 可以看出,卷積神經(jīng)網(wǎng)絡(luò)能夠有效地實(shí)現(xiàn)水果的自動(dòng)分級(jí),圖5 所示為從網(wǎng)絡(luò)上下載的一張?zhí)O果圖像,經(jīng)模型預(yù)測(cè)后顯示該圖像屬于一級(jí)蘋果的概率為0.9710,與人眼直觀判斷結(jié)果一致,說明了模型的有效性。
圖5 預(yù)測(cè)結(jié)果示意圖Fig.5 Schematic illustration of predited results
本文設(shè)計(jì)了一個(gè)基于卷積神經(jīng)網(wǎng)絡(luò)的蘋果分級(jí)系統(tǒng),采用Keras+Tensoflow 搭建卷積神經(jīng)網(wǎng)絡(luò)模型,自建了一個(gè)小規(guī)模的蘋果分級(jí)數(shù)據(jù)集,經(jīng)過一定的數(shù)據(jù)擴(kuò)充后用于訓(xùn)練神經(jīng)網(wǎng)絡(luò),經(jīng)訓(xùn)練后的模型在測(cè)試集上取得很好的測(cè)試效果,表明了卷積神經(jīng)網(wǎng)絡(luò)利用多次的卷積運(yùn)算和池化操作,能夠很好地學(xué)習(xí)到不同級(jí)別蘋果圖像的高層次特征,無需人工特征提取就能很好地完成蘋果的分級(jí),有助于節(jié)約人工成本,促進(jìn)水果銷售的自動(dòng)化,也有利于無人水果超市的發(fā)展。本文將進(jìn)一步拓展在多種類水果分級(jí)領(lǐng)域的研究,包括多種類水果分級(jí)數(shù)據(jù)集構(gòu)建,面向數(shù)據(jù)集規(guī)模擴(kuò)充的數(shù)據(jù)增強(qiáng)技術(shù)研究,多任務(wù)型深度卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)自適應(yīng)算法研究等。