伍錫如,雪剛剛,劉英璇
(1.桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004;2.廣西高校非線性電路與光通信重點實驗室,廣西 桂林 541004)
我國是農業大國,隨著勞動力結構的轉變,農業勞動力逐漸匱乏,其成本也在不斷提高,大量的水果種植使得水果的自動化采摘[1-3]成為一個亟待解決的問題。隨著科技的快速發展,果蔬采摘機器人技術得到迅速發展。水果識別[4-5]作為水果采摘機器人技術中最重要的技術,其性能的好壞會直接影響水果采摘機器人能否順利采摘。因此,研究水果采摘機器人視覺識別技術具有重要的現實意義。
現有的水果識別方法多利用特征描述方法獲取其顏色、紋理特征完成識別[6]。例如,陶華偉等[7]利用顏色完全局部二值模式(CCLBP)結合HSV顏色空間提取圖像紋理特征實現對水果的識別。鄒謎等[8]利用水果的顏色信息,通過特征匹配實現對水果圖像的識別,也取得了較好的效果。廖崴等[9]采用Otsu閾值分割和濾波處理的方法對水果圖像進行處理,提取其灰度和紋理特征,利用隨機森林實現對綠色蘋果的識別。
深度學習[10-11]作為當前機器學習領域的重要方法,在圖像識別領域得到了廣泛的應用。例如,Li等[12]利用Otsu對草莓圖像進行分割,并利用CaffeNet進行訓練,完成對草莓的識別,取得了95%的識別率。劉慶飛等[13]利用卷積神經網絡實現對土壤、雜草和農作物的識別,也取得了較好的識別效果。
相對于人工設計的特征描述方法,深度學習方法大量減少了人工規則的繁瑣過程,在輸入圖像數據后,經過深度神經網絡快速完成建模,將圖像特征提取和結果預測整合到一起,包含數據分類的全過程,操作更為簡單,可以更直接完成對各類圖像的識別。
鑒于以上原因,本文以Fruit-360作為原始數據,采用多種圖像預處理方法和訓練策略,在此基礎上設計并實現了基于端到端卷積神經網絡的水果種類視覺識別系統,如圖1所示 。識別系統可對不同種類水果實現快速智能識別,并給出該水果對應的種類及概率值。實驗結果表明:本文提出方法具有精確度高、識別速度快和泛化能力強的特點,可為水果采摘機器人的應用提供理論和技術支持。
CNN是深度學習中的一種算法,通常為多層的神經網絡結構,一般由數據輸入層、卷積層和池化層構成的中間層、全連接層3個部分組成,如圖2所示。CNN通過局部連接和權值共享操作有效減少了網絡參數,使得訓練速度大大加快,在無需知道輸入輸出間精確的數學關系的情況下,利用深度學習網絡對有限樣本進行高效訓練,直接獲取數據高維特征和內在關系,在圖像識別、目標檢測、語音識別、復雜控制系統建模等領域均取得了較好的效果。卷積層是CNN結構的重要組成部分,卷積運算表達式為
(1)

對數據進行卷積操作后,利用所提取的特征訓練分類器。由于CNN訓練過程中通常會有較多的樣本數據,產生的特征數據量很大,因此采用池化操作來對卷積特征進行采樣。池化運算表達式為
(2)


圖1 水果圖像識別算法框架

圖2 CNN 結構模型
基于深度學習的水果采摘機器人視覺識別系統實現流程如圖3所示。

圖3 水果識別系統處理流程
首先加載圖像,并進行縮放和裁剪。相對于顏色,果實的形狀和紋理特征是果實識別的關鍵,因此文中對圖片進行了灰度處理。然后,通過鏡像、旋轉、隨機裁剪等方式對數據進行擴充,最后通過構造的CNN完成訓練并得到水果識別模型。
在得到水果識別模型后,通過相機獲取真實環境下的水果圖像,對水果圖像進行比例裁剪和縮放,之后對圖像進行灰度變換增強圖像整體特征,最后將處理后的水果圖像輸出到訓練好的水果識別模型中,完成對水果的識別。
以Fuit-360展開算法設計,該數據集使用羅技C920相機進行多角度旋轉拍攝,包含75類不同類別的水果圖片(見圖4),可從不同角度反映水果特征。原始數據集中有50 590張RGB類型的水果圖片,其中訓練數據37 836張,測試數據12 709張。
為提高識別效果,對樣本采用多種預處理操作:
1)數據擴充。統計發現,原始數據集中各類水果圖片存在著數量分布不均的情況,會對模型的訓練造成較大的影響。為了保證各類水果圖片的訓練數量,采用鏡像翻轉、色調變換、角度旋轉、亮度調整、隨機裁剪等操作對原始數據進行擴充。此外,還從網上爬取數據對樣本做進一步擴充,最后得到的樣本60 000張,將訓練數據和測試數據按3:1的比例進行分配,得到訓練數據45 000張、測試數據15 000張。

圖4 部分水果樣本
2)比例縮放。在得到數據集后,發現水果圖片像素集中分布在100×100。綜合考慮計算量和識別效果,調整圖片大小調為48×48。
3)灰度處理。為了進一步提高識別效率,還對數據進行了灰度化處理,可以有效地減少光照等因素對識別的影響及網絡計算量,提高網絡訓練速度和識別速度。
為了提高訓練效果,綜合考慮輸入樣本個數和大小、卷積核個數和大小、訓練步長等因素,構建了一個9層CNN結構。具體參數如下:輸入數據的大小為48×48;卷積層C1、C2、C3的特征數分別為32、64、128;卷積層C1、C2、C3的卷積核大小分別為3×3、5×5、3×3;卷積層C1、C2、C3的步長均為1,池化層P1、P2、P3采樣大小統一設為2×2,步長均為2;設置全連接層輸出一維數據個數為1 200,并設置Softmax層實現對識別。
此外,為了提高模型的泛化能力,采用局部歸一化及dropout等策略來防止梯度彌散,避免過擬合現象的發生。其中,dropout概率設置為0.3,同時采用Relu函數(Rectified Linear Units,Relu)作為訓練過程中的激活函數。
反向傳播算法是神經網絡中常用且最有效的算法,可以實現對網絡參數的更新,進而逐步調整網絡權值參數,達到較好的學習效果。
對于單個樣本(x,y*),其在CNN訓練過程中的損失函數可以表示為
(3)
其中,hw,b為網絡真實輸出值;x為輸入樣本;y*為期望輸出值;W為網絡權值矩陣;b為網絡偏置矩陣。
權值參數W、b的更新利用隨機梯度下降算法(Stochastic Gradient Descent,SGD)實現,公式為
(4)
(5)
SGD可以加快網絡的收斂速度,提高網絡訓練速度和收斂速度,同時具有在線更新的特點,避免常規梯度下降算法在樣本較多時訓練變得異常緩慢的問題?;赟GD算法的CNN權值更新過程如圖5所示。其中,α為學習率大小;⊙表示向量乘積運算符;°表示元素相乘運算。具體實現過程如下:
步驟1:輸入訓練樣本;
步驟2:利用高斯分布獲取隨機值,對權值W和偏置b進行初始化;
步驟3:根據樣本、標簽、訓練參數等,通過前向傳播網絡得到目標輸出值;
步驟4:計算實際輸出值與預測值之間的誤差,利用反向傳播算法計算參數梯度;
步驟5:設置學習率大小,按照誤差極小化的方式對訓練參數進行更新;
步驟6:重復步驟3~5,反復訓練,直到收斂。
通過上述過程對訓練參數不斷更新,使誤差函數E取得最小值,進而得到網絡參數的最優值。

圖5 基于SGD的參數更新過程
實驗在Caffe平臺下進行,操作系統為Ubuntu 14.04,使用英特爾i5-5200U 4核處理器,500G機械硬盤,內存大小4G,同時使用NVIDIA GTX1050顯卡來實現GPU加速訓練。
在深度學習中,超參數的選擇對于模型訓練的好壞有著直接的影響,學習率和動量是影響模型好壞的關鍵因素。學習率太小時,模型訓練時間會變得很長,收斂速度狠慢;學習率太大時,則會阻礙網絡收斂,引起振蕩。動量是影響訓練效果的另一個重要參數,會直接影響模型的訓練效果。文中將一些常用的學習率和動量作為候選值,通過多組對比實驗首先確定了學習率,之后確定了動量參數和批大小。參數組合情況如表1所示。

表1 不同參數對應的精度
最終選擇學習率大小α為0.01,批大小為s為64,動量系數為β為0.99,每訓練20 000次改變一次學習率,共訓練80 000次。
為測試文中CNN結構對水果圖像的多尺度特征表示,以蘋果圖像為例,將其輸入到CNN中后,得到其在卷積層和池化層的特征圖譜,如圖6所示。

圖6 蘋果圖像的特征圖
水果圖像數據集的優化使得圖像特征變得更為明顯,有利于CNN充分提取圖像特征。依據圖6對訓練過程中的卷積特征進行可視化,發現并無重復或隨機性卷積特征的出現,網絡對訓練數據進行了有效的訓練,充分提取了水果圖像的高維特征。
為了直觀地觀察網絡訓練過程中的損失值和精確度變化情況,CNN訓練完成后,通過對訓練日志進行解析,繪制出其誤差和精度曲線如圖7所示。模型訓練過程和測試過程中損失函數的變化情況如圖8所示。

圖7 訓練誤差和精度變化曲線

圖8 訓練誤差隨時間變化曲線
由圖7、圖8可以看出:隨著訓練的進行,整體訓練精度迅速提高;當迭代次數達到1 500左右、訓練時間達到500s時,整體誤差迅速下降到0.5以下,同時水果識別精確度達到90%以上;當迭代次數達到80 000次時,測試精度可以達到97%,整體損失下降到0.2左右。以上結果表明:文中所設計的9層CNN結構,短時間內可以有效地對水果圖像特征進行提取,完成網絡模型的訓練,訓練精度可以在短時間內達到較高水平,均方誤差下降到較低水平。由此說明,本算法具有較好的實時性及較高的識別率。
為了對比本文所提出的水果識別算法與其他算法在性能上的差異,表2給出了幾種具有代表性的水果識別方法的對比結果。

表2 識別結果對比
文獻[14]中通過氣味傳感器和圖像去陰影方法,利用隨機森林實現對水果的識別,識別單個果實圖像速度可以達到0.007s。該方法以橙子和檸檬作為實驗對象,操作復雜,且氣味傳感器易受環境干擾,其泛化能力一般,不具有一般意義上的適用性。因此,盡管文中所提出的方法識別速度低于該方法,但該方法操作簡單,通過對數據的有效訓練可以實現對75類水果圖像的識別,且深度學習良好的魯棒性能,使得文中方法具有更好的識別效果。
將本文方法與同樣采用深度學習方法的文獻[15]中的方法進行對比發現,文中方法取得了更好的識別效果。分析原因,主要是由于本文方法使用多種圖像預處理方法,提高了水果圖像的整體特征,設計的深層CNN可以更有效地對果實特征進行提取,同時采用多種訓練策略提高了最終的識別結果。
此外,文章還對比了利用經典的特征描述方法對果實進行識別的文獻[16]和文獻[17]中的方法。這兩種方法分別利用局部二值模式和灰度共生矩陣(GLSM)獲取水果圖像的紋理和顏色特征完成對水果圖像的識別。由于特征描述方法的多為人工設計,特征設計和選擇的好壞會對識別結果造成較大的影響,因此,本文所提出的深度學習方法在識別精度和識別速度上均具有明顯優勢。文獻[18]利用點云數據、3D描述符(Color-FPFH)、SVM和遺傳算法等實現對果實的識別。該方法具有較高的魯棒性,但是其操作異常復雜,單張圖像的識別速度高達5s,遠遠高于文中方法的0.2s,且識別精度最好結果為92.3%,低于本文方法的97.1%。
以深度學習為基礎,結合圖像預處理方法,提出了一種水果圖像快速識別算法。首先對原始數據進行擴充,保證了訓練數據數量;然后,通過圖像預處理操作對樣本集做進一步優化,提高樣本整體質量;最后利用構造的卷積神經網絡在Caffe平臺下對樣本集進行訓練,得到水果圖像識別的網絡模型。實驗結果表明:本文算法可以快速、準確地對水果圖像進行識別,具有較好的魯棒性和泛化能力,可為水果采摘機器人視覺識別系統提供技術和理論支持。