項輝宇,黃恩浩,冷崇杰,張 勇
(北京工商大學(xué) 人工智能學(xué)院,北京 100048)
在蘋果的質(zhì)量檢測方面,國外的研究較為先進,可準確檢測蘋果的外觀,并對內(nèi)部缺陷等問題進行深入研究。國內(nèi)對于蘋果等水果的檢測主要采用人工識別的方法,近年來也出現(xiàn)一些運用圖像處理自動識別的方法,但不夠準確、高效。1984年,Thylor R.W.等提出了用模擬攝像機檢測蘋果的外部損傷;1989年Rehkugler G.E.和Throop J.A.提出一種基于損傷面積和表面灰度的新算法;Kazuhiro Nakano等通過神經(jīng)網(wǎng)絡(luò)對蘋果的顏色進行分級。國內(nèi)的研究者們在21世紀也紛紛投入此項研究中。項輝宇等[1]使用Halcon對蘋果的外部與特征進行圖像處理的研究,該方法可較好地完成缺陷等外部特征的識別檢測;高輝等[2]采用亮度校正與機器視覺結(jié)合的方法對蘋果的缺陷進行快速檢測,該方法較為清晰且準確率較高;周雨帆等[3]采用輕量級卷積神經(jīng)網(wǎng)絡(luò),大幅減少了模型參數(shù)和訓(xùn)練時間,對蘋果的表面缺陷檢測取得了較好的效果。在傳統(tǒng)研究方法中,多數(shù)學(xué)者對檢測識別進行了探究,但如何在識別到分級的整個過程中做到完全自動化還沒有很好的解決方 案[4-5]。因此,本研究嘗試采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)與 分 類 器(Support Vector Machine,SVM)相結(jié)合的方法,對比圖像識別方法的結(jié)果,檢測其準確率,并為深度學(xué)習(xí)在其他領(lǐng)域的新應(yīng)用提供思路與理論基礎(chǔ)。
蘋果的來源:放置一段時間的市售紅富士蘋果;維視視覺檢測(MV-BDP200型),維視數(shù)字圖像技術(shù)有限公司。
1.2.1 蘋果特征檢測
(1)特征檢測整體流程。蘋果的大小、顏色、缺陷檢測的總體流程如圖1所示,其中缺陷檢測是3項檢測中最重要的,因此也是內(nèi)容最復(fù)雜的。
圖1 特征檢測流程圖
圖像增強是將原圖像中的感興趣特征放大,讓圖像更清晰,更好地達到檢測的需要。圖像復(fù)原是利用模糊函數(shù)將圖像的模糊部分去除,還原圖像。圖像灰度處理是將彩色圖片轉(zhuǎn)化成灰白圖片,為后續(xù)圖片的其他處理做準備工作。圖像二值化是將得到的灰度化圖像,通過設(shè)定閾值門限進行分割,高于閾值的像素值變?yōu)?,低于閾值的像素值變?yōu)?,從而使圖像只有兩個值。圖像的平滑處理有3種最主要的方法,即中值濾波法、鄰域平均法和高斯濾波法,綜合考慮各方法的優(yōu)缺點,并根據(jù)本實驗希望得到清晰、平滑、精準的預(yù)處理圖的目的選擇最適合于本次研究的高斯濾波法。高斯濾波法是目前應(yīng)用最廣泛的平滑圖像方法,能夠非常有效地抑制噪聲,達到平滑圖像的目的。高斯濾波器輸出的是濾波窗口內(nèi)所有像素的平均值,它的模板系數(shù)隨著距模板中心的距離增大而減小,這使高斯濾波器具有很大優(yōu)勢,因此它對圖像的模糊程度比其他幾種濾波器要小。由圖2可以看出,經(jīng)過圖像增強以及濾波過后的圖片,特征清晰度更高。
圖2 圖像增強及灰度直方圖
(2)大小檢測。通過蘋果在圖像中的面積對整體大小進行檢測。利用imfill函數(shù),填充二值圖像中的空洞區(qū)域bw=imfill(~bw,‘holes’);利用bwarea函數(shù)計算面積bwarea(bw)。
(3)顏色檢測。在檢測水果顏色時,需要找到適合的顏色模板,目前常用的顏色模板有RGB、HIS、HSV和HSB等,本實驗選取HSV模型檢測蘋果的顏色信息。蘋果的顏色檢測主要通過圖像的H分量展示,詳見圖3。
圖3 HSV分量
(4)缺陷檢測。蘋果的缺陷檢測是3項檢測中最重要的,也是復(fù)雜程度最高的。在實驗中主要采用邊緣檢測求出缺陷的區(qū)域從而識別。在圖像邊緣檢測過程中,涉及Sobel算子、Canny算子、Laplacian算子、Prewitt算子和Roberts算子等一系列非常重要的檢測算子,其優(yōu)缺點見表1。
表1 各算子優(yōu)缺點對比
Roberts算子是最簡單的算子之一,是一種使用局部差分算子來尋找邊緣的算子。對角線上兩個相鄰像素之間的差異用于近似梯度幅度以檢測邊緣。檢測垂直邊緣的效果優(yōu)于傾斜邊緣,定位精度高,對噪聲更敏感,無法抑制噪聲的影響。Roberts邊緣算子是一個2×2模板,它使用對角線方向上兩個相鄰像素之間的差異。從圖像處理的實際效果來看,邊緣定位準確,對噪聲敏感。Roberts算子的模板及算法原理如式(1)、式(2)所示,對于輸入圖像f(x,y),使用Roberts算子后輸出的目標圖像 為G(x,y)。
Roberts算子是2×2算子模板。式(3)、式(4)所示的2個卷積核形成了Roberts算子。
圖像中的每一個點都用這2個核做卷積。Sobel算子對傳入的圖像像素執(zhí)行卷積。卷積的本質(zhì)是求梯度值,或給一個加權(quán)平均,權(quán)重就是所謂的卷積核;生成新像素的灰度值作閾值計算來確定邊緣信息。Sobel算子認為鄰域內(nèi)的像素點對當(dāng)前像素點的影響是不等價的,因此不同距離的像素點權(quán)重不同,對算子結(jié)果的影響也不同。一般來說,距離越遠,影響越小。運算原理如式(5)、式(6)、式(7)。
其中,Gx是對原圖x方向上的卷積,Gy是對原圖y方向上的卷積,代入A,則最終得到的G就是(x,y)處的像素值。Sobel算子在兩個方向上的檢測效果見圖4。
圖4 Sobel算子邊緣檢測
在表面效應(yīng)方面,Canny算法是對Sobel等算子效應(yīng)的進一步細化和更準確的定位。Canny算法步驟如下。
使用高斯濾波器,以平滑圖像,濾除噪聲。二維高斯分布公式如下:
計算圖像中每個像素點的梯度幅值和方向。此步驟方法與Sobel算子非常類似。運用一對卷積陣列,使用式(9)、式(10)、式(11)計算梯度幅值和方向,梯度幅值近似到4個可能的角度之一(一般為0,45,90和135)。
應(yīng)用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應(yīng)。這一步也是使Canny算子優(yōu)于Sobel算子最重要的步驟。
應(yīng)用雙閾值(Double-Threshold)檢測來確定真實的和潛在的邊緣。
確定出一定是邊的像素點,然后遍歷這些一定是邊的像素點的8鄰域,找到是否存在灰度值在minvalue與maxvalue之間可能是邊的像素點。如果此像素點可能是邊并且又在肯定是邊的像素點的8鄰域內(nèi),則將其標記為一定是邊的像素點。將這些一定是邊的像素點連接起來就是邊緣。
1.2.2 分級系統(tǒng)及基于深度學(xué)習(xí)的蘋果質(zhì)量自動評級
(1)單項分級。先將檢測到的蘋果大小、顏色、缺陷進行單項分級。①大小(面積bw)。當(dāng)bw≥ 30000時顯示為A級果;當(dāng)1000<bw<30000時顯示為B級果;當(dāng)0<bw≤1000時顯示為C級果。②顏色(H分量r)。當(dāng)r>1.0時顯示為A級果;當(dāng)0.8<r<1.0時顯示為B級果;當(dāng)r<0.8時顯示為C級果。③缺陷(缺陷面積比Q)。用以下代碼將缺陷面積占比Q表示出來。X=imclearborder(bw,4);Q=(bwarea(X)/bwarea(~bw))。當(dāng)Q<0.05時 顯 示 為A級果;當(dāng)0.05<Q<0.10時顯示為B級果;當(dāng)Q≥0.10時顯示為C級果。
(2)設(shè)計GUI界面。本實驗將原始圖像、二值圖像、H分量圖像、濾波圖像、通過3種算子檢測的邊緣圖像以及檢測得到的大小、顏色缺陷的結(jié)果及評級展示在同一界面上,使該研究結(jié)果更清晰明了。設(shè)計GUI界面如圖5所示。
圖5 GUI界面
(3)總體質(zhì)量評級。通過上述方法,得到蘋果的大小、顏色以及缺陷評級A、B、C。本實驗將最終評級細化,將三者綜合在一起。若三者都是A,則整個蘋果質(zhì)量為A;若三者有兩個A、一個B,則整個蘋果質(zhì)量為A-;若三者有一個A、兩個B或兩個A、一個C,則整個蘋果質(zhì)量為B+;若三者有一個A、一個B、一個C或三者都為B,則整個蘋果質(zhì)量為B;若三者有一個A、兩個C或兩個B、一個C,則整個蘋果質(zhì)量為B-;若三者有一個B、兩個C,則整個蘋果質(zhì)量為C+;若三者都是C,則整個蘋果質(zhì)量為C。該總體評級由簡單的條件語句即可完成,總體質(zhì)量評級表見表2。如圖5中該蘋果顏色為C、大小為A、缺陷為C,故總體質(zhì)量為B-。
表2 總體質(zhì)量評級表
(4)基于深度學(xué)習(xí)的自動分級。上述方法檢測結(jié)果非常準確,但不太便捷,需要手動選擇蘋果圖像,檢測過程較為煩瑣,圖像識別運行速度不夠迅速,因此本文引入深度學(xué)習(xí)的方法,與上述方法相結(jié)合,通過卷積神經(jīng)網(wǎng)絡(luò),經(jīng)過圖像處理和特征提取,對比預(yù)測出最終分級結(jié)果并對準確率進行比對。
卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中在分類識別方面最常見的,由圖6可知,它的結(jié)構(gòu)主要包括輸入層、卷積層、池化層、全連接層和輸出層。卷積神經(jīng)網(wǎng)絡(luò)可很好地實現(xiàn)特征提取,而SVM學(xué)習(xí)的超平面是距離各個類別樣本最遠的平面,用于分類的可靠性,是機器學(xué)習(xí)工具中最好的。機器學(xué)習(xí)的最終目的就是找到一個最優(yōu)的分類超平面,用這個分類超平面區(qū)分開類別不同的圖片。本文將CNN卷積層提取的特征向量交給SVM進行分類,這樣泛化效果更好。建立整合的卷積神經(jīng)網(wǎng)絡(luò),利用訓(xùn)練數(shù)據(jù)進行訓(xùn)練,得到卷積層的權(quán)重參數(shù),之后將卷積層輸出交給SVM,再利用上一步的特征向量對SVM進行訓(xùn)練(將CNN最后一層配置為HingeLoss即可成為SVM分類器)。
在機器學(xué)習(xí)過程中,分類器的訓(xùn)練是最重要的一部分,不斷通過調(diào)節(jié)參數(shù)與訓(xùn)練適配特征向量,得到最適合本次研究的分類器參數(shù)。訓(xùn)練分類器的步驟見圖7。
圖7 訓(xùn)練分類器步驟
SVM模型有兩個非常重要的參數(shù)C和γ,其中C是懲罰系數(shù),C越高,說明越不容忍出現(xiàn)誤差,極易造成過擬合,反之C越小易造成欠擬合。C值過大或過小都會使泛化能力變差。γ是RBF函數(shù)自帶的參數(shù),它決定了數(shù)據(jù)映射到新特征空間后的分布,γ越大,支持向量越少,γ越小,支持向量越多,支持向量的個數(shù)直接影響訓(xùn)練和預(yù)測的速度。使用Cross Validation和GridSearch得 到 最 優(yōu) 的C和γ。SVM分類器無法一次性預(yù)測出總體級別,因此按3個特征的級別給圖片貼上標簽(即每組特征將每張圖片標簽),讓其進行單項識別與預(yù)測,將評級標準按照表2合并,得到總體級別。
1.2.3 準確率判斷
本文選取800個蘋果樣品圖片(140個優(yōu)質(zhì)果,660個有缺陷果)作為數(shù)據(jù)集,選取圖像檢測結(jié)果作為評判標準,再對深度學(xué)習(xí)得到的蘋果評級進行準確率判斷。在800個樣品圖片中隨機選取400個蘋果樣品圖像進行訓(xùn)練,將剩下400個蘋果樣品圖像作為測試集進行檢測。統(tǒng)計測試集的圖像檢測結(jié)果與深度學(xué)習(xí)檢測結(jié)果。
由表3可知,A級果及A-級果的準確率較低,但其他各級果分類準確率均超過90%,總體分類準確率平均可達91.5%,分類效果比較理想。但是,C類果判斷準確而A和A-類果判斷略有偏差,這說明判斷條件過于苛刻,還需再調(diào)整參數(shù),數(shù)據(jù)集不夠充足,導(dǎo)致預(yù)測結(jié)果準確率有偏差,需補充數(shù)據(jù)。
表3 圖像檢測結(jié)果與深度學(xué)習(xí)結(jié)果對比
本實驗采用Matlab對蘋果圖像進行處理,傳統(tǒng)圖像識別方法與深度學(xué)習(xí)相結(jié)合,運用卷積神經(jīng)網(wǎng)絡(luò)CNN提取特征,支持向量機SVM進行分級預(yù)測,分級效果十分顯著。通過本實驗也驗證了支持向量機SVM在分類識別方面確實有著非常優(yōu)異的表現(xiàn)。這也為卷積神經(jīng)網(wǎng)絡(luò)CNN與支持向量機SVM相結(jié)合進行分類預(yù)測的方法在水果分級領(lǐng)域奠定了基礎(chǔ),也為深度學(xué)習(xí)在其他領(lǐng)域的應(yīng)用提供了新的參考和思路。