劉智萍 崔克彬
(華北電力大學計算機系,河北 保定 071003)
隨著中國經(jīng)濟的快速發(fā)展,機械化智能化成為白酒行業(yè)發(fā)展的大趨勢[1]。在白酒釀造的摘酒環(huán)節(jié),大部分酒廠仍然采用傳統(tǒng)的“看花摘酒”[2]??椿ㄕ浦饕Q于摘酒工人的工作經(jīng)驗,工作環(huán)境和身體狀況等因素也會對摘酒工人的判斷造成影響,這些主、客觀因素讓摘酒工人難以保持穩(wěn)定的正確的摘酒時機,極大地限制了白酒的質(zhì)量和產(chǎn)量。
余鍇鑫[3]使用圖像處理技術(shù)處理酒花圖像并提取酒花明顯區(qū)域,然后輸入改進的Mini-Inception網(wǎng)絡完成酒花自動分類。楊靜嫻等[4]結(jié)合局部二值模式LBP與灰度共生矩陣GLCM提取酒花紋理特征,通過支持向量機(SVM)得到分類結(jié)果。潘斌等[5]使用改進的VGG16卷積神經(jīng)網(wǎng)絡對高斯濾波處理后的酒花圖像進行分類,取得了較好的結(jié)果。然而,以上方法均不是端到端的解決方法,實現(xiàn)的只是各個局部的最優(yōu)解,且未達到計算機視覺中實時分類的標準。此外,也有學者[6-9]使用酒精度在線檢測儀器和氣相色譜儀等儀器檢測酒精濃度和風味成分來實現(xiàn)量質(zhì)摘酒,還有學者[10-12]使用近紅外光譜分析技術(shù)檢測酒液成分和酒精濃度,結(jié)合模型來確定酒液各段起止點進行分段摘酒。但這些方法都存在儀器成本和維護費用昂貴、不能實現(xiàn)實時檢測等問題。
目標檢測是深度學習的一個領(lǐng)域,使用深層神經(jīng)網(wǎng)絡學習圖像中目標的特征從而定位和識別目標,可用于圖像自動分類,其分為兩階段檢測器和單階段檢測器。YOLOv5是目前單階段檢測器的最優(yōu)模型SOTA(state-of-the-art),其檢測精度不低于兩階段檢測器,但其檢測速度卻遠遠超過于兩階段檢測器,模型的占用內(nèi)存也更小。研究擬提出基于深度學習的白酒酒花實時分類方法,通過針對性改進YOLOv5模型,使其更適用于酒花圖像分類,并通過試驗證明其可行性,旨在為白酒自動化摘酒提供一種新的依據(jù)。
在溫度和壓強相同的條件下,不同酒精濃度的酒液具有不同的黏度和表面張力,因此形成的酒花會有所不同[13]。如汾酒將酒花分為大清花、小清花、云花、二花(又稱水花)、油花。茅臺酒廠則分為魚眼花、堆花、滿花、碎沫花和圈花5種,并以滿花作為出廠標準[14]。酒花和酒度之間存在對應關(guān)系。文中使用的酒花圖像采集于四川宜賓某酒廠,其酒花與酒度的對應關(guān)系見表1。
YOLOv5是Ultralytics公司于2020年在GitHub上公開發(fā)布的目標檢測算法,共4個版本,分別為YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x,其只有模型的寬度和深度的權(quán)重系數(shù)不同,且依次增大,可以通過改變模型的寬度和深度的權(quán)重系數(shù)來改變模型的版本和大小[15]。綜合模型大小和檢測精度考慮,選用YOLOv5s模型作為初始模型。
表1 酒花與酒度關(guān)系
輕量型YOLOv5使用ShuffleNetV2網(wǎng)絡代替YOLOv5s的Backbone來提取輸入圖像的酒花特征,可以達到輕量YOLOv5s模型并保持較高檢測精度的目的。其中Focus模塊對輸入的酒花圖像進行切片,可以在不丟失圖像信息的情況下將特征圖的尺寸縮小至1/2,提升網(wǎng)絡的推理速度。CBAM是一個即插即用的注意力機制模塊,可以關(guān)注目標的通道和空間特征,使得網(wǎng)絡更加關(guān)注目標本身,提高檢測精度。在特征提取階段,低層的特征圖含有的語義信息較少,但目標的位置較為準確;高層的特征圖含有豐富的語義信息,但目標的位置較為模糊。因此,在Neck部分采用FPN[16]+PAN[17]的結(jié)構(gòu)實現(xiàn)酒花的特征融合和特征信息跨層交流。特征金字塔結(jié)構(gòu)FPN自頂向下,傳遞高層的語義特征,并通過上采樣UpSample擴大特征圖尺寸與相鄰特征圖拼接ConCat得到新的特征圖。FPN后使用路徑融合網(wǎng)絡PAN,將FPN中的底層特征圖降采樣和相鄰特征圖ConCat并傳遞到高層。輸出端Prediction是網(wǎng)絡的預測部份,結(jié)合設(shè)置的自適應錨框anchor對PAN部分輸出的特征圖進行特征檢測,使用非極大值抑制NMS來篩選目標框,最終生成邊界框并預測酒花類別。其具體網(wǎng)絡結(jié)構(gòu)見圖1。
在目前的輕量級網(wǎng)絡中,ShuffleNetV2[18]在速度和精度方面達到了一個很好的平衡,其綜合性能名列前茅[19]。ShuffleNetV2通過使用通道分離技術(shù)和點卷積代替組卷積,減少了模型的內(nèi)存訪問成本,提升了網(wǎng)絡的檢測速度。
圖1 輕量型YOLOv5網(wǎng)絡結(jié)構(gòu)Figure 1 Light weight YOLOv5 network structure
圖2給出了ShuffleNetV2的基本單元結(jié)構(gòu),在每個單元的開始,特征通道的輸入通過通道分離操作被分為兩個相等分支,其中一個分支做恒等映射,另一個分支通過2個1×1的普通卷積Conv和1個3×3的深度卷積DWConv,然后將兩個分支ConCat起來,使用Channel Shuffle啟用兩個分支之間的信息通信。對于空間下采樣,單元移除了通道分離,因此,輸出通道的數(shù)量是輸入通道的2倍。其具體結(jié)構(gòu)見圖3。
圖2 ShuffleNetV2基本單元結(jié)構(gòu)Figure 2 ShuffleNetV2 basic unit structure
圖3 ShuffleNetV2空間下采樣結(jié)構(gòu)Figure 3 ShuffleNetV2 Spatial down sampling structure
CBAM注意力機制[20]可以使網(wǎng)絡更加關(guān)注檢測目標,忽略周圍復雜環(huán)境對網(wǎng)絡的干擾,從而提升網(wǎng)絡的檢測精度。CBAM是一個即插即用的注意力模塊,能夠節(jié)約參數(shù)和計算力,其分為兩個獨立的部分,通道注意力模塊和空間注意力模塊,分別在通道和空間上進行Attention。對于一個特征圖,CBAM會按照先通道再空間的順序生成注意力特征圖。CBAM結(jié)構(gòu)見圖4。
圖4 CBAM注意力機制結(jié)構(gòu)Figure 4 CBAM attention mechanism structure
給定一個中間特征圖F∈RC×H×W作為輸入,依次生成通道注意力圖Mc∈RC×1×1和一個2D空間注意力圖Ms∈R1×H×W,整個過程為:
Fc=Mc(F)?F,
(1)
Fs=Ms(Fc)?Fc,
(2)
式中:
F——CBAM模塊的輸入特征圖;
Mc(F)——輸入F得到的通道注意力特征圖;
?——兩特征圖同一位置的值直接相乘;
Fc——空間注意力模塊的輸入特征圖;
Ms(Fc)——輸入Fc得到的空間注意力特征圖;
Fs——CBAM模塊的輸出特征圖。
具體流程:輸入的特征圖F(H×W×C)先通過通道注意力模塊,分別經(jīng)過最大池化和平均池化得到兩個只有通道維度的特征圖(1×1×C),然后分別送入一個共享神經(jīng)網(wǎng)絡,再經(jīng)過相加和sigmoid激活后得到通道注意力特征圖。最后,通道注意力特征圖和輸入特征圖F相乘,生成空間注意力模塊的輸入特征圖。通道注意力模塊結(jié)構(gòu)見圖5。
圖5 通道注意力模塊結(jié)構(gòu)Figure 5 Channel attention module structure
通道注意力模塊函數(shù)為:
(3)
式中:
MLP——多層感知器;
AP(F)——平均池化處理特征圖F;
MP(F)——最大池化處理特征圖F;
W1、W0——多層感知器的參數(shù);
空間注意力模塊得到輸入特征圖后,作一次基于通道的最大池化和平均池化,得到兩個H×W×1的特征圖,并進行基于通道的拼接。然后經(jīng)過7×7卷積降維為一個通道,再經(jīng)過sigmoid生成空間注意力特征圖??臻g注意力特征圖和試驗模塊的輸入特征圖作乘法,得到最終生成的特征??臻g注意力模塊結(jié)構(gòu)見圖6。
圖6 空間注意力模塊結(jié)構(gòu)Figure 6 Spatial attention module structure
其函數(shù)表達式為:
(4)
式中:
所有試驗均在Ubuntu18.04操作系統(tǒng)下進行,處理器為Intel i7 CPU,顯卡采用NVIDIA GeForce RTX 2080 Ti,11 GB顯存,使用pytorch深度學習框架,通過CUDA10.2進行運算加速。
試驗圖像數(shù)據(jù)集來源于宜賓某酒廠,其中大清花1 527張,小清花1 540張,云花1 521張,二花1 540張,共6 128張,按8∶1∶1的比例隨機劃分訓練集、驗證集和測試集。
為客觀評價模型性能,使用模型大小、參數(shù)量、計算量、檢測速率幀每秒(FPS)和平均精度均值(mAP)等作為評價指標,按式(5)計算MAP。
(5)
式中:
MAP——平均精度均值,%;
N——酒花種類數(shù);
AP,a——a類酒花的平均精度,%。
3.3.1 數(shù)據(jù)標注方式 依據(jù)“看花摘酒”原理,根據(jù)酒花形狀、大小、坐花時間等特征判斷酒花種類。文獻[2-3,13]為采集圖像中酒花明顯區(qū)域進行處理分類;但文獻[4-5]是將整張圖像處理后進行分類。設(shè)置對照組驗證試驗特征提取方式,即數(shù)據(jù)標注方式,a組使用酒花明顯區(qū)域提取特征,b組使用整個酒液面提取特征。
從每類酒花圖像中隨機挑選50張,共200張,按8∶1∶1的比例隨機劃分訓練集、驗證集和測試集。使用YOLOv5s進行訓練并測試,由于數(shù)據(jù)集較小,設(shè)置訓練輪次為1 000,batch_size為16,超參數(shù)設(shè)置見表2。
表2 試驗超參數(shù)設(shè)置
由圖7可知,a、b兩組均在訓練600次后趨于穩(wěn)定。經(jīng)測試,a組mAP為54.4%,b組mAP為77.9%,表明使用整個酒液面提取特征得到的結(jié)果更好。機器視覺能夠從細節(jié)處觀察到人眼不易觀察到的酒花特征,使用整個酒液面提取特征也可以使網(wǎng)絡學習到更多的酒花特征,因此,使用整個酒液面訓練的網(wǎng)絡的檢測精度更高。
圖7 數(shù)據(jù)標注方式試驗結(jié)果Figure 7 Experimental results of data annotation method
3.3.2 anchor的設(shè)置 對于目標檢測,anchor的設(shè)置會影響到網(wǎng)絡的最終效果。YOLOv5的默認anchor是基于coco數(shù)據(jù)集聚類得到的,不適用于文中的數(shù)據(jù)集。K-means是基于歐式距離的聚類算法,其認為兩個目標的距離越近,相似度越大。采用K-means算法對數(shù)據(jù)集標注的anchor進行聚類統(tǒng)計,根據(jù)結(jié)果將anchor重新設(shè)置為[352,171,362,173,374,183],[444,188,451,193,475,212]和[498,223,541,227,554,243],其中第1行數(shù)據(jù)是最大特征圖上的anchor,第2行數(shù)據(jù)是中間特征圖上的anchor;第3行數(shù)據(jù)是最小特征圖上的anchor。將使用新舊anchor的網(wǎng)絡進行訓練和測試,試驗結(jié)果見圖8。
由圖8可知,使用默認anchor的網(wǎng)絡mAP為87.0%,使用K-mean聚類anchor的網(wǎng)絡mAP為88.5%。使用新的anchor,不僅mAP提升了1.5%,而且網(wǎng)絡擬合得更快更穩(wěn)定。
圖8 新舊anchor網(wǎng)絡試驗結(jié)果Figure 8 Experimental results of new and old anchor networks
試驗的超參數(shù)設(shè)置與表2一致,網(wǎng)絡的訓練輪次設(shè)置為300,batch_size為32。訓練前進行3次預熱學習,其中預熱學習動量為0.8,預熱初始學習率為0.1。通過預熱學習,模型變得更加穩(wěn)定,收斂速度更快,效果更佳。
圖9為各網(wǎng)絡試驗結(jié)果,具體參數(shù)見表3。
a. 未改動的YOLOv5s網(wǎng)絡 b. 使用ShuffleNetV2替換YOLOv5s主干網(wǎng)絡后的網(wǎng)絡 c. 試驗提出的輕量型YOLOv5網(wǎng)絡
表3 消融試驗結(jié)果
由于試驗采用整個酒液面提取酒花特征,尺度較大,所以YOLOv5s的主干網(wǎng)絡更換為ShuffleNetV2后檢測精度變化不大,僅下降了0.5%。同時,主干網(wǎng)絡更換為輕量網(wǎng)絡后,發(fā)生輕微抖動,但訓練53次后達到穩(wěn)定。試驗提出的輕量型YOLOv5s,不僅比前兩者擬合得更快更穩(wěn)定,而且在檢測精度上還有所提升,mAP達到90.8%,比YOLOv5s高2.3%,比YOLOv5s+ShuffleNetV2高2.8%。此外,輕量型YOLOv5s的參數(shù)量為444 915,模型大小僅4.3 Mb,與YOLOv5s相比,模型輕量92.5%,參數(shù)量減少93.7%,計算量降低63.4%。由于網(wǎng)絡加深,輕量型的FPS有所降低,但仍有526,滿足實時檢測的要求。
在使用試驗數(shù)據(jù)集的基礎(chǔ)上,將試驗算法與文獻[3]、文獻[5]和YOLOv4進行對比。為方便比較,通過算法執(zhí)行時間比較算法的速度,通過準確率比較算法的分類性能。準確率定義為:
(6)
式中:
A——準確率,%;
N——測試樣本數(shù)量;
yi——第i個樣本的分類標簽;
當分類標簽和識別結(jié)果一致時,I(x)為1,否則為0。
由表4可知,在準確率方面,4種方法均能夠滿足工業(yè)分類要求,且以試驗模型的結(jié)果最佳,文獻[3]設(shè)計的卷積神經(jīng)網(wǎng)絡僅有13層,為4種模型中層數(shù)最少的,所以其準確率較低;在執(zhí)行時間方面,試驗模型用時最短,僅文獻[5]的12.7%,YOLOV4的24.1%,文獻[3]耗時最長,其主要原因是該算法前景區(qū)提取耗時4 200 ms,如果拍攝設(shè)備和盛酒器位置發(fā)生改變,前景區(qū)還需重新提取;在模型大小方面,試驗模型的占用內(nèi)存最少,分別比文獻[3]少91.1%,比文獻[5]少99.2%,比YOLOv4少99.2%,更有利于部署在嵌入式設(shè)備上。綜上,試驗模型具有巨大優(yōu)勢。
表4 對比試驗結(jié)果
提出了一種輕量型YOLOv5的白酒酒花實時檢測方法。結(jié)果表明,改進后的輕量型YOLOv5比原YOLOv5s模型縮小了92.5%,參數(shù)減少了93.7%,計算量降低了63.4%,平均精度均值提高了2.3%。在保持較高平均精度均值的同時,模型大小、參數(shù)量和計算量大幅降低,大大降低了模型對硬件配置的要求,滿足了在嵌入式設(shè)備部署的條件,比現(xiàn)有酒花分類方法具有更大優(yōu)勢。后續(xù)研究中可以增加訓練數(shù)據(jù)量,特別是相鄰階段的酒花圖像數(shù)量,以提升模型的檢測精度。