牛智有 于重洋 吳志陶 邵艷凱 劉梅英
(1.華中農(nóng)業(yè)大學工學院,武漢 430070;2.農(nóng)業(yè)農(nóng)村部智慧養(yǎng)殖技術重點實驗室,武漢 430070)
飼料原料按照配方進行配料是控制飼料品質的關鍵因素之一[1]。在自動化飼料加工過程中,經(jīng)過粉碎或不需要粉碎的飼料原料需要經(jīng)旋轉分配器通過溜管進入不同配料倉,旋轉分配器會出現(xiàn)旋轉錯位等機械故障,導致飼料原料入倉錯誤,從而導致原料配制的錯誤,嚴重影響產(chǎn)品質量。為了確保飼料原料的正確配料,在飼料原料入倉初期要對入倉原料進行取樣和種類識別,以確保飼料原料正確入倉,避免錯倉。目前飼料原料的入倉過程中,主要通過巡檢員從不同溜管的取樣口中人工取樣后[2],再經(jīng)過感官識別等操作對入倉飼料原料進行種類判定,由于入倉飼料原料種類多,人工取樣并通過感官識別的勞動強度大,同時增加了飼料加工企業(yè)的人工成本。為了開發(fā)適應實際生產(chǎn)的原料種類智能化識別裝置,開展飼料原料種類識別的方法研究十分必要。
計算機視覺技術已經(jīng)在諸多領域有了廣泛的應用,對于傳統(tǒng)的機器視覺分類模型,模型的性能與特征的選擇聯(lián)系密切[3],提取諸如顏色[4-5]、紋理[6-7]、邊緣[8]、角點[9]等圖像特征過程繁瑣,并且人工設計的圖像特征大多為圖像的淺層特征,判別性能較弱,泛化能力不足,導致傳統(tǒng)機器視覺的識別準確率難以進一步提升。文獻[10]提出了卷積神經(jīng)網(wǎng)絡的AlexNet模型,與傳統(tǒng)方法相比體現(xiàn)出極大的優(yōu)勢。自此,如VGG[11]、GoogleNet[12]、ResNet[13]等卷積神經(jīng)網(wǎng)絡模型相繼被提出。采用卷積神經(jīng)網(wǎng)絡的方法對農(nóng)產(chǎn)品進行識別分類也取得了較好效果[14-16]。實際應用過程中,借助已有的預訓練模型進行遷移學習是常見的模型訓練方法,大大提高了識別準確率,縮短了訓練時間[17-19]。
本文基于飼料實際生產(chǎn)場景自主設計搭建多通道入倉原料種類自動識別裝置。利用該裝置采集入倉飼料原料圖像,構建10種大宗飼料原料圖像數(shù)據(jù)集,開展基于改進ResNet18模型的飼料原料種類識別方法研究。在ResNet18網(wǎng)絡模型中增加通道注意力機制,引入基于ImageNet數(shù)據(jù)集的預訓練權重進行遷移訓練,并優(yōu)化網(wǎng)絡結構,微調模型參數(shù),以期提高模型識別準確率,實現(xiàn)飼料原料種類快速準確識別,為進一步開發(fā)入倉原料種類在線識別系統(tǒng)奠定理論基礎和技術方法支撐。
以入倉前飼料原料為識別對象,分別在不同飼料生產(chǎn)企業(yè)采集不同產(chǎn)地、不同批次的玉米、小麥、稻谷、麩皮、面粉、膨化玉米、豆粕、棉籽粕、花生粕、魚粉共10種粉碎后或不需要粉碎的飼料原料樣品共500份,其中每類飼料原料均50份,部分飼料原料樣品如圖1所示。
圖1 部分飼料原料樣本
結合飼料生產(chǎn)實際,設計搭建多通道入倉原料種類自動識別裝置,可以實現(xiàn)多溜管自動取樣和圖像采集功能,其整體結構如圖2所示。該裝置主要包括自動取樣器、多通道集料斗、輸送帶、LED環(huán)形光源和ME2P-1230-23U3C型工業(yè)相機(大恒圖像視覺有限公司)等。
圖2 多通道入倉原料種類自動識別裝置
該裝置圖像識別的工作流程為:自動取樣器通過法蘭與原料取樣口連接,取樣器的頂端曲面與溜管內壁曲面吻合,確保取樣器在閉合狀態(tài)下與溜管接口的封閉性。當需要取樣時,取樣器在氣缸的驅動下伸入原料溜管,飼料原料樣品在重力作用下沿樣品溜管進入多通道集料斗,通過控制取樣器伸入原料溜管的停留時間控制取樣量,經(jīng)理論計算和參考文獻[1],取樣時間約為3 s,當達到預設取樣量后,氣缸復位,完成一個取樣周期。集料斗中的樣品通過輸送帶傳送進入圖像采集區(qū)。傳送帶上的飼料原料樣品以10 cm寬、0.8 cm厚平鋪于傳送帶,在暗箱內完成圖像信息采集。圖像采集使用彩色工業(yè)相機,取景范圍為10 cm×14 cm。因此,本裝置采集一幅圖像所需的最小樣本量體積約為112 cm3,為保證識別結果的準確性,每次識別過程對同一樣品采集3幅圖像進行綜合判定。待圖像采集完成后,傳送帶繼續(xù)將剩余物料輸送至回收箱。采集到的圖像傳回計算機,經(jīng)中心裁剪等預處理操作后輸入至飼料原料種類識別模型進行種類識別,完成一個周期的原料判別。
基于多通道入倉原料種類識別裝置進行飼料原料圖像的采集,共采集飼料原料圖像10 000幅,每類1 000幅,部分飼料原料圖像如圖3所示。
圖3 部分飼料原料圖像
調用Pytorch工具庫對飼料原料數(shù)據(jù)集圖像進行預處理,包括隨機裁剪縮放,以及圖像的張量操作和歸一化處理,圖像數(shù)據(jù)統(tǒng)一以224像素×224像素的尺寸輸入網(wǎng)絡模型中,保證飼料原料圖像可識別的前提下減小圖像尺寸,提升訓練速度,進而優(yōu)化訓練效果。
為進一步擴大飼料原料樣本容量,豐富訓練數(shù)據(jù)的分布,去除圖像冗余信息,提高模型的泛化能力,將數(shù)據(jù)集劃分出20%作為測試集。其余圖像通過數(shù)據(jù)增強的方式對數(shù)據(jù)集進行擴充,隨機旋轉、翻折圖像;隨機調整圖像亮度、對比度、飽和度。數(shù)據(jù)增強后的樣本總數(shù)擴增為20 000幅,每類樣本圖像2 000幅,并按照型訓練,驗證集用于驗證模型有效性,測試集數(shù)據(jù)不參與數(shù)據(jù)增強和模型訓練,僅用于測試模型最終效果。
卷積神經(jīng)網(wǎng)絡可以由卷積層自動提取大量的圖像空間視覺特征,除此之外,卷積神經(jīng)網(wǎng)絡還包括實現(xiàn)非線性映射的激活層和下采樣層(即池化層),實現(xiàn)特征由二維到一維轉換的全連接層,以及計算輸出值和真實值偏差的損失函數(shù)等[20]。
從理論經(jīng)驗來看,不斷增加神經(jīng)網(wǎng)絡的層數(shù),可以提取到更加復雜的特征,取得更好的效果。但是大量試驗結果顯示,深層的卷積網(wǎng)絡會出現(xiàn)退化,即網(wǎng)絡層數(shù)到達一定數(shù)量之后,準確度出現(xiàn)飽和,甚至下降。為了解決該問題,殘差學習被提出來,在層間增加殘差跳躍連接,引入淺層特征,有效防止了梯度消失和梯度爆炸的發(fā)生,緩解了模型退化的問題,使得神經(jīng)網(wǎng)絡的層數(shù)增加成為可能,具有強大的表征力。殘差結構如圖4所示[13]。
圖4 殘差結構圖
圖4中x表示輸入,H(x)表示輸出,F(xiàn)(x)表示殘差,傳統(tǒng)CNN網(wǎng)絡嘗試擬合x與H(x),殘差網(wǎng)絡結構嘗試學習F(x)+x,而非直接學習兩者的潛在映射x→H(x)。其核心思路為:殘差單元在接受輸入數(shù)據(jù)之后,若一個淺層網(wǎng)絡準確率已經(jīng)達到飽和,則在它后面加幾個恒等映射層,使得輸出等于輸入,因此增加網(wǎng)絡深度但是不增加誤差,這使得神經(jīng)網(wǎng)絡的層數(shù)可以超越之前的約束,提高識別準確率。
本文選擇經(jīng)典卷積神經(jīng)網(wǎng)絡ResNet18調整優(yōu)化并進行遷移訓練。該模型由一系列的殘差結構組成,共包含8個殘差單元,由18層組成,包括17個卷積層和1個全連接層。
2.2.1CAM-ResNet18模型結構
基于經(jīng)典ResNet18模型進行調整,改進后的CAM-ResNet18網(wǎng)絡結構如圖5所示,輸入圖像為經(jīng)過預處理,尺寸為224像素×224像素×3通道的飼料原料圖像,圖像數(shù)據(jù)進入網(wǎng)絡后首先經(jīng)過一個卷積核為7×7、步距為2的卷積層,再經(jīng)過批歸一化處理(Batch normalization, BN)、激活函數(shù)以及一個3×3的最大池化層下采樣,將224像素×224像素的輸入圖像變?yōu)?6像素×56像素的特征圖像,極大地減小存儲所需空間。conv2~conv5表示添加了殘差結構的卷積塊,4個卷積模塊進行淺層至深層的特征提取,每個卷積塊包括兩個殘差單元,每個殘差單元又包括兩個卷積層,即通過堆疊3×3卷積來提取特征信息,每隔2個卷積層引入殘差結構。并在第一個卷積層和最后一個卷積層后引入通道注意力模塊(Channel attention module, CAM),增強有效信息的提取,提高網(wǎng)絡模型表達能力的同時方便預訓練參數(shù)的載入[21]。經(jīng)過殘差連續(xù)卷積后輸出的圖像再經(jīng)過數(shù)據(jù)歸一化處理和全局自適應平滑池化,其中數(shù)據(jù)歸一化處理算法可以加快收斂速度,提高模型精度。此時,由于連續(xù)卷積,數(shù)據(jù)無法完全連接,針對此,數(shù)據(jù)被輸入至展平層進行卷積,將多維數(shù)據(jù)一維化。最后,將得到的圖像輸入至全連接層,為防止神經(jīng)網(wǎng)絡過擬合,使用隨機失活方法[22],參數(shù)設置為0.5,隨機丟棄1/2的神經(jīng)元。并通過softmax分類器輸出對應的飼料原料種類識別結果。
圖5 CAM-ResNet18網(wǎng)絡結構圖
2.2.2通道注意力機制
CBAM注意力機制(Convolutional block attention module, CBAM)包括通道注意力機制和空間注意力機制(Spatial attention module, SAM)2個子模塊,通道注意力機制關注圖像中有意義的特征,空間注意力機制關注最具信息量的地方[23]。本研究的飼料原料樣品圖像均為平鋪小顆粒圖像而非獨立的目標物體圖像,增加空間注意力后反而會使得模型識別重點模糊,導致分類準確率下降。因此,本研究的網(wǎng)絡模型僅增加CBAM注意力機制的通道注意力機制模塊。通道注意力模塊原理圖如圖6所示。
圖6 通道注意力模塊原理圖
通道注意力模塊將特征圖空間維度壓縮為一維矢量,在此過程中采用全局平均池化(AvgPool)并行全局最大池化(MaxPool)來壓縮通道特征,能更好地聚合特征映射信息,輸入特征經(jīng)過平均池化、最大池化兩個并行池化后的結果送入一個權重共享的多層感知機(Multi-layer perceptron, MLP)中。然后對MLP的輸出特征進行逐元素加和,經(jīng)過Sigmoid非線性激活函數(shù)后生成通道注意力Mc(F),與輸入特征圖逐個元素相乘得到特征F′作為下一個卷積塊的輸入。其過程公式為
Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))
(1)
F′=Mc(F)?F
(2)
式中F——圖像輸入特征
AvgPool(·)——平均池化層函數(shù)
MaxPool(·)——最大池化層函數(shù)
MLP(·)——多層感知機函數(shù)
σ——Sigmoid函數(shù)
F′——使用通道注意力模塊得到的特征
2.2.3優(yōu)化器及學習率
Adam(Adaptive moment estimation)優(yōu)化器可以計算不同參數(shù)的自適應學習速率,具有占用內存小、應用簡單、計算效率高等優(yōu)點,可以應用于稀疏梯度以及非平穩(wěn)目標[24]。
研究表明,在使用自適應學習率的同時進行學習率衰減能夠促進模型更好的收斂[25]。余弦退火(Cosine annealing)以余弦函數(shù)的形式降低學習率。本模型在Adam優(yōu)化器中引入余弦退火衰減學習率,有助于快速達到最優(yōu)解,并減少后期震蕩。
本研究模型訓練的試驗硬件環(huán)境為:ADM r7 5800H 3.2 GHz標壓處理器,運行內存為16 GB,3 600 MHz,搭載6 GB NVIDIA GeForce RTX 3060 GPU加速訓練。軟件環(huán)境基于Windows 10系統(tǒng),Anaconda 3平臺,通過Python語言在Pytorch深度學習框架中搭建并運行網(wǎng)絡模型,并行計算框架為CUDA 10.1版本。
卷積神經(jīng)網(wǎng)絡模型的訓練效果與模型參數(shù)設置密切相關,設置批大小(Batch_size)為16,每次訓練迭代50個周期(Epochs),使用Adam優(yōu)化器和余弦退火衰減學習率,初始學習率設置為0.000 1,在圖像進入網(wǎng)絡訓練之前進行預處理和歸一化處理。
由于飼料原料原始數(shù)據(jù)集較小,因此采用ImageNet上訓練好的模型參數(shù)來初始化當前模型的權值,加速網(wǎng)絡收斂,大大縮短了訓練時間,提高了訓練效率[26]。
選擇準確率、識別時間作為網(wǎng)絡模型的主要評價指標,為方便本模型后期嵌入開發(fā),也要綜合考慮模型內存占用量和模型參數(shù)量。并結合混淆矩陣計算精確率、召回率、特異度和F1值綜合評價網(wǎng)絡模型對飼料原料種類的識別能力[27]。
4.1.1學習率
理想的學習率有利于模型快速收斂,若初始學習率設置過小則目標函數(shù)下降速度緩慢[28]。若學習率設置過大容易使得目標函數(shù)在最優(yōu)解附近不斷震蕩,甚至出現(xiàn)目標函數(shù)爆炸現(xiàn)象。利用Adam優(yōu)化器和余弦退火法衰減學習率時Adam的默認學習率為0.001。為進一步探究模型參數(shù)對網(wǎng)絡模型準確率的影響,在基于CAM-ResNet18網(wǎng)絡模型和遷移學習的前提下設置初始學習率為0.1、0.01、0.001、0.000 1、0.000 01,分別對飼料原料種類識別模型進行訓練,迭代次數(shù)設置為50次。
學習率對CAM-ResNet18網(wǎng)絡模型的影響如圖7所示,從圖7可以看出,學習率設置為0.1和0.01時模型經(jīng)50次迭代訓練仍未收斂,且最終損失值為0.34和0.2,遠大于學習率為0.001時的損失值。學習率為0.001時,模型準確率得到大幅度提升,但其穩(wěn)定性有待進一步增強。對比學習率為0.000 1與學習率為0.000 01時模型的訓練效果發(fā)現(xiàn),二者識別準確率較為接近,但學習率為0.000 1時的收斂速度及最終損失值優(yōu)于學習率為0.000 01時,故選擇0.000 1為本網(wǎng)絡模型的學習率。
圖7 不同學習率對準確率和損失值的影響
4.1.2注意力機制
由于注意力機制的嵌入位置對識別準確率有一定的影響[29],將注意力機制添加在第一個卷積層以及最后一個卷積層之后不會改變ResNet18網(wǎng)絡的原有結構,仍能有效遷移原有預訓練參數(shù)[30]。
為了驗證網(wǎng)絡中注意力機制添加方式的有效性,對比網(wǎng)絡中添加注意力機制位置以及個數(shù)對模型準確率的影響。本文設計了4種注意力機制添加方案。
4種注意力機制添加方案分別為:只在第1個卷積層后添加1個注意力機制(方案1);在第1個卷積層后和最后1個卷積層后共添加2個注意力機制(方案2);在最后1個卷積層后添加注意力機制(方案3);不添加注意力機制(方案4)。使用同一數(shù)據(jù)集,保證訓練參數(shù)一致的前提下,在優(yōu)化微調后的ResNet18網(wǎng)絡模型中訓練和驗證,試驗結果如表1所示。
表1 不同注意力機制添加方式時ResNet18模型的性能
由表1可知,添加1個注意力機制對模型性能略有提升,添加2個注意力機制時識別準確率達到最佳,說明通道注意力機制的引入,有效提升了模型驗證集準確率。
為進一步分析添加注意力機制后卷積網(wǎng)絡特征提取的變化,對CAM-ResNet18網(wǎng)絡模型與ResNet18網(wǎng)絡模型每一個卷積塊最后一個卷積層的特征做可視化輸出,如圖8所示。
圖8 卷積層輸出特征
模型特征可視化過程中,對模型輸入同一豆粕樣本圖像。分析兩個模型卷積層的輸出特征圖,發(fā)現(xiàn)卷積網(wǎng)絡的學習都是由淺層特征向深層特征過渡,不同的卷積核提取不同的特征信息,淺層的卷積核側重于提取圖像的輪廓、邊緣、紋理、顏色等特征信息。但隨著圖像在卷積層中向前傳遞,特征圖出現(xiàn)肉眼無法辨識的深層特征,表現(xiàn)為細節(jié)逐漸消失。
逐層對比兩個模型的特征輸出圖,可發(fā)現(xiàn)conv_1卷積層特征輸出圖完全一致,這是因為CAM-ResNet18網(wǎng)絡模型的第1個注意力機制添加位置在conv_1卷積層之后,因此卷積層1的輸出特征圖并無注意力機制的影響。對比兩個模型的conv2~conv5卷積層特征輸出圖,發(fā)現(xiàn)添加了注意力機制的CAM-ResNet18網(wǎng)絡模型可以更好地保留有效特征信息,減少冗余特征信息,進一步證明了通道注意力機制的添加可以更加有效地提取飼料原料圖像特征。
為了驗證模型CAM-ResNet18改進的有效性,將本研究的CAM-ResNet18網(wǎng)絡模型與常見用于圖像分類的ResNet18、ResNet34、AlexNet、VGG16網(wǎng)絡模型在飼料原料數(shù)據(jù)集上的訓練結果進行對比。訓練前,調整各模型參數(shù)一致,并將Softmax輸出種類由1 000分類調整為10分類,在相同的訓練環(huán)境下進行50次迭代。各個模型驗證準確率、參數(shù)量、浮點運算量、識別時間等性能如表2所示。
表2 不同卷積神經(jīng)網(wǎng)絡模型性能對比
對比各網(wǎng)絡模型的驗證準確率發(fā)現(xiàn),各卷積網(wǎng)絡模型在飼料原料種類數(shù)據(jù)集上的最終識別準確率都在90%以上。CAM-ResNet18網(wǎng)絡模型驗證準確率略高于ResNet34和ResNet18網(wǎng)絡模型,50次迭代訓練后CAM-ResNet18網(wǎng)絡模型的驗證集識別準確率可達到99.1%,比經(jīng)典ResNet18模型的驗證準確率高0.6個百分點,較更深層次的ResNet34網(wǎng)絡模型高0.2個百分點。VGG16模型的驗證準確率為98.0%,比CAM-ResNet18網(wǎng)絡模型的驗證集識別準確率低1.1個百分點,AlexNet模型最終識別準確率僅95.4%,比CAM-ResNet18網(wǎng)絡模型的驗證集識別準確率低3.7個百分點。與其他模型相比,改進后的CAM-ResNet18模型在飼料原料數(shù)據(jù)集上的識別效果最佳。
模型參數(shù)量方面,CAM-ResNet18模型較原ResNet18模型參數(shù)量增加1.3×105,增長0.29%,對模型整體性能影響較小。浮點運算量反映網(wǎng)絡模型的復雜程度,CAM-ResNet18模型與ResNet18模型的浮點運算量相同,為1.82×109,高于AlexNet,但低于ResNet34和VGG16。ResNet34模型的識別準確率與CAM-ResNet18較為接近,但ResNet34模型參數(shù)量約增大1倍,浮點運算量也增大1倍。
規(guī)定自載入目標飼料原料圖像至識別完成為一次完整檢測,且各模型中飼料原料圖像載入方式相同。CAM-ResNet18模型單次圖像識別時間為2.58 ms,較ResNet18模型檢測時間慢0.02 ms,較ResNet34快0.27 ms,較VGG16快0.4 ms。
綜合對比5種卷積神經(jīng)網(wǎng)絡模型,CAM-ResNet18模型具有最高的識別準確率,較快的檢測速度,模型參數(shù)量與浮點計算量較小。對比ResNet18模型與CAM-ResNet18模型,CAM-ResNet18在識別準確率上提升0.6個百分點,識別時間變化不大,且浮點運算量以及模型參數(shù)量幾乎沒有增加,說明其性能提升的同時并未大幅增加時間復雜度與空間復雜度,體現(xiàn)了模型改進的有效性。
混淆矩陣可以用來可視化地展示分類模型的性能,是評判模型結果的重要指標之一,常用于評判分類器模型[31]。本研究的CAM-ResNet18網(wǎng)絡模型在經(jīng)數(shù)據(jù)增強的飼料原料數(shù)據(jù)集上訓練后,使用預先留出的測試集測試模型的效果,圖像總數(shù)為2 000幅,每類飼料原料200幅,得到混淆矩陣如圖9所示。由圖9可知,預測值密集分布在對角線上,說明該模型的分類水平非常準確。觀察預測錯誤的樣本可知,少量稻谷和小麥出現(xiàn)預測錯誤,可能是因為小麥粉以及稻谷粉的顏色和粉碎粒度等特性都較為相似;玉米粉和膨化玉米粉的顏色極為相近。在特征提取過程中易混類特征差異不大,不易區(qū)分,因此容易出現(xiàn)識別錯誤??傮w來說,本文提出的CAM-ResNet18模型在采集的飼料原料數(shù)據(jù)集上的分類性能優(yōu)秀,能夠較好地對飼料原料種類進行區(qū)分,準確地對飼料原料種類進行判別。
圖9 飼料原料測試集混淆矩陣
根據(jù)混淆矩陣可以計算模型對應各個類別的準確率、精確度、召回率、特異度和F1值。計算結果如表3所示。
表3 CAM-ResNet18模型飼料原料種類識別結果
由表3可知,本研究模型的召回率、F1值、特異度都很高,10種飼料原料分類精確度均在98.0%以上。在特異度上,本模型均在99.8%以上。以F1值為標準對其分類性能排序的結果為:棉籽粕、面粉、魚粉、麩皮、花生粕、豆粕、玉米、膨化玉米、稻谷、小麥,其中小麥和稻谷識別效果略有不足,但總體來看測試集的識別準確率達99.4%,召回率達99.4%,F(xiàn)1值達99.4%,特異度達99.9%。這表明CAM-ResNet18模型在飼料原料種類識別任務上表現(xiàn)優(yōu)異。
(1)CAM-ResNet18網(wǎng)絡模型在驗證集中飼料原料的識別準確率達到99.1%,識別時間為2.58 ms。與ResNet18、ResNet34、AlexNet、VGG16模型相比,識別準確率分別提升0.6、0.2、3.7、1.1個百分點,識別時間較ResNet34、VGG16模型有所減小。
(2)使用混淆矩陣可視化地展示分類模型的性能,測試集的整體識別準確率達99.4%,召回率達99.4%,特異度達99.9%,F(xiàn)1值達99.4%,其中面粉、棉籽粕、魚粉3類飼料原料的精確度、召回率和F1值均達到100%。證明了CAM-ResNet18模型適用于飼料原料種類的識別分類。