高霽月 倪建功 楊昊巖 韓仲志
(青島農業(yè)大學理學與信息科學學院, 青島 266109)
開心果味香、營養(yǎng)豐富,具有很高的經(jīng)濟價值,但其果殼堅硬,人工難以將開口過小或者不開口的開心果剝開,開口與否直接關系到開心果的品質、經(jīng)濟價值和消費者對品牌的評價。開心果果殼的開口率低、表面褐斑、果殼畸形和混入雜物(如石子、樹枝)等現(xiàn)象會大大降低開心果產(chǎn)品的品質,所以在產(chǎn)品上架前對開心果進行開口檢測非常必要。理想的果殼開口程度是消費者能用手指輕易取出核仁,因此未開裂的開心果需要在產(chǎn)品上架前分揀出來,加工出理想的開口[1]。
目前,對開心果開口品質的檢測絕大多數(shù)是通過聲音判斷[2-5]。鐘晨玉等[4]設計了開心果碰撞聲分揀試驗裝置,分析傳聲器位置、開心果下落高度及碰撞塊傾斜角對碰撞聲特征的影響;臧富瑤等[5]根據(jù)開心果撞擊大理石的聲音信息,測得開心果閉口、半開口、開口3種聲音狀態(tài),獲得80個不同樣本開心果的碰撞聲信號,經(jīng)處理得到信號的時域和頻域圖形,從中提取分揀特征。郭曉偉[6]通過開心果的質心位置以及兩條輔助線,開殼果正確分類率為93%,但此研究只檢測了開口和閉口,并未提及褐斑、雜質、畸形等其他缺陷。
為驗證圖像檢測農產(chǎn)品品質的可行性,韓仲志等[7]測量每個花生籽粒外觀圖像的形態(tài)、紋理、顏色共3大類54個特征,采用主分量分析(PCA)進行特征優(yōu)化,然后導入神經(jīng)網(wǎng)絡(ANN)和支持向量機(SVM)模型進行比較,最終能夠鑒別95%以上的不完善粒、霉變、雜質、異品種等不同品質的籽粒。近年來,圖像處理技術已廣泛應用于農產(chǎn)品品質檢測中,特別是深度學習算法出現(xiàn)后,品質識別不需要人為定義特征,深度學習的簡便性和準確性使其在圖像檢測領域得以快速發(fā)展。卷積神經(jīng)網(wǎng)絡(Convolutional neural network,CNN)是一類包含卷積計算且具有深度結構的前饋神經(jīng)網(wǎng)絡,是深度學習的代表算法之一,其設計靈感來自生物體的自然視覺感知機制,可以自動提取最具有代表性的圖像特征[8-9]。圖像分類是計算機視覺領域中的基本任務, 通常指將圖像分類到幾個預定義的類中,構成其他計算機視覺任務的基礎[10]。卷積神經(jīng)網(wǎng)絡在圖像分類和目標檢測領域應用廣泛[11-12],農業(yè)圖像檢測也越來越多運用了卷積神經(jīng)網(wǎng)絡的方法[13-17]。
基于深度學習的圖像識別技術在理論上能更精確地識別開口程度和雜物,并進一步定位到開心果的位置,配合噴氣裝置可以精準挑揀出開口不合格和外觀缺陷的開心果。然而,網(wǎng)絡模型訓練時數(shù)據(jù)量的平衡性會影響訓練模型的性能,且數(shù)據(jù)不平衡現(xiàn)象經(jīng)常發(fā)生[18-19]。傳統(tǒng)分類方法通常假設數(shù)據(jù)類別分布均衡,但由于多數(shù)類和少數(shù)類在數(shù)量上的傾斜,以總體分類精度最大為目標,會使分類模型偏向于多數(shù)類而忽略少數(shù)類,從而造成少數(shù)類的分類精度較低[20]。同樣在使用神經(jīng)網(wǎng)絡分類時,訓練網(wǎng)絡所用的數(shù)據(jù)集樣本不均衡會影響神經(jīng)網(wǎng)絡的分類效率和準確率。針對上述問題,本文提出一種數(shù)據(jù)自動平衡檢測方法,并采用6種不同的深度網(wǎng)絡探究數(shù)據(jù)平衡算法對分類準確率的影響。
按照中國食品工業(yè)協(xié)會堅果炒貨專業(yè)委員會發(fā)布的《生干堅果質量等級要求》,將數(shù)據(jù)集分為3類:開口、閉口和外觀缺陷及雜物(以下簡稱缺陷),其中開口標準為開口程度不小于2 mm×6 mm的開心果,閉口的標準為開口小于2 mm×6 mm的開心果,缺陷包括果殼表面褐斑以及混入雜物。
圖1為開心果的圖像采集環(huán)境,其中包括:攝像頭及支架、光源、黑色背景板、開心果以及計算機。圖像采集流程為:首先將市場上購買的未漂白開心果平鋪于黑色背景板之上,固定攝像頭位置和光源;然后通過攝像頭拍攝開心果圖像;最后導入計算機進行分類訓練。圖2是開心果感興趣區(qū)域提取流程,圖2a為原始圖像,通過二值處理、膨脹、閾值分割得到圖2b,然后設定連通區(qū)域面積,框選開心果輪廓得到圖2c,再將紅框坐標對應到原始圖像對單個籽粒進行裁剪,最終得到單粒開心果的數(shù)據(jù)集。
圖3為不同類型開心果示例圖,經(jīng)過數(shù)據(jù)預處理后,獲得單粒開心果圖像,包含開口圖像1 331幅,閉口圖像415幅,缺陷圖像92幅,共1 838幅圖像,各類數(shù)據(jù)數(shù)量相差很大,各個分類之間的數(shù)據(jù)量極不平衡,需要設計數(shù)據(jù)集平衡方法。
針對上述數(shù)據(jù)不平衡的問題,本文提出一種數(shù)據(jù)自動平衡的算法,目的是在數(shù)據(jù)導入網(wǎng)絡分類模型之前將訓練集數(shù)據(jù)集類別數(shù)量進行平衡,提高網(wǎng)絡的準確率。基本流程為先獲得每個分類的原始數(shù)量,再依次將所有數(shù)值小的分類集向數(shù)值最大的分類集數(shù)量擴增,具體方法為:
(1)輸入:數(shù)據(jù)集S=[M1,M2,…,Mi][N1,N2,…,Nj]T,輸入中的Mi為數(shù)據(jù)集中樣本種類,Nj為每一類樣本的數(shù)量。
(2)比較數(shù)據(jù)集中每一類的最大值MiNj,找到所有類中最大值MiNjmax。
(3)用所得最大值MiNjmax依次除以剩余類的最大值MiNj,得到除數(shù)C=[{c1,c2,…,ci-1}]。
(4)按照除數(shù)C對剩余類進行擴增,得MiN′j=MiNjC,使所有類數(shù)量向MiNjmax靠攏。
(5)輸出:得到擴增后的數(shù)據(jù)集T=[M1,M2,…,Mi][N′1,N′2,…,N′jmax]T。
以此開心果數(shù)據(jù)集為例,原始數(shù)據(jù)中開口圖像1 331幅,閉口圖像415幅,缺陷圖像92幅,共1 838幅圖像,取出最大值1 331,將閉口組的數(shù)量與最大值1 331相除,除數(shù)向下取整,最大值為12(超過12的值按照12運算)。將閉口的415幅圖像旋轉3次得到1 245幅圖像,缺陷組也與最大值1 331相除得到數(shù)值14,但是為了方便旋轉,最大擴增值只能為12,通過12次旋轉將缺陷擴增為1 104幅圖像,合格的開口開心果原始圖像保持1 331幅不變,至此,平衡后的圖像共3 680幅。
所用的2組數(shù)據(jù)集的來源為:將1.1節(jié)中獲得的未經(jīng)過數(shù)據(jù)平衡的1 838幅圖像通過保留原圖、7次旋轉、水平鏡像和垂直鏡像,擴充為原先的10倍,得到18 380幅圖像,形成未平衡數(shù)據(jù)集A。平衡數(shù)據(jù)集B的構成是將以上所述的3 680幅圖像擴增至原來的5倍,擴增方法包括原圖、水平鏡像、垂直鏡像、尺寸縮小至原圖3/5以及尺寸擴張為原圖的1.4倍,數(shù)據(jù)集B共包含18 400幅開心果圖像,A、B2個數(shù)據(jù)集之間只相差20幅圖像,但在各組分類數(shù)量的比例上差別很大,A組開口、閉口和缺陷的圖像數(shù)比例約為100∶30∶7,而數(shù)據(jù)平衡后的B組接近于1∶1∶1。
表1為實驗所用6種網(wǎng)絡,其中SqueezeNet和ShuffleNet為輕量型網(wǎng)絡,各個網(wǎng)絡之間存在一定的差異性,使用數(shù)據(jù)平衡算法對不同神經(jīng)網(wǎng)絡的穩(wěn)定性進行了驗證。
表1 實驗所用6種網(wǎng)絡
神經(jīng)網(wǎng)絡選取AlexNet、GoogLeNet、ResNet50、SqueezeNet、ShuffleNet和Xception訓練網(wǎng)絡進行遷移學習。將數(shù)據(jù)集按照70∶15∶15的比例隨機劃分為訓練集、驗證集和測試集。其中,訓練集和驗證集用于網(wǎng)絡模型的訓練,測試集數(shù)據(jù)未用于網(wǎng)絡模型訓練,而是用來測試網(wǎng)絡的準確率。
表2是未平衡數(shù)據(jù)集A和平衡數(shù)據(jù)集B的分類準確率,分別記錄了AlexNet、GoogLeNet、ResNet50、SqueezeNet、ShuffleNet和Xception這6種網(wǎng)絡在驗證集、測試集的準確率以及網(wǎng)絡訓練時間。
表2 未平衡數(shù)據(jù)集A和平衡數(shù)據(jù)集B的分類準確率
對于未平衡數(shù)據(jù)集A, ResNet50網(wǎng)絡的分類效果最好,驗證集準確率最高達到99.13%,在測試集上也達到98.77%;SqueezeNet在驗證集的準確率為93.69%,測試集準確率為93.76%,在6種網(wǎng)絡中準確率最低。除SqueezeNet之外,其他網(wǎng)絡驗證集的準確率均在96%之上,6種網(wǎng)絡驗證集平均準確率為97.18%,測試集平均準確率為96.75%。AlexNet在未平衡數(shù)據(jù)的驗證集上,準確率高于SqueezeNet 4.9個百分點,在測試集上AlexNet準確率也比SqueezeNet高4.03個百分點。AlexNet、ResNet50和GoogLeNet在未平衡數(shù)據(jù)集A上性能優(yōu)越,而SqueezeNet、ShuffleNet和Xception網(wǎng)絡分類準確率可以接受但相對較差。從訓練時間來看,AlexNet與SqueezeNet用時最短約15 min,Xception運行時間最長,為151 min,因此如果想用最少的訓練時間得到一個性能高的網(wǎng)絡,AlexNet最佳。
經(jīng)過平衡的數(shù)據(jù)集B在每個網(wǎng)絡上的驗證集和測試集的準確率都有提升,而且對原先分類效果欠佳的網(wǎng)絡準確率提升非常明顯。平衡數(shù)據(jù)集B的驗證集的平均準確率為99.14%,測試集的平均準確率為99.26%,驗證和測試準確率均高于99%。在未平衡數(shù)據(jù)集中分類效果欠佳的SqueezeNet網(wǎng)絡準確率提升最明顯,其驗證集準確率由93.69%提升到了99.17%,測試集的準確率從93.76%提升至99.02%。相對于數(shù)據(jù)集A,數(shù)據(jù)集B的測試集平均準確率提高了2.51個百分點,驗證集平均準確率提高了1.96個百分點, AlexNet、ResNet50和GoogLeNet這3種網(wǎng)絡在驗證集和測試集上的準確率接近1,SqueezeNet、ShuffleNet和Xception的驗證集準確率都在98%以上,明顯優(yōu)于未平衡前的準確率。數(shù)據(jù)集A和B的訓練時間在同一網(wǎng)絡下無明顯差異,訓練時間與網(wǎng)絡模型的結構、參數(shù)量以及訓練數(shù)據(jù)量有關。
數(shù)據(jù)平衡前后測試集的混淆矩陣如表3和表4所示,表3展示了未平衡數(shù)據(jù)集A的開口、閉口以及缺陷圖像在測試集的預測結果,數(shù)據(jù)集A的測試集共有2 756幅圖像,其中標記為開口的圖像1 996幅,閉口圖像622幅、缺陷圖像138幅。從表3中可以看出GoogLeNet和SqueezeNet網(wǎng)絡的主要錯誤是將開口預測為缺陷,這是因為開口圖像中有的果殼表面有面積較小的褐斑,神經(jīng)網(wǎng)絡會誤將其歸類為外表缺陷。和前者相反,AlexNet、ResNet50、ShuffleNet和Xception網(wǎng)絡的主要錯誤之一是將缺陷預測為開口,說明ShuffleNet和Xception網(wǎng)絡在分類時,對開口特征的權重大于缺陷特征的權重。在所有網(wǎng)絡中將閉口預測為開口也是一種常見錯誤預測,這是因為有的閉口開心果開口接近開口標準2 mm×6 mm,而各組分類數(shù)據(jù)不平衡,網(wǎng)絡無法學習足夠多的閉口訓練樣本實現(xiàn)精確分類。
表3 未平衡數(shù)據(jù)集A對于開口、閉口以及缺陷圖像在測試集的預測結果
表4為平衡數(shù)據(jù)集B的開口、閉口以及缺陷圖像在測試集上的預測結果,數(shù)據(jù)集B中共有2 760幅測試圖像,其中標記為開口的圖像共998幅,閉口圖像934幅、缺陷圖像828幅。從表現(xiàn)結果來看,使用ResNet50分類后的開心果其網(wǎng)絡準確率最高,達到了99.9%, ResNet50網(wǎng)絡在這2 760幅圖像中只將1個開口圖像錯誤分類為閉口,這就最大程度保證了開心果的品質,減少開心果分類時誤判造成的浪費。SqueezeNet與GoogLeNet相比,分類效果較差,分別有12個和10個缺陷開心果分類為開口開心果。ShuffleNet和Xception是準確率最低的2種網(wǎng)絡,與其他網(wǎng)絡相比,分類錯誤的情況較為明顯。
表4 平衡數(shù)據(jù)集B對于開口、閉口以及缺陷圖像在測試集的預測結果
圖4是利用Grad-CAM算法將網(wǎng)絡判斷模型可視化,Grad-CAM(類激活熱力圖)將最后一層特征圖所有像素的權值計算,最后按照每個像素的權值可視化[27],在本實驗中,最后輸出的特征圖分辨率不一定與輸入圖像一致,無論輸入圖像的尺寸大小,所有經(jīng)過Grad-CAM算法后的特征圖都統(tǒng)一尺寸。特征圖中紅色表示神經(jīng)網(wǎng)絡判定開心果類別的高權重區(qū)域,藍色表示網(wǎng)絡分類低權重的區(qū)域,色彩越紅表示這塊區(qū)域對分類結果的影響越大??梢钥闯?,網(wǎng)絡在分類為開口時的重要部位在開口處及周圍,分類為閉口圖像時會找到大面積的白色果殼區(qū)域,分類為缺陷和異物時網(wǎng)絡的關注點在于檢測目標物的形狀、畸形區(qū)域或者是褐斑的位置。
(1)數(shù)據(jù)平衡方法可以提高網(wǎng)絡準確率,其平均測試準確率提高了2.51個百分點,平均驗證準確率提高了1.96個百分點,其中SqueezeNet網(wǎng)絡提高幅度最大,分別提高了5.26個百分點和5.48個百分點。
(2)神經(jīng)網(wǎng)絡可適用于開心果品質檢測分類,本實驗6種網(wǎng)絡平均測試準確率為99.26%,平均驗證準確率為99.14%,其中ResNet50的測試準確率達到99.96%,可作為開心果檢測分類的首選網(wǎng)絡。
(3)可視化網(wǎng)絡分類高權重的區(qū)域與人工判別開心果所關注的區(qū)域基本一致,從而驗證了網(wǎng)絡分類的合理性。