董 庚, 王焱清,2, 孫記委,2, 段宇飛,2
(1 湖北工業大學農機工程研究設計院, 湖北 武漢 430068; 2 湖北省農機裝備智能化工程技術研究中心, 湖北 武漢 430068)
油茶屬于山茶科植物,與油棕、油橄欖、椰子并稱為世界四大木本食用油料作物,其中富含多種不飽和脂肪酸,有著“東方橄欖油”的稱號[1-2]。近年來在我國脫貧政策的扶持下,油茶的產量會進一步提高,隨著產量的提高,油茶的產業化發展也迫在眉睫。油茶的產業化過程中,油茶果的采摘、破殼、分選和榨油環節是重中之重,會直接影響茶油的品質[3-5]。較高的分選準確率可以減少分選時間,提高分選效率進而增加農戶的經濟效益,對于推動油茶果產業化有著重要意義。
近年來,卷積神經網絡在農業當中有著廣泛應用[6-8],謝為俊等[9]將卷積神經網絡應用于油茶籽完整性識別當中,通過對卷積神經網絡的改進從而進一步提高了分辨的準確率,最終優化后的準確率達到了98.05%,訓練時間為0.58 h,能夠很好地滿足油茶籽在線實時分選的要求。趙洋等[10]以ResNet18模型為基礎,將里面的殘差卷積改為空洞卷積用于對花卉的識別,改進后的模型識別精度達到了97.78%,對花卉分類有一定的可行性。張怡等[11]將ResNet卷積神經網絡應用于綠茶種類的識別當中,很好地區別了8種常見的綠茶,最終的識別準確率達到了90.99%,為茶葉種類識別提供了一種快捷高效的新方法。
經典的卷積神經網絡模型有很多,比如AlexNet[12],VGGNet[13]以及ResNet[14-16]等。本文研究方向是基于ResNet18模型探索與油茶果的分選是否能夠很好地結合,在原有的模型基礎上優化模型,提高分選的準確率與效率,提升油茶果分選的經濟效益。
油茶果分選機主要是由傳動系統、樣本采集系統、控制系統和噴吹系統組成。油茶果分選機先經濾網篩選出合適的樣本,其樣本由上料口均勻掉落在下方的托盤當中,電動機帶動鏈條負責傳動,使托盤均速地傳動到工業相機的下方,相機將托盤內的信息拍照上傳并進行殼籽信息的判斷,確定所在位置,當油茶果果殼的托盤經過噴吹裝置時傳感器會將位置信息傳送給PLC控制器。當PLC控制器確定果殼達到預定位置并獲得果殼的判定信號后,會打開對應電磁閥控制氣體將果殼吹出,而茶籽則自由掉落在下方的收集裝置里為后續工序做準備。具體流程與油茶果分選機結構如圖1圖2所示。

圖1 油茶果分選機流程

1-機架; 2-空氣壓縮機; 3-軸承座; 4-調速電機; 5-鏈傳動1;6-霍爾傳感器; 7-氣閥; 8-控制單元; 9-條形光源; 10-鏈傳動2; 11-工業相機; 12-振動器; 13-進料倉; 14-噴嘴; 15-陣列方槽
本文采用的油茶果樣本為油茶果分選機與配套的工業相機對樣本圖像進行采集,采集后的整幅樣本圖像(1280像素×1024像素)如圖3所示。

圖3 采集的樣本圖像
油茶果分選機的托盤將整幅樣本圖片分為均勻的64份,果殼與茶籽的混合體由上料口自然掉落,隨機分布在托盤中,以確保樣本的隨機性。將采集的圖像由matlab軟件將其均勻裁剪,每張圖片獲得64張獨立的樣本圖像(128像素×128像素),獨立的樣本圖像由油茶果,果殼與空格三部分組成,其中果殼的情況較為復雜,將其分為內殼和外殼做具體的區分,以達到更好的分選效果。具體圖像如圖4所示。

圖4 剪切后的四類樣本圖像
從圖4可以看出,經攤曬破殼后的油茶果外殼與茶籽在顏色和大小方面具有部分類似的特征,較難區分,影響分選的準確率。油茶果分選機共采集整幅樣本圖像26張,裁剪為1664張獨立樣本圖像,其中內殼外殼樣本數量與其他樣本相比數量較少,取全部的230張外殼和234張內殼,與部分的250張空格和250張茶籽作為后續建模數據。考慮到數據較少會影響后續模型的訓練,將其旋轉90°,180°與270°,并增加圖片亮度與降低圖片噪聲,擴充至5784張數據圖像,其中的70%用作訓練集, 20%用作驗證集,另外的10%用來做測試集使用。
卷積神經網絡在圖片分類中具有出色的表現,但是仍然具有一定的局限性。一般情況下網絡的準確度是隨著網絡深度同步增加的,但是現實情況是當深度增加到一個臨界值后網絡的準確度會降低,這就是卷積神經網絡中的梯度消失現象[17]。其原因是網絡深度增加過多以后造成從后向前傳播的梯度變得過小,從而使權重不再更新。除此之外,隨著網絡深度的增加,參數量也會變得更大,導致模型的優化變得更加困難,出現訓練誤差更大的問題。為了解決上述問題,He 等[14]提出了殘差神經網絡為基礎的ResNet模型,其主要思想是在輸入通道和輸出通道之前使用跳過連接增加通道之間的聯系,進而避免信息缺失的出現。在訓練過程中學習上一環節的輸出殘差,而不是將所有內容一并學習,從而減少工作量,節約時間和運行內存,降低模型的學習難度。殘差單元如圖5所示。

圖5 殘差塊結構
圖5為ResNet中經常使用的兩種殘差塊,其中(a)多用于淺層神經網絡,(b)多用于深層神經網絡,圖5a輸入數據經兩條曲線在相交點通過卷積操作進行相加,然后由激活函數進行激活輸出,相比圖5a而言,圖5b則在主線當中多了一個升維和降維的過程,其主要目的是節省參數,深層網絡使用得越多就可以節省越多的參數,加快ResNet的運算速度,提升效率。
ResNet模型有著不同的網絡層數, 常用的有ResNet18、ResNet34和ResNet50,如果目標較為復雜的情況下還可以提升模型層數如ResNet101和ResNet152。本文選用ResNet18模型為研究的主要模型,并針對不同的超參數進行優化,ResNet18模型參數設置詳見表1。

表1 ResNet18參數設置
本文實驗搭建的訓練環境為Win11操作系統,使用CPU進行模型訓練,在intel(R) Core(TM) i7-11800H處理器中運行,Python 版本為3.9.7,Pytorch 版本為 1.11.0。
批量尺寸(batch_size)指的是訓練過程中每批運行使用圖像的數量,是深度學習的重要參數。合適的批量尺寸能夠提高模型測試集的準確率,對模型訓練速度的提升也有較大的影響。為方便二進制的計算,習慣上選擇為2的次冪。本文以批量尺寸(16、32、64、128)做為研究基礎,探究不同因素對模型具體的影響。數據如圖6所示。

(a)訓練集損失函數數值

(b)驗證集準確率
由圖6可得,批量尺寸的大小與訓練集損失函數成正比,與驗證集準確率成反比,且越大的批量尺寸驗證集準確率折線浮動越大,花費的時間也越多,過大的批量尺寸也會產生較大的內存消耗,不利于長時間運行,因此選用32作為ResNet18的批量尺寸。
學習率(Learning rate) 是深度學習中重要的超參數,其作用是決定目標函數是否能夠收斂到局部最小值以及收斂到最小值的時間。一個合適的學習率可以更快達到loss的最小值,可以保證收斂的loss值是神經網絡的全局最優解。結合文獻[18]以及實驗經驗,本文以學習率分別為0.1、0.01、0.001、0.0001和0.00001,在其他不變的情況下進行實驗,得到的數據如圖7所示。

(a)訓練集損失函數數值

(b)驗證集準確率
從實驗數據中可以得出結論,隨著學習率的減小,模型的損失函數數值變低的同時驗證集準確率也在不斷地提高,但是過小的學習率會減慢模型損失函數變化的速度,增加網絡收斂的復雜度,并導致模型被困在局部最小值。在學習率達到0.00001的時候訓練損失函數并沒有進一步下降而是反向增加,故將最終的學習率定為0.0001。
激活函數是ResNet18中極其重要的概念,其激活函數的意義是判定神經元的輸出,具有非線性的特征。將非線性的因素引入神經元中,可以提升神經網絡對模型的表達能力,并且具有線性模型所不具備的解決問題的能力。每個激活函數的表達式不同,起到的作用也各不相同[19],本文選取了Relu、LeakyReLU和Sigmoid三種激活函數進行了對比,具體實驗數據如圖8所示。

(a)訓練集損失函數數值

(b)驗證集準確率
圖中可以看出雖然使用的不同的激活函數,但是對模型都有積極的作用,整體相差較小, LeakyReLU激活函數在損失函數方面整體與其他兩種函數相比略大且折線浮動略高,同時在驗證集準確率方面也不占優勢。Sigmoid激活函數在損失函數上與Relu激活函數相差較小,但是準確率浮動較大。因此在ResNet18中使用Relu函數作為激活函數。
優化器的選擇關系到ResNet模型能否快速收斂并取得較高的準確率和召回率,不同的優化器對網速的損失函數與測試集準確率也有著不同的影響,本文選用Adam、SGD、和Adamax三種優化器進行對比,對比數據如圖9所示。

(a)訓練集損失函數數值

(b)驗證集準確率
圖中能夠得出結果,優化器SGD與其他兩者相比在損失函數和準確率上不具有優勢,而Adamax作為Adam的優化,在Adam的基礎上增加了一個學習率上限的概念,具有一定的穩定性,折線幅度較低。所以選擇Adamax作為ResNet18的優化器。
基于前面實驗部分得到的各部分數據進行模型優化,得到改進后的ResNet18模型進行對比,數據如圖10所示。

(a)訓練集損失函數數值

(b)驗證集準確率
由圖10中得出結論,訓練損失函數方面改進后的ResNet18模型與改進前相比有明顯的降低,模型更加穩定,驗證集準確率也得到了一定的提升,其初始準確率高于未改進的模型且整體曲線的波動相比較少,驗證集平均準確率更是由之前的97.03%,提升為當前的97.21%整體樣本的準確率有了小幅度提升。將改進前的模型與改進后的模型使用預留的578張測試集圖片進行測試,結果如表2所示。

表2 模型測試集準確率
測試結果證明, 改進后的ResNet18測試集在油茶果的分選上準確率提升,有效的降低了外殼的錯誤率,在整體的平均準確率有了小幅度的提升,能夠滿足油茶果分選的實際需求。
1)在其他相同的條件下,采用較大的批量尺寸可以很好地提升模型的損失函數。但是較大的批量尺寸會增長模型的運行速度,提高運算時間,而且過大的批量尺寸也會使模型的驗證集準確率進一步波動。
2)學習率的降低可以使模型更快收斂,但是過低的學習率也會減少驗證集準確率,從而使模型效果變差。最終表明,選用0.0001的學習率最適合油茶果的分選。
3)激活函數和優化器的作用同樣重要,不同的選擇有著不同的影響,最終選擇Relu激活函數和Adamax優化器。
4)優化后的模型在準確率方面得到了一定的提高,實際測試平均準確率由之前的97.25%提升為選擇的97.75%,提升幅度不大但是證明了研究方向是正確的。下一步可以進一步改進模型,得到更好的模型效果。