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

圖1 油茶果分選機流程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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