李琳芳,王建軍,魏征,馮向榮,安金梁
(1.河南科技學院信息工程學院,河南新鄉(xiāng)453003;2.河南科技學院新科學院,河南新鄉(xiāng)453003)
我國現(xiàn)有的水果檢測分類方法主要有人工檢測和機械檢測[1].人工檢測耗費人力、效率低下、分類不夠客觀準確;機械檢測容易對水果造成機械損傷,影響水果品質(zhì).采用機器視覺的圖像處理技術可以消除這些弊端,實現(xiàn)水果的高效無損自動檢測及分類.國內(nèi)外許多學者對基于機器視覺的圖像處理技術在水果缺陷檢測及分類方面的應用進行了大量研究,并取得了較大進展[2-3].Aleixos等[4]應用貝葉斯決策理論實時對柑橘類水果表面進行多光譜檢測;費爾南多等[5]基于顏色和紋理特征實現(xiàn)對柑橘類水果表面的缺陷診斷;López-García等[6]采用多變量圖像分析法和主成分分析法實現(xiàn)柑橘類水果表面的缺陷檢測.
傳統(tǒng)圖像分類主要包含特征提取和分類器設計兩大步驟,但有兩個突出的缺點[7]:一是需要人工設計特征,人工設計特征往往靠設計者的先驗知識,具有很大的盲目性,此外,考慮到手工調(diào)參數(shù),特征設計時只允許出現(xiàn)少量參數(shù);二是分類器結(jié)構簡單,可能無法將復雜的特征映射到最終識別結(jié)果.近年來,隨著標記數(shù)據(jù)和算力的提升,針對卷積神經(jīng)網(wǎng)絡的研究被廣泛應用于圖像處理領域[8-11],它很好地克服了傳統(tǒng)圖像分類的缺點.卷積神經(jīng)網(wǎng)絡可以從大數(shù)據(jù)中自動學習特征的表示,對特征有很強大的表征能力,不僅避免了人工提取特征的繁瑣,而且網(wǎng)絡學習的特征比人工設計的特征具有更強的泛化性能.卷積神經(jīng)網(wǎng)絡的特征提取器和分類器是串聯(lián)在一起的,訓練一個卷積神經(jīng)網(wǎng)絡就同時訓練了特征提取器和分類器.本文基于卷積神經(jīng)網(wǎng)絡設計了一個橘子檢測分類模型.
當前,沒有現(xiàn)成開源的數(shù)據(jù)集,自建了橘子數(shù)據(jù)集,主要包含數(shù)據(jù)采集、數(shù)據(jù)標注、數(shù)據(jù)劃分3個步驟.
(1)數(shù)據(jù)采集.通過兩種方式獲取橘子數(shù)據(jù)集:一種是利用智能手機在不同光照、不同背景、不同場景下拍攝橘子圖像;另一種是利用Python爬蟲自動搜集互聯(lián)網(wǎng)上的橘子圖像.由于卷積神經(jīng)網(wǎng)絡是基于大數(shù)據(jù)下的特征學習,通常數(shù)據(jù)集越大,提取到的特征越多,訓練得到的網(wǎng)絡模型越好;如果數(shù)據(jù)集不充分,訓練的模型容易發(fā)生欠擬合或過擬合.本文采取對獲取的數(shù)據(jù)進行60°旋轉(zhuǎn)、90°旋轉(zhuǎn)、120°旋轉(zhuǎn)、180°旋轉(zhuǎn)的方式擴充數(shù)據(jù)集.為了方便卷積神經(jīng)網(wǎng)絡對數(shù)據(jù)的讀入,對所有數(shù)據(jù)集格式進行統(tǒng)一化處理,將其尺寸統(tǒng)一固定為長為64、寬為64、水平分辨率為96、垂直分辨率為96.
(2)數(shù)據(jù)標注.整個數(shù)據(jù)集有2 000張圖片,根據(jù)橘子表皮的色澤和亮度、表面是否有霉斑和黑斑、橘子本身是否完整等,以人工標注的方式,將橘子分為合格品和不合格品.其中合格品為1 000張,不合格品為1 000張.圖1、圖2分別給出了橘子的部分合格品樣本圖片與不合格品樣本圖片.
圖1 部分合格品橘子Fig.1 Partial qualified oranges
圖2 部分不合格品橘子Fig.2 Partial unqualified oranges
(3)數(shù)據(jù)劃分.采用有監(jiān)督學習的方式訓練網(wǎng)絡模型時,為了得到泛化能力強、效果佳的網(wǎng)絡模型,一般會按照8∶2的比例將數(shù)據(jù)集劃分為訓練集和測試集.隨機選取800張合格品橘子圖片和800張不合格品橘子圖片作為訓練集,剩余200張合格品橘子圖片和200張不合格品橘子圖片作為測試集.
卷積神經(jīng)網(wǎng)絡是一種多層前饋神經(jīng)網(wǎng)絡,該網(wǎng)絡具備優(yōu)異的特征自學習能力、強大的并行處理能力以及良好的容錯能力.卷積神經(jīng)網(wǎng)絡的基本結(jié)構如圖3所示,主要由輸入層、卷積層、池化層、全連接層、輸出層5部分構成,每一層都是由若干個包含獨立神經(jīng)元的二維平面組成.
(1)輸入層:用于輸入圖像,輸入圖像的大小要統(tǒng)一.
(2)卷積層:卷積核在待提取特征的圖像上,按照一定步長,依次掃描進行線性卷積運算,再加一個偏置,通過激活函數(shù)得到提取的特征圖.通過引入非線性激活函數(shù),使得網(wǎng)絡可以表達非線性模型,增強了網(wǎng)絡的表達能力.
(3)池化層:池化也稱為下采樣,主要用于特征降維,壓縮數(shù)據(jù)和參數(shù)的數(shù)量,在一定程度上可以減小過擬合,提高模型的容錯性.
(4)全連接層:將卷積和池化之后提取的特征圖中的特征進行整合,映射成一個固定長度的特征向量,以便交給最后的分類器層.
(5)輸出層:輸出層一般為分類器層,最后輸出的是一個把制定分類的類目數(shù)作為維度的概率向量.
圖3 卷積神經(jīng)網(wǎng)絡基本結(jié)構Fig.3 Basic structureof convolutional neural network
設計的卷積神經(jīng)網(wǎng)絡模型如圖4所示,由1個輸入層、3個卷積層、3個池化層、1個全連接層和1個Softmax輸出層組成.
圖4 設計的卷積神經(jīng)網(wǎng)絡模型Fig.4 Convolutional neural network model designed
把64×64×3的RGB圖像輸入網(wǎng)絡,64×64指圖像的寬度×高度,3指圖像的R、G、B三個色彩通道,在卷積層Conv1層設計了32個5×5×3的卷積核,5×5指卷積核的寬度×高度,3指卷積核的深度,對應圖像的R、G、B三個色彩通道,卷積核遍歷圖像進行卷積運算后得到32個60×60的二維特征圖,然后通過ReLU激活函數(shù)進行計算,ReLU激活函數(shù)具有實現(xiàn)簡單、收斂快速的特點.卷積層的計算公式如式(1)所示
式(1)中:I表示輸入矩陣,W表示卷積核,b表示偏置,f(·)表示激活函數(shù).
已有研究表明,在圖像特征提取方面,最大池化效果優(yōu)于平均池化,設計的網(wǎng)絡結(jié)構池化層均采用最大池化操作.下采樣層Pool1層采用32個2×2的最大池化濾波器,池化步長為2,池化運算后得到32個30×30的二維特征圖.池化層的計算公式如式(2)所示
式(2)中:down表示池化操作.
在卷積層Conv2層使用64個5×5×3的卷積核,計算過程類似于Conv1層,經(jīng)過卷積運算后得到64個26×26的二維特征圖,下采樣層Pool2層采用64個2×2的最大池化濾波器,經(jīng)過池化運算,得到64個13×13的二維特征圖,保留主要特征的同時進一步實現(xiàn)了降維,減少了后續(xù)層中參數(shù)的數(shù)量.
經(jīng)過Conv1層和Conv2層之后已經(jīng)提取了大部分特征,考慮到自建的樣本數(shù)目不是很大,在Conv3層使用128個3×3×3的卷積核,小卷積核雖然感知野小了,但不會影響訓練精度,而且減少了網(wǎng)絡訓練參數(shù).下采樣層Pool3層采用128個2×2的最大池化濾波器,經(jīng)過池化運算,得到128個6×6的二維特征圖.
全連接層FC層將Pool3層產(chǎn)生的二維特征圖轉(zhuǎn)變?yōu)橐痪S特征數(shù)據(jù),利用Softmax邏輯回歸對特征進行分類.Softmax函數(shù)計算公式如式(3)所示
式(3)中:Ii為所有輸入組合中的第i個輸入,K為輸入神經(jīng)元個數(shù).通過Softmax函數(shù),輸出值就映射到了[0,1]范圍的值,Softmax分類是根據(jù)概率值大小進行的分類.
實驗環(huán)境為64位的Win10系統(tǒng),計算機的CPU為Intel(R)Core(TM)i5-6600K,CPU的主頻為3.5GHz,內(nèi)存為16 GB.模型訓練是利用Anaconda下基于Python語言的Spyder編譯工具,采用Keras深度學習框架.
設計的網(wǎng)絡模型訓練過程如圖5所示.將橘子圖片數(shù)據(jù)集作為輸入分批量提供給網(wǎng)絡,經(jīng)過卷積神經(jīng)網(wǎng)絡模型后提取分類特征,利用Softmax分類器進行分類,根據(jù)預測的橘子品類和實際的橘子品類計算損失函數(shù),通過小批量梯度下降法,利用反向傳播調(diào)整網(wǎng)絡參數(shù),不斷減小損失直至網(wǎng)絡收斂.
圖5 網(wǎng)絡訓練過程Fig.5 Network trainingprocess
為了提高網(wǎng)絡收斂速度,對輸入網(wǎng)絡的橘子圖像進行像素值的去均值歸一化處理.去均值歸一化處理的計算公式為
式(4)中:I表示輸入圖像任意一點的像素值,μ表示輸入圖像的像素均值.
利用均方誤差作為網(wǎng)絡訓練的損失函數(shù).損失函數(shù)計算公式為
式(5)中:C為分類的類別數(shù),表示訓練集中第k個樣本第j維所對應的期望值,表示第k個樣本第j維所對應的實際輸出.
訓練過程中設定批處理的批尺寸為64,初始學習率為0.000 1,迭代步數(shù)為30步,訓練集包含1 600個正樣本和1 600個負樣本,測試集包含400個正樣本和400個負樣本,訓練集的精度和測試集的精度分別如圖6和7所示.
圖6 訓練集精度Fig.6 Accuracy of thetrainingset
圖7 測試集精度Fig.7 Accuracy of the test set
由圖6可以看出,訓練集的精度呈上升趨勢,經(jīng)過一段時間的訓練后,精度保持在98%以上,由此可知訓練模型是比較成功的.利用測試集對訓練模型進行測試,由圖7可以看出,測試集的精度基本都在94%以上,某些時刻的精度比較低,可能是個別樣本引起的,對運行結(jié)果中測試集的精度進行均值計算,整個測試集的平均精度為94.34%.整個測試集的平均精度明顯低于訓練集的平均精度99.38%,主要是因為訓練的樣本和測試的樣本數(shù)量有限導致.
表 1給出了本文算法和現(xiàn)有檢測分類算法 PCA+KSVM[12]、PCA+FSCAB[13]、FREE+BPNN[14]、FREE+IHGA[15]的精度對比情況,由于本文算法與其他分類算法的數(shù)據(jù)集不完全相同,因此分類精度是在分類的平均精度上進行比較,對比發(fā)現(xiàn)本文算法具有更優(yōu)的分類性能.
表1 不同算法平均精度比較Tab.1 Comparison of theaverageaccuracy of different algorithms
本文設計了基于卷積神經(jīng)網(wǎng)絡的橘子分類識別模型,并對網(wǎng)絡模型進行了訓練.模型在足夠的樣本學習之后,可以自動獲取樣本特征,與傳統(tǒng)分類模型相比,具有更高的速度、更強的泛化性能和更好的識別效果.在訓練樣本和測試樣本有限的情況下,模型準確率達到了94.34%,驗證了模型的準確性和可靠性.