伍錫如,雪剛剛,劉英璇
(1.桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,廣西 桂林 541004;2.廣西高校非線性電路與光通信重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004)
我國是農(nóng)業(yè)大國,隨著勞動(dòng)力結(jié)構(gòu)的轉(zhuǎn)變,農(nóng)業(yè)勞動(dòng)力逐漸匱乏,其成本也在不斷提高,大量的水果種植使得水果的自動(dòng)化采摘[1-3]成為一個(gè)亟待解決的問題。隨著科技的快速發(fā)展,果蔬采摘機(jī)器人技術(shù)得到迅速發(fā)展。水果識別[4-5]作為水果采摘機(jī)器人技術(shù)中最重要的技術(shù),其性能的好壞會(huì)直接影響水果采摘機(jī)器人能否順利采摘。因此,研究水果采摘機(jī)器人視覺識別技術(shù)具有重要的現(xiàn)實(shí)意義。
現(xiàn)有的水果識別方法多利用特征描述方法獲取其顏色、紋理特征完成識別[6]。例如,陶華偉等[7]利用顏色完全局部二值模式(CCLBP)結(jié)合HSV顏色空間提取圖像紋理特征實(shí)現(xiàn)對水果的識別。鄒謎等[8]利用水果的顏色信息,通過特征匹配實(shí)現(xiàn)對水果圖像的識別,也取得了較好的效果。廖崴等[9]采用Otsu閾值分割和濾波處理的方法對水果圖像進(jìn)行處理,提取其灰度和紋理特征,利用隨機(jī)森林實(shí)現(xiàn)對綠色蘋果的識別。
深度學(xué)習(xí)[10-11]作為當(dāng)前機(jī)器學(xué)習(xí)領(lǐng)域的重要方法,在圖像識別領(lǐng)域得到了廣泛的應(yīng)用。例如,Li等[12]利用Otsu對草莓圖像進(jìn)行分割,并利用CaffeNet進(jìn)行訓(xùn)練,完成對草莓的識別,取得了95%的識別率。劉慶飛等[13]利用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)對土壤、雜草和農(nóng)作物的識別,也取得了較好的識別效果。
相對于人工設(shè)計(jì)的特征描述方法,深度學(xué)習(xí)方法大量減少了人工規(guī)則的繁瑣過程,在輸入圖像數(shù)據(jù)后,經(jīng)過深度神經(jīng)網(wǎng)絡(luò)快速完成建模,將圖像特征提取和結(jié)果預(yù)測整合到一起,包含數(shù)據(jù)分類的全過程,操作更為簡單,可以更直接完成對各類圖像的識別。
鑒于以上原因,本文以Fruit-360作為原始數(shù)據(jù),采用多種圖像預(yù)處理方法和訓(xùn)練策略,在此基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了基于端到端卷積神經(jīng)網(wǎng)絡(luò)的水果種類視覺識別系統(tǒng),如圖1所示 。識別系統(tǒng)可對不同種類水果實(shí)現(xiàn)快速智能識別,并給出該水果對應(yīng)的種類及概率值。實(shí)驗(yàn)結(jié)果表明:本文提出方法具有精確度高、識別速度快和泛化能力強(qiáng)的特點(diǎn),可為水果采摘機(jī)器人的應(yīng)用提供理論和技術(shù)支持。
CNN是深度學(xué)習(xí)中的一種算法,通常為多層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),一般由數(shù)據(jù)輸入層、卷積層和池化層構(gòu)成的中間層、全連接層3個(gè)部分組成,如圖2所示。CNN通過局部連接和權(quán)值共享操作有效減少了網(wǎng)絡(luò)參數(shù),使得訓(xùn)練速度大大加快,在無需知道輸入輸出間精確的數(shù)學(xué)關(guān)系的情況下,利用深度學(xué)習(xí)網(wǎng)絡(luò)對有限樣本進(jìn)行高效訓(xùn)練,直接獲取數(shù)據(jù)高維特征和內(nèi)在關(guān)系,在圖像識別、目標(biāo)檢測、語音識別、復(fù)雜控制系統(tǒng)建模等領(lǐng)域均取得了較好的效果。卷積層是CNN結(jié)構(gòu)的重要組成部分,卷積運(yùn)算表達(dá)式為
(1)
對數(shù)據(jù)進(jìn)行卷積操作后,利用所提取的特征訓(xùn)練分類器。由于CNN訓(xùn)練過程中通常會(huì)有較多的樣本數(shù)據(jù),產(chǎn)生的特征數(shù)據(jù)量很大,因此采用池化操作來對卷積特征進(jìn)行采樣。池化運(yùn)算表達(dá)式為
(2)
圖1 水果圖像識別算法框架
圖2 CNN 結(jié)構(gòu)模型
基于深度學(xué)習(xí)的水果采摘機(jī)器人視覺識別系統(tǒng)實(shí)現(xiàn)流程如圖3所示。
圖3 水果識別系統(tǒng)處理流程
首先加載圖像,并進(jìn)行縮放和裁剪。相對于顏色,果實(shí)的形狀和紋理特征是果實(shí)識別的關(guān)鍵,因此文中對圖片進(jìn)行了灰度處理。然后,通過鏡像、旋轉(zhuǎn)、隨機(jī)裁剪等方式對數(shù)據(jù)進(jìn)行擴(kuò)充,最后通過構(gòu)造的CNN完成訓(xùn)練并得到水果識別模型。
在得到水果識別模型后,通過相機(jī)獲取真實(shí)環(huán)境下的水果圖像,對水果圖像進(jìn)行比例裁剪和縮放,之后對圖像進(jìn)行灰度變換增強(qiáng)圖像整體特征,最后將處理后的水果圖像輸出到訓(xùn)練好的水果識別模型中,完成對水果的識別。
以Fuit-360展開算法設(shè)計(jì),該數(shù)據(jù)集使用羅技C920相機(jī)進(jìn)行多角度旋轉(zhuǎn)拍攝,包含75類不同類別的水果圖片(見圖4),可從不同角度反映水果特征。原始數(shù)據(jù)集中有50 590張RGB類型的水果圖片,其中訓(xùn)練數(shù)據(jù)37 836張,測試數(shù)據(jù)12 709張。
為提高識別效果,對樣本采用多種預(yù)處理操作:
1)數(shù)據(jù)擴(kuò)充。統(tǒng)計(jì)發(fā)現(xiàn),原始數(shù)據(jù)集中各類水果圖片存在著數(shù)量分布不均的情況,會(huì)對模型的訓(xùn)練造成較大的影響。為了保證各類水果圖片的訓(xùn)練數(shù)量,采用鏡像翻轉(zhuǎn)、色調(diào)變換、角度旋轉(zhuǎn)、亮度調(diào)整、隨機(jī)裁剪等操作對原始數(shù)據(jù)進(jìn)行擴(kuò)充。此外,還從網(wǎng)上爬取數(shù)據(jù)對樣本做進(jìn)一步擴(kuò)充,最后得到的樣本60 000張,將訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)按3:1的比例進(jìn)行分配,得到訓(xùn)練數(shù)據(jù)45 000張、測試數(shù)據(jù)15 000張。
圖4 部分水果樣本
2)比例縮放。在得到數(shù)據(jù)集后,發(fā)現(xiàn)水果圖片像素集中分布在100×100。綜合考慮計(jì)算量和識別效果,調(diào)整圖片大小調(diào)為48×48。
3)灰度處理。為了進(jìn)一步提高識別效率,還對數(shù)據(jù)進(jìn)行了灰度化處理,可以有效地減少光照等因素對識別的影響及網(wǎng)絡(luò)計(jì)算量,提高網(wǎng)絡(luò)訓(xùn)練速度和識別速度。
為了提高訓(xùn)練效果,綜合考慮輸入樣本個(gè)數(shù)和大小、卷積核個(gè)數(shù)和大小、訓(xùn)練步長等因素,構(gòu)建了一個(gè)9層CNN結(jié)構(gòu)。具體參數(shù)如下:輸入數(shù)據(jù)的大小為48×48;卷積層C1、C2、C3的特征數(shù)分別為32、64、128;卷積層C1、C2、C3的卷積核大小分別為3×3、5×5、3×3;卷積層C1、C2、C3的步長均為1,池化層P1、P2、P3采樣大小統(tǒng)一設(shè)為2×2,步長均為2;設(shè)置全連接層輸出一維數(shù)據(jù)個(gè)數(shù)為1 200,并設(shè)置Softmax層實(shí)現(xiàn)對識別。
此外,為了提高模型的泛化能力,采用局部歸一化及dropout等策略來防止梯度彌散,避免過擬合現(xiàn)象的發(fā)生。其中,dropout概率設(shè)置為0.3,同時(shí)采用Relu函數(shù)(Rectified Linear Units,Relu)作為訓(xùn)練過程中的激活函數(shù)。
反向傳播算法是神經(jīng)網(wǎng)絡(luò)中常用且最有效的算法,可以實(shí)現(xiàn)對網(wǎng)絡(luò)參數(shù)的更新,進(jìn)而逐步調(diào)整網(wǎng)絡(luò)權(quán)值參數(shù),達(dá)到較好的學(xué)習(xí)效果。
對于單個(gè)樣本(x,y*),其在CNN訓(xùn)練過程中的損失函數(shù)可以表示為
(3)
其中,hw,b為網(wǎng)絡(luò)真實(shí)輸出值;x為輸入樣本;y*為期望輸出值;W為網(wǎng)絡(luò)權(quán)值矩陣;b為網(wǎng)絡(luò)偏置矩陣。
權(quán)值參數(shù)W、b的更新利用隨機(jī)梯度下降算法(Stochastic Gradient Descent,SGD)實(shí)現(xiàn),公式為
(4)
(5)
SGD可以加快網(wǎng)絡(luò)的收斂速度,提高網(wǎng)絡(luò)訓(xùn)練速度和收斂速度,同時(shí)具有在線更新的特點(diǎn),避免常規(guī)梯度下降算法在樣本較多時(shí)訓(xùn)練變得異常緩慢的問題?;赟GD算法的CNN權(quán)值更新過程如圖5所示。其中,α為學(xué)習(xí)率大小;⊙表示向量乘積運(yùn)算符;°表示元素相乘運(yùn)算。具體實(shí)現(xiàn)過程如下:
步驟1:輸入訓(xùn)練樣本;
步驟2:利用高斯分布獲取隨機(jī)值,對權(quán)值W和偏置b進(jìn)行初始化;
步驟3:根據(jù)樣本、標(biāo)簽、訓(xùn)練參數(shù)等,通過前向傳播網(wǎng)絡(luò)得到目標(biāo)輸出值;
步驟4:計(jì)算實(shí)際輸出值與預(yù)測值之間的誤差,利用反向傳播算法計(jì)算參數(shù)梯度;
步驟5:設(shè)置學(xué)習(xí)率大小,按照誤差極小化的方式對訓(xùn)練參數(shù)進(jìn)行更新;
步驟6:重復(fù)步驟3~5,反復(fù)訓(xùn)練,直到收斂。
通過上述過程對訓(xùn)練參數(shù)不斷更新,使誤差函數(shù)E取得最小值,進(jìn)而得到網(wǎng)絡(luò)參數(shù)的最優(yōu)值。
圖5 基于SGD的參數(shù)更新過程
實(shí)驗(yàn)在Caffe平臺(tái)下進(jìn)行,操作系統(tǒng)為Ubuntu 14.04,使用英特爾i5-5200U 4核處理器,500G機(jī)械硬盤,內(nèi)存大小4G,同時(shí)使用NVIDIA GTX1050顯卡來實(shí)現(xiàn)GPU加速訓(xùn)練。
在深度學(xué)習(xí)中,超參數(shù)的選擇對于模型訓(xùn)練的好壞有著直接的影響,學(xué)習(xí)率和動(dòng)量是影響模型好壞的關(guān)鍵因素。學(xué)習(xí)率太小時(shí),模型訓(xùn)練時(shí)間會(huì)變得很長,收斂速度狠慢;學(xué)習(xí)率太大時(shí),則會(huì)阻礙網(wǎng)絡(luò)收斂,引起振蕩。動(dòng)量是影響訓(xùn)練效果的另一個(gè)重要參數(shù),會(huì)直接影響模型的訓(xùn)練效果。文中將一些常用的學(xué)習(xí)率和動(dòng)量作為候選值,通過多組對比實(shí)驗(yàn)首先確定了學(xué)習(xí)率,之后確定了動(dòng)量參數(shù)和批大小。參數(shù)組合情況如表1所示。
表1 不同參數(shù)對應(yīng)的精度
最終選擇學(xué)習(xí)率大小α為0.01,批大小為s為64,動(dòng)量系數(shù)為β為0.99,每訓(xùn)練20 000次改變一次學(xué)習(xí)率,共訓(xùn)練80 000次。
為測試文中CNN結(jié)構(gòu)對水果圖像的多尺度特征表示,以蘋果圖像為例,將其輸入到CNN中后,得到其在卷積層和池化層的特征圖譜,如圖6所示。
圖6 蘋果圖像的特征圖
水果圖像數(shù)據(jù)集的優(yōu)化使得圖像特征變得更為明顯,有利于CNN充分提取圖像特征。依據(jù)圖6對訓(xùn)練過程中的卷積特征進(jìn)行可視化,發(fā)現(xiàn)并無重復(fù)或隨機(jī)性卷積特征的出現(xiàn),網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)進(jìn)行了有效的訓(xùn)練,充分提取了水果圖像的高維特征。
為了直觀地觀察網(wǎng)絡(luò)訓(xùn)練過程中的損失值和精確度變化情況,CNN訓(xùn)練完成后,通過對訓(xùn)練日志進(jìn)行解析,繪制出其誤差和精度曲線如圖7所示。模型訓(xùn)練過程和測試過程中損失函數(shù)的變化情況如圖8所示。
圖7 訓(xùn)練誤差和精度變化曲線
圖8 訓(xùn)練誤差隨時(shí)間變化曲線
由圖7、圖8可以看出:隨著訓(xùn)練的進(jìn)行,整體訓(xùn)練精度迅速提高;當(dāng)?shù)螖?shù)達(dá)到1 500左右、訓(xùn)練時(shí)間達(dá)到500s時(shí),整體誤差迅速下降到0.5以下,同時(shí)水果識別精確度達(dá)到90%以上;當(dāng)?shù)螖?shù)達(dá)到80 000次時(shí),測試精度可以達(dá)到97%,整體損失下降到0.2左右。以上結(jié)果表明:文中所設(shè)計(jì)的9層CNN結(jié)構(gòu),短時(shí)間內(nèi)可以有效地對水果圖像特征進(jìn)行提取,完成網(wǎng)絡(luò)模型的訓(xùn)練,訓(xùn)練精度可以在短時(shí)間內(nèi)達(dá)到較高水平,均方誤差下降到較低水平。由此說明,本算法具有較好的實(shí)時(shí)性及較高的識別率。
為了對比本文所提出的水果識別算法與其他算法在性能上的差異,表2給出了幾種具有代表性的水果識別方法的對比結(jié)果。
表2 識別結(jié)果對比
文獻(xiàn)[14]中通過氣味傳感器和圖像去陰影方法,利用隨機(jī)森林實(shí)現(xiàn)對水果的識別,識別單個(gè)果實(shí)圖像速度可以達(dá)到0.007s。該方法以橙子和檸檬作為實(shí)驗(yàn)對象,操作復(fù)雜,且氣味傳感器易受環(huán)境干擾,其泛化能力一般,不具有一般意義上的適用性。因此,盡管文中所提出的方法識別速度低于該方法,但該方法操作簡單,通過對數(shù)據(jù)的有效訓(xùn)練可以實(shí)現(xiàn)對75類水果圖像的識別,且深度學(xué)習(xí)良好的魯棒性能,使得文中方法具有更好的識別效果。
將本文方法與同樣采用深度學(xué)習(xí)方法的文獻(xiàn)[15]中的方法進(jìn)行對比發(fā)現(xiàn),文中方法取得了更好的識別效果。分析原因,主要是由于本文方法使用多種圖像預(yù)處理方法,提高了水果圖像的整體特征,設(shè)計(jì)的深層CNN可以更有效地對果實(shí)特征進(jìn)行提取,同時(shí)采用多種訓(xùn)練策略提高了最終的識別結(jié)果。
此外,文章還對比了利用經(jīng)典的特征描述方法對果實(shí)進(jìn)行識別的文獻(xiàn)[16]和文獻(xiàn)[17]中的方法。這兩種方法分別利用局部二值模式和灰度共生矩陣(GLSM)獲取水果圖像的紋理和顏色特征完成對水果圖像的識別。由于特征描述方法的多為人工設(shè)計(jì),特征設(shè)計(jì)和選擇的好壞會(huì)對識別結(jié)果造成較大的影響,因此,本文所提出的深度學(xué)習(xí)方法在識別精度和識別速度上均具有明顯優(yōu)勢。文獻(xiàn)[18]利用點(diǎn)云數(shù)據(jù)、3D描述符(Color-FPFH)、SVM和遺傳算法等實(shí)現(xiàn)對果實(shí)的識別。該方法具有較高的魯棒性,但是其操作異常復(fù)雜,單張圖像的識別速度高達(dá)5s,遠(yuǎn)遠(yuǎn)高于文中方法的0.2s,且識別精度最好結(jié)果為92.3%,低于本文方法的97.1%。
以深度學(xué)習(xí)為基礎(chǔ),結(jié)合圖像預(yù)處理方法,提出了一種水果圖像快速識別算法。首先對原始數(shù)據(jù)進(jìn)行擴(kuò)充,保證了訓(xùn)練數(shù)據(jù)數(shù)量;然后,通過圖像預(yù)處理操作對樣本集做進(jìn)一步優(yōu)化,提高樣本整體質(zhì)量;最后利用構(gòu)造的卷積神經(jīng)網(wǎng)絡(luò)在Caffe平臺(tái)下對樣本集進(jìn)行訓(xùn)練,得到水果圖像識別的網(wǎng)絡(luò)模型。實(shí)驗(yàn)結(jié)果表明:本文算法可以快速、準(zhǔn)確地對水果圖像進(jìn)行識別,具有較好的魯棒性和泛化能力,可為水果采摘機(jī)器人視覺識別系統(tǒng)提供技術(shù)和理論支持。