(北京工商大學(xué) 計算機與信息工程學(xué)院 食品安全大數(shù)據(jù)技術(shù)北京市重點實驗室,北京 100048)
近年來,隨著人工智能、計算機視覺技術(shù)的迅猛發(fā)展,圖像識別作為深度學(xué)習(xí)技術(shù)中重要應(yīng)用之一,受到越來越多的關(guān)注。目前,人們對水果圖像的識別研究主要集中在水果品質(zhì)分級、成熟度識別等方面,而對智慧農(nóng)業(yè)以及采摘機器人的多類水果分類識別的研究較少[1],且大多采用傳統(tǒng)機器學(xué)習(xí)的方法進行分類識別。傳統(tǒng)的機器學(xué)習(xí)方法如HOG(Histogram of Oriented Gradient,方向梯度直方圖)和SIFT(Scale Invariant Feature Transform,尺度不變特征變換)等,對水果圖像進行特征提取,并將提取到的特征輸入到分類器實現(xiàn)對水果的分類識別。而該方法提取到的特征,本質(zhì)上是一種人為設(shè)定的特征,雖然對特定的數(shù)據(jù)規(guī)模不大的識別任務(wù)更有效,但整體泛化能力較差,具有一定的局限性[2]。深度學(xué)習(xí)方法與上述傳統(tǒng)方法相比,其優(yōu)勢在于圖像特征無需人為設(shè)定,而是通過深層次的網(wǎng)絡(luò)結(jié)構(gòu)提取到更精確的特征。因此,筆者提出利用深度學(xué)習(xí)框架下的 Inception-V3模型進行遷移學(xué)習(xí),從而實現(xiàn)對水果的快速準(zhǔn)確識別分類。
所設(shè)計的水果分類算法架構(gòu)如圖1所示。在TensorFlow深度學(xué)習(xí)框架下,利用Google公司開發(fā)的Inception-V3模型進行遷移學(xué)習(xí)。圖1中以ImageNet大量數(shù)據(jù)集訓(xùn)練的CNN模型作為預(yù)訓(xùn)練模型,將保留Inception-V3模型中分類器前的整體結(jié)構(gòu),并在模型中定義新的Softmax分類器,再利用水果數(shù)據(jù)集做進一步遷移學(xué)習(xí)訓(xùn)練,得到新的網(wǎng)絡(luò)模型,以用于水果圖像的分類。
圖1 水果分類算法架構(gòu)圖
近年來,美國Google公司開發(fā)了許多圖像分類模型,如QuocNet、AlexNet、Inception(GoogleNet)、BN-Inception-V2等,Inception-V3用來訓(xùn)練2012年ImageNet的Large Scale Visual Recognition Challenge數(shù)據(jù)集[3]。這是計算機視覺領(lǐng)域的一類標(biāo)準(zhǔn)任務(wù),模型要把整個圖像集分為“斑馬”、“達(dá)爾瑪西亞狗”和“洗碗機”等1000個類別。為了對模型性能進行比較,檢查模型預(yù)測中前5個分類結(jié)果不包含正確類別的錯誤率,即“top-5 錯誤率”。在2012年的驗證數(shù)據(jù)集上,AlexNet取得了15.3%的 top-5錯誤率;BN-Inception-V2的錯誤率是6.66%;Inception-V3的錯誤率是3.46%[4]。由此可見,Inception-V3模型對圖像分類有更好的效果。
Inception-V3模型由11個Inception模塊組成,典型的Inception結(jié)構(gòu)如圖2所示,該結(jié)構(gòu)將不同的卷積層通過并聯(lián)的方式結(jié)合在一起,同時使用所有不同尺寸的過濾器,然后再將得到的矩陣拼接起來。Inception-V3模型一共96個卷積層,模型預(yù)訓(xùn)練時計算量較大,故很難在普通計算機上實現(xiàn)[5]。因此,采用對預(yù)訓(xùn)練模型遷移學(xué)習(xí)的方式進行水果分類識別模型的訓(xùn)練。
圖2 Inception模塊結(jié)構(gòu)圖
深度學(xué)習(xí)概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,是機器學(xué)習(xí)中一種基于對數(shù)據(jù)進行表征學(xué)習(xí)的方法。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)的最大優(yōu)勢在于用非監(jiān)督式或半監(jiān)督式的特征學(xué)習(xí)和分層特征提取高效算法來替代手工獲取特征。
在深度學(xué)習(xí)領(lǐng)域,遷移學(xué)習(xí)是一種將預(yù)訓(xùn)練的模型重新訓(xùn)練后應(yīng)用在其他任務(wù)中的學(xué)習(xí)方式。通常這些預(yù)訓(xùn)練的模型在開發(fā)時已經(jīng)消耗了巨大的時間資源和計算資源[6]。利用Inception-V3模型進行遷移學(xué)習(xí),將該模型對圖像分類的優(yōu)勢發(fā)揮在水果圖像識別上,使水果圖像的分類識別更加快速準(zhǔn)確。
遷移學(xué)習(xí)訓(xùn)練過程主要包含以下幾個步驟:數(shù)據(jù)集建立、模型準(zhǔn)備、分類器設(shè)計及模型遷移訓(xùn)練。
數(shù)據(jù)集包括六類水果(蘋果、香蕉、獼猴桃、芒果、柑橘、梨),每一類各1500張圖片,其中1000張作為訓(xùn)練樣本,500張作為測試樣本。數(shù)據(jù)集主要來源于百度、Google等網(wǎng)站圖片庫,其余部分由相機實景拍攝。根據(jù)需求對圖片進行篩選過濾,最終得到數(shù)據(jù)集。在項目目錄下建立文件夾fruit_photos,包含6個文件夾apple、banana、kiwifruit、mango、orange、pear。
首先下載由Google公司提供的訓(xùn)練好的Inception-V3模型作為本次遷移學(xué)習(xí)的預(yù)訓(xùn)練模型,模型文件名為inception_V3.ckpt。
訓(xùn)練前還要設(shè)置訓(xùn)練相關(guān)參數(shù),如模型特征提取后輸出節(jié)點個數(shù)為2048,學(xué)習(xí)率為0.01,并設(shè)置梯度下降的批尺寸(batch)為100,分類個數(shù)為6。
下面將對模型的分類器進行設(shè)計,模型采用Softmax分類器,它是在邏輯回歸(Logistic Regression)分類器的基礎(chǔ)上發(fā)展而來的。Softmax作為邏輯回歸在多分類問題上的推廣,能夠一次完成對多個類別的分類任務(wù),Softmax是一種有監(jiān)督的單層神經(jīng)網(wǎng)絡(luò)的分類器,目前它一般與深度學(xué)習(xí)的方法相結(jié)合,從而用于分類識別問題。
在Inception-V3模型中,將299×299的圖片作為輸入,經(jīng)過卷積層的處理后輸出圖片特征向量x(i),大小為1×2048。本文將圖片特征向量x(i)與圖片標(biāo)簽值作為Softmax分類器的輸入,可表示為{x(1),x(2),…,x(m)},有y(i)∈{1,2,…,k},其中m為樣本數(shù),k為水果類別總數(shù)值為6,則針對給定的輸入樣本x(i)被歸為每一類的概率值P可表示為
(1)
Softmax的代價函數(shù)是對函數(shù)中對類標(biāo)記的k個概率值進行累加,可以表示為
(2)
式中,1{·}為示性函數(shù),當(dāng)大括號中值為真時,函數(shù)值為1。
在訓(xùn)練中,利用梯度下降法不斷調(diào)整訓(xùn)練模型參數(shù)θ,使其能夠最小化代價函數(shù)J(θ),保證收斂到全局最優(yōu)解。
本次訓(xùn)練是在NVIDIA的Jetson TX2上進行,TX2開發(fā)板如圖3所示,它是一臺基于NVIDIA PascalTM架構(gòu)的AI單模塊超級計算機,運行Ubuntu 16.04系統(tǒng),運行內(nèi)存4 GB。模型訓(xùn)練中,定義訓(xùn)練迭代次數(shù)為5000次,學(xué)習(xí)率為0.01。每隔100次進行一次權(quán)值調(diào)整,并輸出測試準(zhǔn)確率。
圖3 NVIDIA Jetson TX2開發(fā)板
為了更加方便地查看模型訓(xùn)練過程,訓(xùn)練過程中每隔200次設(shè)立一個檢查點,對測試集中數(shù)據(jù)進行測試,輸出測試準(zhǔn)確率,最后保存模型和測試摘要,訓(xùn)練最終輸出結(jié)果如圖4所示,經(jīng)過5000次迭代次數(shù),訓(xùn)練結(jié)果準(zhǔn)確率為98.5%。
3.1誤差值與準(zhǔn)確率分析
模型訓(xùn)練過程中的損失值(loss)和準(zhǔn)確率(accuracy)是判斷模型性能的重要指標(biāo),損失值為模型預(yù)測值與真實值的差距,即代價函數(shù)中的J(θ)[7],準(zhǔn)確率為訓(xùn)練過程中每次迭代后測試的準(zhǔn)確率。
圖4 訓(xùn)練最終輸出結(jié)果
利用TensorFlow框架的可視化模塊Tensorboard,可以在Web界面上來查看通過訓(xùn)練數(shù)據(jù)生成的曲線,下面將對比在不同迭代次數(shù)下loss的值,如圖5所示,當(dāng)?shù)螖?shù)為1000次時,loss為0.18;當(dāng)?shù)螖?shù)為3000時,loss為0.13;當(dāng)?shù)螖?shù)大于3000時,loss為0.11。
圖5 不同迭代次數(shù)的loss
訓(xùn)練過程中準(zhǔn)確率的變化曲線如圖6所示,圖中已對曲線進行平滑濾波處理,在水果數(shù)據(jù)集遷移訓(xùn)練過程中,訓(xùn)練準(zhǔn)確率在迭代次數(shù)為1000次左右時迅速提升至95%,之后經(jīng)過4000次的迭代,訓(xùn)練過程中accuracy緩慢提升至98.5%。
根據(jù)實驗,在相同水果圖像數(shù)據(jù)樣本下,將Inception-V3模型遷移學(xué)習(xí)的識別效果與采用傳統(tǒng)機器學(xué)習(xí)的方法[8]進行對比,識別準(zhǔn)確率如表1所示。
表1 不同方法水果識別準(zhǔn)確率
通過表1數(shù)據(jù)分析可以看出,采用基于CNN的Inception-v3模型遷移學(xué)習(xí)的方法,相對于傳統(tǒng)方法識別準(zhǔn)確率上有很大提升。由于傳統(tǒng)方法在提取特征過程中需要有豐富的人為經(jīng)驗,這就造成了傳統(tǒng)方法特征提取存在著很大的不確定性,而且傳統(tǒng)方法還存在著復(fù)雜的調(diào)參過程,很大程度上增加了訓(xùn)練時間。利用Inception-V3模型遷移學(xué)習(xí)可以在較好的分類模型內(nèi)進行參數(shù)微調(diào),快速提升分類識別準(zhǔn)確率。
本節(jié)將對訓(xùn)練好的網(wǎng)絡(luò)模型進行實時分類測試。在測試中,將攝像頭實時拍攝到的水果圖片輸入到訓(xùn)練好的模型中進行識別,測試輸出顯示水果圖片并輸出預(yù)測概率和預(yù)測分類結(jié)果,圖7為水果圖片,圖8中預(yù)測概率值分別對應(yīng)蘋果、香蕉、芒果、獼猴桃、柑橘、梨,最終預(yù)測水果類型為芒果(mango)。
圖7 測試圖像顯示
圖8 測試程序結(jié)果圖
本文提出基于CNN的Inception-V3模型遷移學(xué)習(xí)的圖像分類方法,在遷移預(yù)訓(xùn)練好的CNN模型到小目標(biāo)集時,保留原有卷積層結(jié)構(gòu)并搭建新的Softmax分類器對數(shù)據(jù)進行分類。利用遷移學(xué)習(xí)的Inception-V3模型較傳統(tǒng)水果分類算法水果識別準(zhǔn)確率明顯提升。所設(shè)計的水果實時分類算法,可用于蘋果、香蕉、獼猴桃、芒果、柑橘、梨六類水果的實時識別,在智慧農(nóng)業(yè)等方面具有很好應(yīng)用前景。本文中訓(xùn)練集和測試集均采用相似光強的水果圖片,但在實際應(yīng)用中,采集的圖像往往受光照、旋轉(zhuǎn)、遮擋等因素的影響,后期可針對這些影響因素進行水果分類識別研究。