鄭銀環(huán), 林曉琛, 吳 飛, 金圣潔, 吳傲男
(武漢理工大學 機電工程學院,湖北 武漢 430070)
在煙葉制絲工藝中,首先需要將大片煙葉進行打葉復烤,通過打葉設(shè)備使葉片和煙梗分離,將整片煙葉破碎成小塊。經(jīng)打葉復烤后雖絕大多數(shù)煙梗已分離,但其中仍夾雜著一定量的煙梗。煙葉打葉復烤后應符合嚴格的質(zhì)量標準[1],因此需將復烤后的破碎煙葉進行松散回溯處理,即通過120 ℃熱蒸汽提升煙葉的溫度與水分,達到煙葉松散和舒展的效果,隨后通過振動篩裝置使煙葉鋪開減少煙葉堆疊情況,再進一步去梗。由于生產(chǎn)質(zhì)量標準嚴格,該工序一直都是人工完成,帶來生產(chǎn)效率低、耗時長、人工費用高等生產(chǎn)實際問題。
針對煙葉中煙梗識別與剔除的問題,國內(nèi)外學者進行了大量的研究。文獻[2]研究了低能X射線透射成像,結(jié)合形態(tài)學濾噪、灰度閾值分割、歸屬判斷等圖像實時分析處理手段,實現(xiàn)了打葉片煙中煙梗的在線識別及剔除;文獻[3]設(shè)計了一種以基于現(xiàn)場與編程門陣列(field programmable gate array,FPGA)的高速圖像處理設(shè)備為核心的煙梗在線檢測系統(tǒng),該系統(tǒng)采用 X 光源透射皮帶上的煙葉以及煙梗,通過探測器接受X射線并通過高速圖像處理設(shè)備對圖像進行算法處理,進而實現(xiàn)煙梗識別;文獻[4]利用 X 射線的透射性原理,結(jié)合 X 射線穿過物質(zhì)后的衰減規(guī)律,對片煙中煙梗質(zhì)量進行擬合,從而計算出葉中含梗率;文獻[5]采用高功率紅外線作為透射光源,以高清連續(xù)攝錄機為圖像獲取平臺,以灰度算法為核心程序,實現(xiàn)煙梗面積自動化測算系統(tǒng)的開發(fā)。
上述研究利用煙葉和煙梗在不同光源下反映出的特性不同作為判據(jù)依據(jù)進行煙梗識別及分離,而在實際生產(chǎn)中,經(jīng)松散回溯后的破碎煙葉通常為散亂堆疊狀態(tài)且煙梗特征不一,造成上述方法在實際生產(chǎn)中的識別精度不高。
深度學習技術(shù)在計算機視覺領(lǐng)域中的應用發(fā)展迅速。根據(jù)算法原理不同主要分為2類:① 先進行區(qū)域生成,再通過卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)進行樣本的分類,其中最具代表性的算法有R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN等[6-10]; ② 不進行區(qū)域生成,直接在網(wǎng)絡中提取特征來預測物體分類和位置,常見算法有OverFeat[11]、SSD[12]、YOLO系列算法[13-14]等,此類算法因具備可同時預測物體種類和位置的特性,相比于第①類算法在目標檢測過程中更具快速性。而YOLO v4作為檢測速度和檢測精度兼?zhèn)涞臋z測算法,在工業(yè)現(xiàn)場應用廣泛。
基于深度學習的目標檢測技術(shù)雖然識別精度高、可移植性好,但往往計算量大,模型結(jié)構(gòu)復雜,占用空間大,而工業(yè)現(xiàn)場的工控機等主機設(shè)備往往儲存空間有限,使得檢測算法的現(xiàn)場部署實施困難。
本文以YOLO v4為基礎(chǔ)網(wǎng)絡,建立了煙葉回溯振動鋪開后煙梗的輕量化檢測模型。利用通道剪枝和層剪枝相結(jié)合的方法對模型進行壓縮,通道剪枝大大減小了模型參數(shù)量和計算量,降低了模型對資源的占用。層剪枝可以進一步減小計算量,并大大提高模型推理速度。兩者相結(jié)合,可以大幅度壓縮模型的深度和寬度。
本文在數(shù)據(jù)集制作過程模擬真實工業(yè)場景,綜合考慮了真實生產(chǎn)線上煙葉可能出現(xiàn)的情況。實驗對象為松散回溯工序后的破碎煙葉,且已由振動篩裝置鋪開無明顯堆疊情況,人工將破碎葉片隨機擺在黑色背景的實驗拍攝平臺,使用英特爾RealSense d435i型號相機采集煙葉數(shù)據(jù)集。實驗拍攝平臺如圖1所示。
圖1 圖像采集平臺
實驗采用設(shè)備燈光進行拍照,光照條件設(shè)置為曝光度640、對比度50、飽和度64。圖像輸出尺寸為1 920像素×1 080像素,幀率為8,共拍攝1 000張煙葉照片。
為豐富數(shù)據(jù)集,提高模型泛化能力,進一步提升模型性能,本文采用Mosaic數(shù)據(jù)增強方法,隨機讀取4張煙葉照片,分別對4張照片進行翻轉(zhuǎn)、縮放等操作,隨之將4張照片按照左上、左下、右下、右上的順序排布,最后利用矩陣的方式將4張圖片在固定位置截取下來并拼接成1張新的圖片。原始煙葉照片及Mosaic數(shù)據(jù)增強后的照片如圖2所示。
圖2 破碎煙葉圖像
最終采集到煙葉數(shù)據(jù)集共2 000張,其中訓練集與測試集比例劃分為7∶3。
松散回溯后振動鋪開的煙葉形狀不規(guī)則,煙葉中煙梗特征較不明顯。將標注好的煙葉煙梗數(shù)據(jù)集輸入到Y(jié)OLO v4網(wǎng)絡中進行基礎(chǔ)訓練,得到基礎(chǔ)模型。針對YOLO v4基礎(chǔ)訓練模型進行稀疏訓練,隨后將稀疏訓練模型進行通道剪枝和層剪枝,修剪掉模型中的冗余通道、Shortcut層和卷積層,大幅度減小了模型的參數(shù)量和模型大小,提高了模型推理速度,但模型精度會有所下降。最后對剪枝后的模型進行微調(diào),使模型精度重新回升至較高水平。
YOLO v4以CSPDarknet53作為主干網(wǎng)絡實現(xiàn)圖像特征的提取。CSPDarknet53將YOLO v3的主干網(wǎng)絡Darknet53與CSPNet進行結(jié)合形成新網(wǎng)絡主干,其中CSPNet將基本層的特征圖分成兩部分,然后通過一個跨階段的層次結(jié)構(gòu)合并它們,使新的網(wǎng)絡主干能夠?qū)崿F(xiàn)更豐富的梯度組合,同時減少計算量;以PANet(path aggregation network)代替了YOLO v3中的特征金字塔網(wǎng)絡(feature pyramid network,FPN)作為參數(shù)聚合,針對不同主干層進行參數(shù)聚合;同時繼承了YOLO v3的多尺度預測模塊,輸出層的錨框機制與YOLO v3相同,主要改進了訓練時的損失函數(shù)CIoU-Loss以及預測框篩選的DIoU-nms,進一步提升了算法的檢測精度。
檢測煙葉中煙梗的YOLO v4網(wǎng)絡模型結(jié)構(gòu)如圖3所示。
圖3 YOLO v4網(wǎng)絡模型結(jié)構(gòu)圖
該檢測模型主要由CBM(convolution,batch normalization and mish)、CBL(convolution,batch normalization and Leaky ReLU)、CSPX(center and scale prediction)、SPP(spatial pyramid pooling)和ResUnit等基礎(chǔ)組件組成。
CBM是YOLO v4網(wǎng)絡結(jié)構(gòu)中的最小組件,由Conv+BN+Mish激活函數(shù)組成,Conv是卷積層,用來提取特征,BN用于歸一化處理,Mish為激活函數(shù),允許更好的信息深入神經(jīng)網(wǎng)絡,從而得到更好的準確性和泛化;CBL由Conv+BN+Leaky_ReLU激活函數(shù)組成,與CBM不同的是采用了Leaky-ReLU激活函數(shù),在反向傳播過程中,其輸入小于0的部分,也可以計算得到梯度,避免了梯度方向出現(xiàn)鋸齒的問題;ResUnit借鑒網(wǎng)絡中的殘差結(jié)構(gòu),可以構(gòu)建更深的網(wǎng)絡,解決了深度神經(jīng)網(wǎng)絡中給網(wǎng)絡疊加更多層后,網(wǎng)絡深度在增加性能卻快速下降的問題;CSPX借鑒CSPNet網(wǎng)絡結(jié)構(gòu),由3個卷積層和X個ResUnit模塊Concat而成,在減少計算量的同時實現(xiàn)更豐富的梯度組合;SPP采用1×1、5×5、9×9、13×13的最大池化方式進行多尺度融合,大大增加了感受野。
損失函數(shù)在模型中起到關(guān)鍵性作用,可以衡量模型預測的好壞,用來表現(xiàn)預測與實際數(shù)據(jù)之間的差距程度?;赮OLO v4的煙葉中煙梗檢測模型的損失函數(shù)由回歸框損失函數(shù)(lossCIoU)、置信度損失函數(shù)(lossconf)和分類損失函數(shù)(lossclass)組成。損失函數(shù)計算公式為:
loss=lossCIoU+lossconf+lossclass
(1)
回歸框損失值為:
lossCIoU=1-IoU+d2/f2+αν
(2)
(3)
(4)
置信度損失值為:
(5)
分類損失值為:
(6)
基于YOLO v4的煙梗檢測模型可實現(xiàn)松散回溯后破碎煙葉中煙梗的識別,但基礎(chǔ)訓練模型儲存空間較大,模型參數(shù)量較多,且模型推理速度較慢?;谏鲜鰡栴},本文提出了基于通道剪枝和層剪枝相結(jié)合的模型輕量化剪枝方案,將YOLO v4訓練后得到的模型進行裁剪,該操作能夠大大減小模型存儲量和計算量,顯著提高模型推理速度,且能保證模型精度。
通道剪枝本質(zhì)上是指在模型經(jīng)過稀疏訓練后,消除BN層γ值較小的通道,即輸入通道中貢獻率較低的通道。通道剪枝在保證網(wǎng)絡結(jié)構(gòu)完整的情況下降低了模型參數(shù)量,減小了模型存儲空間,且不需要特定的網(wǎng)絡框架或硬件支持,使其更方便部署在移動設(shè)備上。
通道剪枝算法原理如圖4所示。煙梗識別模型采用通道修剪γ值來評估其通道的重要性。假設(shè)γ值接近于0,輸出通道也接近于0,因此γ值所在的通道對整個網(wǎng)絡的影響很小,可以進行修剪。
圖4 通道剪枝算法原理圖
在對煙梗特征提取網(wǎng)絡進行通道修剪后,進一步去除多余的殘差塊,如圖5所示。在修剪冗余殘差塊時,首先對所有Shortcut層的前一個CBL的γ值的均值進行排序。若它接近于0,則該殘留塊沒有學習到有用的信息,那么對其進行剪枝不會影響網(wǎng)絡性能,因此γ值均值較小的殘差塊將被修剪。為保證網(wǎng)絡的完整性,每剪一個Shortcut結(jié)構(gòu),會同時剪掉一個Shortcut層及其前面的2個卷積層。本文一共剪掉16個Shortcut,共計剪掉了48個層,精度下降較少。
圖5 修剪冗余殘差塊流程
稀疏訓練后,許多γ值收斂到0,因此對模型的冗余通道和網(wǎng)絡層進行剪枝,減少了模型的參數(shù)、大小和推理時間。
本研究所用計算機型號為GPU 1080Ti、CPU E5-2678v3、內(nèi)存大小62 GiB、顯存大小11 GiB,開發(fā)環(huán)境為Python 3.6+PyTorch 1.9.0+openc v4.5.5+CUDA 11.4。模型剪枝具體步驟模型如下:
1) 基礎(chǔ)訓練。剪枝前,先對數(shù)據(jù)集進行基礎(chǔ)訓練,利用YOLO官網(wǎng)給出的初始權(quán)重訓練數(shù)據(jù)集,初始學習率(learning rate)設(shè)置為0.002 3,批樣本量(batch size)為8,迭代次數(shù)(epoch)為200,基礎(chǔ)訓練情況如圖6所示。
從圖6a可以看出,隨著迭代次數(shù)的推進,基礎(chǔ)訓練趨于150次時損失值趨于平緩,最終模型訓練200次loss值穩(wěn)定在0.5左右,模型收斂。從圖6b可以看出,基礎(chǔ)訓練模型精度在前40次迭代穩(wěn)步上升,到達40個epoch時達到0.850,在接下來的160次迭代中平均精度均值(mean average precision,mAP)平緩上升,模型最終收斂精度達到0.941。
2) 稀疏訓練。煙梗識別模型經(jīng)過基礎(chǔ)訓練后包含大量冗余通道,且通道數(shù)量在不同BN層間存在顯著差異。本文采用稀疏訓練方法來解決通道數(shù)量差異較大的剪枝問題,為后續(xù)模型剪枝作準備。通過將BN層γ值的L1歸一化項添加到損失函數(shù)中,使γ值變得稀疏,L1歸一化消除最終沒有為輸出提供有用信息的通道。稀疏因子s設(shè)置為0.001,批樣本量(batch size)為8,迭代次數(shù)(epoch)為500,初始學習率(learning rate)為0.002 3,在稀疏訓練迭代次數(shù)達到70%和90%的2個階段進行γ值為0.1的學習率衰減,使模型精度有所回升。
從圖6a可以看出,基礎(chǔ)訓練得到的模型進行稀疏訓練后,整體loss曲線呈先上升后下降趨勢,整體存在較大波動,在迭代次數(shù)為220時達到峰值,隨后下降且最終趨于平緩,loss值最終??吭?.0左右且存在細微波動。從圖6b可以看出,稀疏訓練模型精度繼承基礎(chǔ)訓練的最終精度0.940且在稀疏訓練的前120次的迭代中趨于穩(wěn)定,在迭代次數(shù)為120后模型精度發(fā)生了較大跨越,最終在迭代次數(shù)為360后趨于平緩,mAP值在0.700左右且存在細微波動。
模型訓練過程中權(quán)值分布直方圖如圖7所示,直方圖表示模型訓練過程中神經(jīng)網(wǎng)絡中每一層的權(quán)重。圖7中:縱坐標值的增加表示模型BN層的遞增,用來反映模型訓練過程的推進;橫坐標γ反映模型的穩(wěn)定性和稀疏性,隨著訓練迭代次數(shù)即縱坐標值的增加,γ值分布范圍逐漸相似,說明模型趨于收斂,γ值趨于0說明模型結(jié)構(gòu)逐漸稀疏。
圖7 YOLO v4模型基礎(chǔ)訓練、稀疏訓練γ值直方圖
圖7a為YOLO v4基礎(chǔ)訓練模型各BN層γ值分布中心的變化趨勢圖。從圖7a可以看出,γ值隨著訓練迭代次數(shù)的增加始終分布在1左右,γ值始終趨于穩(wěn)定,說明基礎(chǔ)訓練一直處于穩(wěn)定狀態(tài)。
圖7b為YOLO v4稀疏訓練模型各BN層γ值分布中心的變化趨勢圖。從圖7b可以看出,γ值在開始迭代時分布在1附近,隨著訓練迭代次數(shù)的增加逐漸趨于0,說明γ值逐漸變得稀疏,當?shù)螖?shù)達到500左右時γ值趨于穩(wěn)定,說明此時稀疏訓練已處于穩(wěn)定狀態(tài)。
3) 模型剪枝及微調(diào)。對稀疏訓練后的模型設(shè)置80%的通道剪枝全局比例和0.01的每層最低保持通道數(shù)比例,剪掉12個Shortcut及其前面24個CBL,總共剪掉36層。
剪枝結(jié)果見表1所列。
表1 剪枝前后模型參數(shù)
從表1可以看出,模型經(jīng)過通道與層剪枝后參數(shù)量下降了95.49%,存儲空間減少了234.44 MB,模型檢測時間減少了約0.005 s,模型mAP降低了21.8%。鑒于模型剪枝后精度出現(xiàn)下跌,對剪枝模型進行100次迭代基礎(chǔ)訓練的微調(diào),批樣本量(batch size)設(shè)置為8,以補償模型性能的下降。微調(diào)后模型存儲空間略有增加,但控制在較小范圍內(nèi)。
模型精度回升到與剪枝前相近,且檢測速度仍能維持在模型剪枝前水平。結(jié)果表明,對模型進行剪枝及微調(diào)可在保證模型精度及檢測速度的前提下大幅簡化模型。
基于本文剪枝微調(diào)后的YOLO v4優(yōu)化模型煙梗檢測效果如圖8所示。
圖8 模型檢測效果圖
從圖8可以看出,在實驗背景下能夠準確地識別出不同破碎煙葉片中存在的煙梗,識別精度高,檢測速度快,適用于卷煙自動化工廠中識別剔除帶梗煙葉工藝步驟,能代替現(xiàn)階段煙廠工人經(jīng)驗化識別剔除步驟,減少勞動力,提高識梗去梗準確率和成品煙絲品質(zhì)。
選用mAP、精確率P、召回率R、F1值、模型大小以及模型檢測時間等指標對不同模型進行性能評估。
基于YOLO v4剪枝模型對煙葉圖像進行測試,精確率為90.98%,召回率為95.46%,F1值為93.17%,mAP為93.00%,檢測單張圖片時間達到0.021 00 s。模型識別精度高、識別速度快,且占用空間相比同類模型得到極大壓縮,為煙廠片煙精選工作提供有利的技術(shù)支持。
與同類別的目標檢測模型相比,本文使用的方法更具備優(yōu)勢。常用的目標檢測模型有SSD[12]、YOLO v3[13]、YOLO v4[14]、YOLO v4-tiny[15]、YOLO v5[16]等,在同樣的硬件及開發(fā)環(huán)境下,使用這5種模型分別進行測試,但得結(jié)果見表2所列。
表2 不同模型性能評估
比較幾種重要的模型評價指標可以看出,本文YOLO v4剪枝模型的召回率和F1值均最高,其精確率較Sota方法的YOLO v5模型雖下降0.21%,但模型mAP相較剪枝前下降了1.10%,變化較小,但仍保持在較高的精度水平,模型檢測速度略有提升,同時模型存儲大小得到了極大壓縮,甚至比YOLO v4-tiny輕量化模型還要小7.25 MB,應用于工業(yè)現(xiàn)場可極大減小部署設(shè)備儲存空間。剪枝模型檢測速度雖相較于SSD、YOLO v3、YOLO v4-tiny略有下降,但最大檢測時間差控制在0.008 00 s左右,對工業(yè)應用現(xiàn)場影響不大,且與此3種模型相比,本文方法的模型精度分別提升了9.31%、4.06%、13.64%。
綜合比較,本文模型剪枝方法與同類目標檢測模型相比,在極大壓縮模型存儲空間的基礎(chǔ)上,仍能保持較高的模型精度以及模型檢測速度,表明本文方法在片煙精選工業(yè)現(xiàn)場中的煙梗識別剔除應用中具有很強的應用前景。
本文方法的模型剪枝過程中,涉及到人為設(shè)置通道剪枝全局比例以及層剪枝Shortcut層數(shù)這2個重要參數(shù),不同參數(shù)下模型剪枝效果存在差異。本文比較了不同剪枝參數(shù)下模型的性能,結(jié)果見表3所列。以通道剪枝全局比例85%和80%以及層剪枝層數(shù)12和16分別對YOLO v4基礎(chǔ)模型進行剪枝操作,分析模型剪枝結(jié)果。
表3 不同剪枝率和剪枝層數(shù)模型性能對比
在模型精度方面,剪枝后精度均出現(xiàn)一定幅度的下降,但整體降幅不大,全局比例為80%,層剪枝層數(shù)為12時,模型精度下降幅度最小,相比于原模型,mAP僅下降1.10%,說明較小的通道剪枝比例和層剪枝層數(shù)對模型精度影響更小。
在模型存儲空間方面,剪枝后相比于原模型均得到大幅度壓縮,且通道剪枝比例和層剪枝層數(shù)越大,對模型的壓縮力度也越大,模型最小能壓縮到9.88 MB,僅占原模型空間的4.0%。在模型檢測速度方面,不同參數(shù)組合下的剪枝,模型檢測均比原始模型有所提升,相比原始模型檢測時間最快縮短了0.080 00 s。最終本文選用80%的通道剪枝全局比例及12個Shortcut的層剪枝層數(shù)作為YOLO v4基礎(chǔ)模型的剪枝參數(shù),在實現(xiàn)93.00%模型高精度的同時仍能維持較高的檢測速度,且極大降低了模型存儲空間。
本文基于通道剪枝和層剪枝相結(jié)合的模型壓縮方案,提出了一種基于改進YOLO v4的輕量化煙梗識別方法。在保證模型精度和檢測速度的前提下,對模型進行大幅度壓縮,簡化了模型結(jié)構(gòu),減小了占用空間。
本文使用英特爾RealSense d435i型號相機采集原始煙葉數(shù)據(jù)集100張,利用Mosaic數(shù)據(jù)增強的方法拓展數(shù)據(jù)集到200張,運用Labelimg對數(shù)據(jù)集進行標注,隨后運用YOLO v4算法對數(shù)據(jù)集進行基礎(chǔ)訓練,得到基礎(chǔ)模型后進行稀疏訓練、模型剪枝、微調(diào),最終得到優(yōu)化后的煙梗識別模型。經(jīng)實驗驗證,優(yōu)化模型的存儲空間下降了93.77%,模型精度達到93.00%,檢測速度達到47.62 幀/s。實驗結(jié)果表明,剪枝算法在保證檢測速度快、精度高的同時極大地壓縮了模型的大小,為算法模型在工業(yè)現(xiàn)場的部署提供了優(yōu)勢,有效解決了傳統(tǒng)工控機存儲空間有限的問題,適用于片煙精選中松散回溯后煙梗識別的工藝流程。