裴悅琨 連明月 姜艷超 葉家敏 韓心新 谷 宇
(1.大連大學(xué)遼寧省北斗高精度位置服務(wù)技術(shù)工程實(shí)驗(yàn)室,遼寧 大連 116622;2.大連大學(xué)大連市環(huán)境感知與智能控制重點(diǎn)實(shí)驗(yàn)室,遼寧 大連 116622)
櫻桃種植主要分布于美國、加拿大、澳洲、歐洲等地,中國主要有遼寧、山東等[1-2],因其營養(yǎng)價(jià)值豐富而深受人們喜愛。櫻桃缺陷主要有裂口、腐爛、雙胞胎、刺激生長、未成熟、鳥啄和鼻尖裂口等。目前的分級(jí)主要依靠人眼進(jìn)行識(shí)別,會(huì)造成可食用缺陷種類的浪費(fèi),而基于機(jī)器視覺技術(shù)的水果自動(dòng)分級(jí)方法可快速、準(zhǔn)確、無損地檢測櫻桃表面缺陷和判定分類級(jí)別。Balestani等[3]利用圖像處理技術(shù)對(duì)櫻桃進(jìn)行缺陷檢測,其裂口、雙胞胎檢測率分別為95%,89%;王昭等[4]設(shè)計(jì)了一套基于視覺處理軟件的櫻桃缺陷檢測裝置,檢測率為86.8%,但未對(duì)缺陷類型進(jìn)行精確分類。
卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)是將特征提取與分類融為一體,可直接對(duì)原始圖像進(jìn)行模式識(shí)別,已成功應(yīng)用于手寫數(shù)字識(shí)別及車牌字符識(shí)別[5-6],并且都取得了較好的效果。劉云等[7]改進(jìn)了一種基于RGB彩色分量算術(shù)運(yùn)算的背景分割算法,使用分塊策略對(duì)蘋果缺陷進(jìn)行檢測,檢測速度可達(dá)5個(gè)/s,準(zhǔn)確率為97.3%;吳志洋等[8]采用雙網(wǎng)絡(luò)并行的模型訓(xùn)練方法,結(jié)合特征圖優(yōu)化卷積核參數(shù)的模型壓縮算法,實(shí)現(xiàn)了單色布匹瑕疵的快速檢測,檢測速度為135 m/min,準(zhǔn)確率達(dá)96.99%;邡鑫等[9]設(shè)計(jì)了基于塊的CNN缺陷檢測算法,發(fā)現(xiàn)晶圓缺陷可分為10個(gè)缺陷種類,準(zhǔn)確率達(dá)97%;許偉棟等[10]融合了支持向量機(jī)方法對(duì)馬鈴薯缺陷進(jìn)行檢測,其運(yùn)行速度快且準(zhǔn)確率達(dá)99.2%;卞國龍等[11]采用數(shù)據(jù)增強(qiáng)技術(shù)對(duì)輪胎X射線圖像進(jìn)行了缺陷檢測,所需時(shí)間短且準(zhǔn)確率達(dá)91.3%。
為了避免櫻桃可食用缺陷種類的浪費(fèi),收獲更高的經(jīng)濟(jì)效益、更標(biāo)準(zhǔn)的櫻桃分級(jí)水平、更快的速度以及更高的準(zhǔn)確性,試驗(yàn)擬使用圖像增強(qiáng)、增廣技術(shù)對(duì)圖片進(jìn)行部分預(yù)處理,利用卷積神經(jīng)網(wǎng)絡(luò)對(duì)櫻桃缺陷進(jìn)行檢測識(shí)別,為櫻桃產(chǎn)后處理提供理論依據(jù)。
典型的卷積神經(jīng)網(wǎng)絡(luò)主要由數(shù)據(jù)輸入層、卷積計(jì)算層、池化層、激勵(lì)層和全連接層組成。試驗(yàn)設(shè)計(jì)的基本模型結(jié)構(gòu)如圖1所示。
圖1 CNN基本模型結(jié)構(gòu)
訓(xùn)練前,需對(duì)原始圖像進(jìn)行旋轉(zhuǎn)、縮放、裁剪、歸一化等預(yù)處理操作,即標(biāo)準(zhǔn)化處理。在圖片輸入層,對(duì)指定大小的生成圖片進(jìn)行樣本與標(biāo)簽分類制作,獲得神經(jīng)網(wǎng)絡(luò)輸入的以特征命名的文件,為了方便網(wǎng)絡(luò)的訓(xùn)練,對(duì)輸入數(shù)據(jù)進(jìn)行批處理。經(jīng)輸入層的圖片預(yù)處理操作可避免人為干擾,保證輸入圖片的準(zhǔn)確性,提高訓(xùn)練的正確率,得到精確的訓(xùn)練結(jié)果。
目前,常用的圖片類型主要有bmp、png、jpg及gif格式。訓(xùn)練時(shí)需統(tǒng)一圖片格式,彩色圖、灰度圖不可同時(shí)進(jìn)行訓(xùn)練。試驗(yàn)主要采用bmp格式的RGB彩色圖片,即三通道輸入。為加快處理速度與時(shí)間,將圖片尺寸統(tǒng)一定為64×64。
卷積層是CNN網(wǎng)絡(luò)的核心結(jié)構(gòu),通過局部感知和參數(shù)共享兩個(gè)原理實(shí)現(xiàn)對(duì)高維輸入數(shù)據(jù)的降維處理,并且能夠自動(dòng)提取原始數(shù)據(jù)的優(yōu)秀特征。卷積層將輸入層輸出的數(shù)據(jù)與一組可學(xué)習(xí)的濾波器進(jìn)行卷積操作,每個(gè)濾波器在輸出的圖像中產(chǎn)生一個(gè)特征映射。試驗(yàn)中采用尺寸為3×3的卷積核(filter)。按式(1)計(jì)算卷積層特征圖大小。
(1)
式中:
heightin、widthin——輸入圖像尺寸;
heightout、widthout——輸出圖片尺寸;
heightfilter、widthfilter——卷積核尺寸;
padding——取0或1;
stride——卷積滑動(dòng)步長。
卷積得到的結(jié)果加上一個(gè)偏置,通過激活函數(shù),作為該層某個(gè)神經(jīng)元的值。試驗(yàn)選用修正線性單元進(jìn)行激活,不存在飽和問題,其收斂速度大于S型生長曲線和雙曲正切,且得到的結(jié)果是稀疏的。按式(2)計(jì)算卷積層。
(2)
式中:
W——卷積核;
f——激活函數(shù);
bi——偏置。
池化層又稱子采樣層,主要作用是減少參數(shù)數(shù)量,防止過擬合,降低特征向量維度,并且能夠保持局部線性變換的不變性。常見的池化操作主要包括:① 最大池化函數(shù),即對(duì)鄰域內(nèi)特征點(diǎn)只取最大值;② 平均池化函數(shù),即對(duì)鄰域內(nèi)特征點(diǎn)只求平均值。分別按式(3)、(4)計(jì)算最大池化函數(shù)、平均池化函數(shù)。
poolingmax(?k)=maxi∈?kai,
(3)
(4)
式中:
poolingmax——最大池化函數(shù);
poolingave——平均池化函數(shù);
?k——卷積層輸出的特征向量劃分的多個(gè)區(qū)域,k=1,2,…,K。
全連接層的輸入特征是經(jīng)過反復(fù)提煉過的,因此直接使用原始數(shù)據(jù)作為輸入能夠取得更好的效果。試驗(yàn)?zāi)P椭杏袃蓪尤B接層,使用Relu激活函數(shù),采用softmax函數(shù)做分類器,輸出相應(yīng)的類別,試驗(yàn)中有兩種類別:第一種為正常果和缺陷果;第二種為完好櫻桃、裂口櫻桃、腐爛櫻桃、雙胞胎櫻桃、刺激生長櫻桃及鼻尖裂口櫻桃。由于試驗(yàn)中主要是基于缺陷分類,故模型最終的輸出根據(jù)第二種來定。
訓(xùn)練CNN,最終形成的訓(xùn)練模型如表1所示。
基于機(jī)器視覺的櫻桃缺陷檢測系統(tǒng)由硬件和軟件兩部分組成,硬件系統(tǒng)用來采集櫻桃圖像,軟件部分對(duì)圖像進(jìn)行處理。
圖片采集系統(tǒng)主要由照明系統(tǒng)、CMOS攝像機(jī)、吸光背景布、POE千兆網(wǎng)卡、計(jì)算機(jī)等組成,如圖2所示。照明系統(tǒng)包含圓頂光源和控制器,圓頂光源將內(nèi)嵌的高強(qiáng)度白色LED光經(jīng)圓頂內(nèi)壁漫反射到被測物體表面,很大程度上避免了櫻桃表面的反射和底部陰影,且有利于提高被測物體的輪廓、斑點(diǎn)等細(xì)節(jié)的清晰度,進(jìn)而提高檢測精度。光源控制器具有同步觸發(fā)模式,將其與相機(jī)觸發(fā)輸出接口相連可以通過相機(jī)快門同步觸發(fā)頻閃信號(hào)。在整個(gè)采集系統(tǒng)的外圍,定制了一個(gè)立方體的遮光盒,其內(nèi)壁由吸光背景布覆蓋。該外殼能有效屏蔽外界環(huán)境光的影響,減少內(nèi)部反射,使得采集的圖片處于同一光照條件下。CMOS相機(jī)、鏡頭及網(wǎng)卡均為主流的工業(yè)級(jí)產(chǎn)品。
表1 CNN模型設(shè)計(jì)
1.同步光源 2.控制器 3.CMOS相機(jī) 4.圓頂光源 5.傳送帶 6.櫻桃樣本 7.電腦
圖2 硬件框架圖
Figure 2 Hardware framework diagram
試驗(yàn)使用TensorFlow框架,Python3.7,軟件平臺(tái)采用Windows10系統(tǒng)、Pycharm,硬件環(huán)境為4 GB內(nèi)存,intel(R)Core(TM)i5-6500 CPU @ 3.20GHzHP LV2011的計(jì)算機(jī)。
每個(gè)櫻桃在采集圖像的過程中,根據(jù)不同角度采集6張圖片,以便能覆蓋櫻桃的全部表面信息。為了擴(kuò)大樣本數(shù)據(jù)集,先使用旋轉(zhuǎn)、縮放、按比例裁剪以及鏡像等Matlab操作方法擴(kuò)大樣本數(shù)據(jù),在此基礎(chǔ)上,建立櫻桃樣本庫,樣本數(shù)量15萬張,用樣本庫進(jìn)行模型訓(xùn)練。圖片采集平臺(tái)統(tǒng)一規(guī)格2 046×1 080,格式為bmp,為了較大地縮短訓(xùn)練時(shí)間,加快訓(xùn)練速度,所有照片在預(yù)處理時(shí)都被統(tǒng)一成64×64尺寸。具體的流程框架以及樣本示例如圖3、4所示。
圖3 流程框圖
圖4 樣本示例
試驗(yàn)?zāi)P筒捎肁damOptimizer法來最小化損失函數(shù),并對(duì)其進(jìn)行優(yōu)化。為了避免訓(xùn)練過程中產(chǎn)生過擬合現(xiàn)象,采用隨機(jī)失活方法,雖然時(shí)間增加了近3倍,但防過擬合效果很好[12]。經(jīng)過多次模型調(diào)試,最終將模型訓(xùn)練的批次大小設(shè)為50,即每次的輸入樣本數(shù)為50;隊(duì)列容量設(shè)為300,即一個(gè)隊(duì)列的最大輸入樣本數(shù)為300;訓(xùn)練總次數(shù)設(shè)為3 000,即進(jìn)行3 000次迭代訓(xùn)練,每隔100步輸出一次訓(xùn)練結(jié)果;基礎(chǔ)學(xué)習(xí)率設(shè)為0.001。
試驗(yàn)將6種預(yù)處理好的分類樣本各25 000張進(jìn)行訓(xùn)練學(xué)習(xí)。首先,采用人工標(biāo)記的方法對(duì)訓(xùn)練樣本進(jìn)行標(biāo)記,并用數(shù)字表示櫻桃樣本(0代表裂口櫻桃,1代表腐爛櫻桃,2代表雙胞胎櫻桃,3代表刺激生長櫻桃,4代表完好櫻桃,5代表鼻尖裂口櫻桃)。這種利用一組已知分類樣本來調(diào)整分類器參數(shù)以滿足所需性能的過程即監(jiān)督學(xué)習(xí)。經(jīng)過多次訓(xùn)練,最終得到一個(gè)最優(yōu)模型。對(duì)于每一種分類情況,由于其正確率的計(jì)算相同,以完好櫻桃為例,將完好櫻桃用正常果表示,將有缺陷櫻桃用缺陷果表示,如果將正常果識(shí)別為正常果表示為正預(yù)測的正類數(shù),用TP表示;將缺陷果識(shí)別為缺陷果表示為正預(yù)測的負(fù)類數(shù),用TN表示;將正常果識(shí)別為缺陷果表示為正預(yù)測的負(fù)類數(shù),用FN表示;將缺陷果識(shí)別為正常果表示為負(fù)預(yù)測的正類數(shù),用FP表示。按式(5)計(jì)算正確率(acc)。
(5)
由圖5可知,整體訓(xùn)練準(zhǔn)確率隨訓(xùn)練步數(shù)的增加逐漸提高;當(dāng)訓(xùn)練次數(shù)為2 300步時(shí),整體損失逐漸趨于0,櫻桃識(shí)別準(zhǔn)確率達(dá)100%。結(jié)果表明,試驗(yàn)設(shè)計(jì)的6層CNN結(jié)構(gòu)能在短時(shí)間內(nèi)有效提取櫻桃圖像的特征,使訓(xùn)練精度達(dá)到較高水平。
圖5 損失值及正確率隨迭代次數(shù)的變化趨勢圖
為了檢測使用64×64的櫻桃圖像進(jìn)行訓(xùn)練是否會(huì)對(duì)試驗(yàn)結(jié)果產(chǎn)生一定影響,在試驗(yàn)測試時(shí)選取720張櫻桃原圖進(jìn)行測試,每個(gè)分類各120張。由表2可知,完好、雙胞胎、鼻尖裂口及腐爛櫻桃測試結(jié)果均正確;裂口櫻桃有3個(gè)被識(shí)別錯(cuò)誤,刺激生長櫻桃有3個(gè)被識(shí)別錯(cuò)誤;完好、雙胞胎、鼻尖裂口和腐爛櫻桃識(shí)別正確率為100%,裂口、刺激生長櫻桃識(shí)別正確率為97.5%,處理速度可達(dá)25個(gè)/s,滿足了實(shí)時(shí)性要求。通過查看訓(xùn)練樣本可知,刺激生長櫻桃被識(shí)別為雙胞胎、裂口和完好櫻桃是因?yàn)閳D片在人為標(biāo)記過程中出現(xiàn)了分類錯(cuò)誤。說明使用預(yù)處理后的圖像進(jìn)行訓(xùn)練未對(duì)結(jié)果產(chǎn)生影響。
表2 識(shí)別正確率比較
根據(jù)櫻桃的實(shí)際售賣情況可知,裂口、雙胞胎、刺激生長及鼻尖裂口櫻桃是可以進(jìn)行售賣的,且裂口、鼻尖裂口櫻桃甜度更高,很多人更喜歡食用這兩種櫻桃,故試驗(yàn)將有缺陷的櫻桃劃分為裂口、鼻尖裂口、刺激生長、腐爛、雙胞胎5種類型,同時(shí)對(duì)完好櫻桃進(jìn)行了精確識(shí)別。由表3可知,試驗(yàn)方法優(yōu)于其他方法,有較高的精度及較快的識(shí)別速度。
表3 缺陷種類識(shí)別結(jié)果對(duì)比
試驗(yàn)將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于櫻桃的缺陷檢測上,實(shí)現(xiàn)了缺陷種類的精確分類,相比其他方法,分類效果得到了明顯提升,該方法可以準(zhǔn)確高效地識(shí)別出正常果和缺陷果,也能精確地細(xì)分5種缺陷果。根據(jù)識(shí)別個(gè)數(shù)分類可知,正常果識(shí)別準(zhǔn)確率為100%,缺陷果識(shí)別準(zhǔn)確率為99%;根據(jù)相似程度判斷可知,正常果識(shí)別準(zhǔn)確率為99.25%,缺陷果識(shí)別準(zhǔn)確率為97.99%,識(shí)別速度達(dá)25個(gè)/s。試驗(yàn)表明,該算法實(shí)時(shí)性好、識(shí)別率高,且通過與其他方法的對(duì)比,更加證實(shí)了該方法具有較高的精度和適用性。后續(xù)可涉及深化網(wǎng)絡(luò)模型結(jié)構(gòu),增加學(xué)習(xí)樣本種類,建立合理的分類分級(jí)邏輯和對(duì)硬件平臺(tái)的升級(jí),做到櫻桃更多缺陷種類的精確識(shí)別,提高分類器的識(shí)別能力與速度。