郝俊峰,李玉濤,來博文
(1.河鋼數(shù)字技術(shù)股份有限公司人工智能工作室,石家莊 050035;2.河鋼數(shù)字技術(shù)股份有限公司技術(shù)中心本部,石家莊 050035)
由于我國能源結(jié)構(gòu)中石油和天然氣的消耗遠(yuǎn)遠(yuǎn)高于其他能源,這導(dǎo)致我國長期處于“貧油少氣”的能源結(jié)構(gòu)狀態(tài)。為了滿足能源需求,我國煤化工領(lǐng)域和能源領(lǐng)域中的電石作為工業(yè)制作乙炔的關(guān)鍵原材料得到了廣泛應(yīng)用。作為世界上最大的電石生產(chǎn)國,我國的電石產(chǎn)能和產(chǎn)量均占據(jù)了世界總量的90%以上,充分體現(xiàn)了我國在電石領(lǐng)域的強(qiáng)大實力。據(jù)統(tǒng)計,2021年我國電石的產(chǎn)量高達(dá)2825 萬噸,證明了電石在我國能源經(jīng)濟(jì)中的重要地位。
電石的主要成分是碳化鈣,它與水會產(chǎn)生劇烈的化學(xué)反應(yīng),從而產(chǎn)生乙炔氣體。雖然電石在工業(yè)制造中的作用非常重要,但是我們也應(yīng)該注意到它的潛在危險性。碳化鈣的生產(chǎn)被列入了世界衛(wèi)生組織國際癌癥研究機(jī)構(gòu)公布的致癌物清單中的三類致癌物清單,這表明我們需要在電石生產(chǎn)中引入安全措施來避免危險情況的發(fā)生。同時在生產(chǎn)過程中熔化了的碳化鈣從爐底取出后冷卻,這個環(huán)節(jié)被稱作電石打樣,需要人為參與等待冷卻后破碎。冷卻時間不宜過短或過長,所以需要人員長期看守。
為了確保電石生產(chǎn)的安全和高效,我們需要引入自動化、無人化的生產(chǎn)方式。這就需要電石的目標(biāo)檢測和實例分割技術(shù)的應(yīng)用,因為它們是實現(xiàn)生產(chǎn)自動化、無人化的必要前提。實際上,電石的目標(biāo)檢測和實例分割都是比較困難的技術(shù)挑戰(zhàn),因為電石的狀態(tài)具有多種多樣的變化,比如空狀態(tài)、電石棒、電石三種狀態(tài)。其中,電石棒和電石較為相似,而且還會出現(xiàn)電石棒上有電石殘留的情況。因此,在檢測和分割中還會受到光照、爐火光、電石未冷卻時的紅光和紫光的干擾。傳統(tǒng)視覺方法難以滿足當(dāng)前需求,因此我們需要應(yīng)用先進(jìn)的人工智能和計算機(jī)視覺技術(shù)來實現(xiàn)電石的目標(biāo)檢測和分割,通過目標(biāo)檢測和實例分割技術(shù),可以實現(xiàn)對電石準(zhǔn)確快速的識別和定位,同時提高生產(chǎn)效率,降低生產(chǎn)成本,確保生產(chǎn)安全;以填補(bǔ)檢測和分割技術(shù)在電石生產(chǎn)領(lǐng)域的空白。
隨著深度學(xué)習(xí)和計算機(jī)視覺的發(fā)展,深度學(xué)習(xí)在目標(biāo)檢測和實例分割方向上已成為最優(yōu)解。在應(yīng)用于圖像算法基礎(chǔ)模型CNN 的基礎(chǔ)上發(fā)展出了很多研究分支,如區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)系列、R-CNN[1]、Fast R-CNN[2]、Faster R-CNN[3]和Mask R-CNN[4]等的兩階段算法和以YOLO 系列為代表的單階段算法,近幾年YOLO系列的迭代更新非???。
YOLO(you only look once)算法是一種深度學(xué)習(xí)算法,由Redmon等[5]于2016年提出,它可以對圖像中的物體進(jìn)行實時檢測和分類。這個算法以其快速和準(zhǔn)確的檢測能力而聞名,成為計算機(jī)視覺領(lǐng)域的一項重要技術(shù)。在過去的幾年中,YOLO 算法已經(jīng)經(jīng)歷了很多的發(fā)展和改進(jìn),YOLOv1 是第一版YOLO 算法,它是基于卷積神經(jīng)網(wǎng)絡(luò)的物體檢測方法。YOLOv1將圖像分成S×S個格子,每個格子預(yù)測B個邊界框以及每個框的置信度和類別概率。在訓(xùn)練時,YOLOv1使用均方誤差作為損失函數(shù),同時也考慮了置信度的加權(quán)。YOLOv1相比于其他算法具有較高的檢測速度,但是其檢測精度略低于一些其他算法。YOLOv2 在YOLOv1 的基礎(chǔ)上進(jìn)行了改進(jìn),提高了檢測精度和速度。YOLOv2采用了一系列的技術(shù)來提高其性能,例如利用BN(batch normalization)層加速收斂和提高準(zhǔn)確性,使用多尺度訓(xùn)練和預(yù)測來適應(yīng)不同尺度的物體,引入Anchor Boxes 來更好地適應(yīng)不同大小的物體,以及在訓(xùn)練時使用目標(biāo)形狀信息來幫助檢測物體[6]。YOLOv3 是YOLO 算法的第三版,它在YOLOv2的基礎(chǔ)上進(jìn)行了改進(jìn),進(jìn)一步提高了檢測精度和速度。YOLOv3采用了一系列的技術(shù)來提高其性能,例如使用FPN(feature pyramid networks)來提取多尺度特征,引入多個輸出層來檢測不同大小的物體,使用更高效的Darknet-53作為主干網(wǎng)絡(luò),使用上采樣來提高精度等[7]。YOLOv4 在YOLOv3 的基礎(chǔ)上進(jìn)行了改進(jìn),進(jìn)一步提高了檢測精度和速度。YOLOv4采用了一系列的技術(shù)來提高其性能,例如使用SPP(spatial pyramid pooling)結(jié)構(gòu)來提取更全面的特征信息,引入CSP(cross stage partial)結(jié)構(gòu)來提高網(wǎng)絡(luò)的表達(dá)能力,使用YOLOv3-tiny 網(wǎng)絡(luò)結(jié)構(gòu)來提高小物體的檢測精度,引入Swish 激活函數(shù)來提高準(zhǔn)確率和泛化能力,使用DropBlock 正則化來提高泛化能力等[8]。與YOLOv3 相比,YOLOv4 的檢測精度得到了進(jìn)一步提高,同時也保持了很高的檢測速度。YOLOv5是由ultralytics公司提出的YOLO的一個獨立分支,基于YOLOv4進(jìn)行改進(jìn),使用更輕量級的網(wǎng)絡(luò)結(jié)構(gòu),同時也保持較高的檢測精度和速度[9]。再到最新的YOLOv5-seg 和YOLOv8添加了實例分割的分支,實現(xiàn)了實例分割的功能,同時在性能上也有所提升。YOLO系列應(yīng)用的領(lǐng)域也非常廣泛,張慧春等[10]基于YOLOv5實現(xiàn)了對植物葉綠素含量的估測;王玲敏等[11]引入注意力機(jī)制用YOLOv5 實現(xiàn)了安全帽佩戴的檢測;尹靖涵等[12]使用YOLOv5 實現(xiàn)了霧霾天氣下交通標(biāo)志的識別。
YOLOv5 的網(wǎng)絡(luò)主要包括Backbone(主干網(wǎng)絡(luò))、Neck(特征融合)、Head(預(yù)測)這三大主要部分。Backbone 部分主要由Focus、CSPNet、SPP(空間金字塔池化)三種模塊構(gòu)成,其主要的功能是特征提取。Neck 部分為FPN+PAN 結(jié)構(gòu),通過自頂向下和自下而上的方式提取特征圖。Head 部分對Neck 傳進(jìn)來的特征圖進(jìn)行結(jié)果的預(yù)測[13-15]。其結(jié)構(gòu)如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
本次研究所使用的YOLOv5-seg 算法主要是在YOLOv5 的基礎(chǔ)上添加了一條分割網(wǎng)絡(luò),并在其基礎(chǔ)上進(jìn)行了輕量化的改進(jìn),其結(jié)構(gòu)如圖2所示。
圖2 YOLOv5-seg網(wǎng)絡(luò)結(jié)構(gòu)
通過圖1 與圖2 的對比可以發(fā)現(xiàn),在Backbone 結(jié)構(gòu)中Focus 模塊被替換為一個6 × 6 的卷積。Focus 模塊將特征圖進(jìn)行分塊切片操作,然后再將結(jié)果拼接使通道擴(kuò)充,可以在信息不丟失的情況下提高計算力。而將其替換為一個6 × 6的卷積可達(dá)到相同的效果,雖然兩者的計算量是等價的,但對于一些GPU 設(shè)備卷積的計算更易進(jìn)行。
而SPP 模塊則被改進(jìn)為SPPF[16],SPP 的作用是將任意大小的特征圖通過不同尺寸的最大池化層轉(zhuǎn)換成固定大小的特征向量,其結(jié)構(gòu)如圖3(a)所示。SPPF 的結(jié)構(gòu)如圖3(b)所示,其效果與SPP相同,但運(yùn)算時間更少。
圖3 模塊結(jié)構(gòu)
YOLOv5 中的C3模塊是基于CSPNet提取分流的思想[17],同時結(jié)合 Bottlenneck 殘差結(jié)構(gòu)的思想而設(shè)計的,其結(jié)構(gòu)如圖4(a)所示。為了進(jìn)一步輕量化,并且豐富梯度流信息,在C3 的基礎(chǔ)上結(jié)合ELAN[18]的思想設(shè)計了C2f 模塊,其結(jié)構(gòu)如圖4(b)所示。
圖4 模塊結(jié)構(gòu)
在Head 部分,增加了一條Protonet 作為分割的輸出。算法的損失函數(shù)共有四個,分別為分類損失cls_loss、邊界框損失box_loss、置信度損失obj_loss 和分割損失seg_loss。分類損失cls_loss 用于判斷模型是否能夠識別出圖像中的對象,并將其分類到正確的類別中;邊界框損失box_loss用于衡量模型預(yù)測的邊界框與真實邊界框之間的差異,這有助于確保模型能夠準(zhǔn)確地定位對象;置信度損失obj_loss 用于衡量模型預(yù)測的框(即包含對象的矩形)與真實框之間的差異[19-21];分割損失seg_loss 用于衡量模型預(yù)測的mask 與真實的mask 的差異。其中分類損失、定位損失和分割損失都是使用二元交叉熵?fù)p失函數(shù)[22],其中x為樣本,y為標(biāo)簽分?jǐn)?shù),a為預(yù)測輸出分?jǐn)?shù),n為樣本總量,函數(shù)表達(dá)式如下:
而置信度損失obj_loss則是用Generalized Intersection over Union(GIoU)[23]來進(jìn)行評估:
其中:Bgt=(xgt,ygt,wgt,hgt)表示真實的回歸框,B=(x,y,w,h)表示預(yù)測回歸框,C則為覆蓋B和Bgt,這樣在不重疊的情況下,預(yù)測框也會向目標(biāo)框回歸。
相較于兩階段視覺算法,YOLO模型具有相對輕量型的結(jié)構(gòu)和較高的效率,基于YOLOv5算法我們設(shè)計了電石檢測分割的方法,并開發(fā)了相應(yīng)的系統(tǒng)。方法實現(xiàn)部分的主要步驟如圖5所示。
圖5 電石檢測分割的主要步驟
圖6 電石情況
圖7 對比結(jié)果
由于我們只需要電石的分割輸出,而檢測算法的運(yùn)算速度明顯要高于分割算法,在訓(xùn)練集標(biāo)注方面檢測算法的標(biāo)注成本也明顯低于分割算法,所以我們先使用檢測模型將電石檢測出來,再傳入分割模型進(jìn)行分割,以達(dá)到節(jié)省算力的目的。同時針對電石棒與電石易混淆的問題,為了增加系統(tǒng)的容錯率,在檢測模型和分割模型之間添加了一個圖像的二分類模型,對電石和電石棒進(jìn)行區(qū)分。
使用的是YOLOv5-l 模型進(jìn)行目標(biāo)檢測,主要的檢測目的是區(qū)分當(dāng)前檢測區(qū)域內(nèi)是否有電石存在。根據(jù)實際場景的情況可以分為“空狀態(tài)”“電石棒”和“電石”三種。為了減少模型的誤檢情況,在實際的實時檢測中,系統(tǒng)設(shè)定連續(xù)15 次“空狀態(tài)”則判定為空,連續(xù)5 次“電石”則判定為電石。系統(tǒng)將判定為電石的區(qū)域沿檢測框裁剪出來,發(fā)送到分割模型進(jìn)行下一步操作。由于在工業(yè)場景中干擾因素較多,經(jīng)常會出現(xiàn)背景板污染、強(qiáng)光干擾、電石未冷卻等因素,影響分割后圖片的進(jìn)一步使用。所以需要提前將這些情況排除,將誤檢或者效果不佳的樣本收集起來,重新標(biāo)注并訓(xùn)練和更新模型。
分割模型使用的是YOLOv5-seg-m 模型,直接將檢測模型傳過來的電石圖片進(jìn)行分割,并將效果不佳的樣本收集起來,進(jìn)行標(biāo)注并訓(xùn)練和更新模型,此模型的更新側(cè)重于負(fù)例的更新,以便有效地排除受到干擾的情況。
為了減少參數(shù)儲存與內(nèi)存占用空間,將模型進(jìn)行參數(shù)量化操作。將32 位浮點(FP32)網(wǎng)絡(luò)參數(shù)量化到16 位浮點數(shù)(FP16)或者8 位整型(INT8),從而節(jié)省帶寬加速運(yùn)算,降低設(shè)備能耗。
而轉(zhuǎn)換數(shù)值的方法則會顯著影響預(yù)測的精度。以FP32到INT8為例,量化的映射方式主要可分為對稱量化和非對稱量化兩種[24]。
對稱量化是將FP32 參數(shù)的最大值的正負(fù)區(qū)間投影在INT8 的正負(fù)區(qū)間內(nèi)[-128,127],[-maxF32,maxF32]→[-maxq,maxq],xf為 FP32 下的參數(shù),xq為轉(zhuǎn)換在INT8 下的新參數(shù),其轉(zhuǎn)換關(guān)系如下:
非對稱量化[25]是將FP32 參數(shù)的最大值到最小值的區(qū)間投影在INT8 的區(qū)間內(nèi)[0,255],[minF32,maxF32]→[minq,maxq],xf為 FP32下的參數(shù),xq為轉(zhuǎn)換在INT8 下的新參數(shù),其轉(zhuǎn)換關(guān)系如下:
本次實驗主要是針對分割算法(YOLOv5-seg)的橫向和縱向的比較。訓(xùn)練所使用的數(shù)據(jù)集是自制的電石數(shù)據(jù)集,使用labelme 標(biāo)注樣本數(shù)為10000,樣本中有攝像頭采集的3840 × 2160 原圖,也有經(jīng)過YOLOv5 分割后的不定大小的樣本。為了后期方便部署,YOLOv5-seg 使用的權(quán)重是.onnx格式的。
實驗中常采用召回率(Recall)、精確率(Precision)、mAP等評價指標(biāo)[26]。首先表1給出二分類性能指標(biāo)TP、FP、FN、TN的定義。
表1 TP、FP、FN、TN的定義
T/F表示預(yù)測是否正確,P/N表示預(yù)測的標(biāo)簽。召回率的表達(dá)式為Recall=,精確率的表達(dá)式為Precision=。算法以均值平均精度(mean average precision,mAP)作為評價指標(biāo),PmAP的計算表達(dá)式為:
YOLOv5-seg的不同模型和不同輸入尺寸進(jìn)行對比,輸入尺寸分別為640×640和960×960;三種模型 YOLOv5-seg_l、YOLOv5-seg_m 和 YOLOv5-seg_s,推理時使用的硬件配置GPU 為1050 T,訓(xùn)練輪數(shù)為40 輪,最佳參數(shù)的輪次集中在15~25輪。其中評估的參數(shù)為Recall、Precision、mAP、Predict_t、cls_loss、box_loss、obj_loss 和 seg_loss,表2為評估參數(shù)。
表2 YOLOv5-seg不同模型和尺寸的評估參數(shù)
這些參數(shù)中參考價值最大的是mAP,可以較好地衡量出分割的效果;box_loss 和obj_loss是描述檢測框的效果的參數(shù);綜合參考mAP、損失函數(shù)、Recall、Precision 和推理時間,可以看出640 × 640 輸入的模型的函數(shù)收斂情況不如960 × 960 的收斂情況,但差距并不明顯,從mAP、Recall、Precision上來看640 × 640輸入的模型的效果明顯要好于960 × 960 輸入的模型,所以我們選擇640 × 640 輸入的模型。主要考慮到分割效果和推理時間,我們最后選擇m_640模型。
YOLOv5-seg 與 Mask R-CNN算法進(jìn)行對比,使用相同的訓(xùn)練集和驗證集進(jìn)行訓(xùn)練。硬件配置GPU 為NVIDIA T4,訓(xùn)練輪次為60輪。首先,在訓(xùn)練過程中,YOLOv5-seg 在單輪的訓(xùn)練時間要比Mask R-CNN 更短,收斂速度也更快;但從函數(shù)的收斂情況來看,Mask R-CNN 的收斂更加穩(wěn)定。從模型效果來看,二者效果基本達(dá)到一致,但在推理時間上,Mask R-CNN 所需時間接近1 s,而YOLOv5-seg只需要45 ms。
電石的檢測和分割具有重要的研究與應(yīng)用價值。但是,電石檢測和分割存在著業(yè)務(wù)場景復(fù)雜、電石與電石棒易混淆、檢測和分割精度要求高等問題。本文設(shè)計了面向?qū)嶋H業(yè)務(wù)場景的電石檢測分割的方案與方法,在實際場景數(shù)據(jù)采集、電石狀態(tài)與干擾狀態(tài)的定義、數(shù)據(jù)標(biāo)注等方面做出了重要貢獻(xiàn)。提出的基于YOLOv5-l 和YOLOv5-seg-m 網(wǎng)絡(luò)的電石檢測分割方法在檢測精度與速度上取得了較好的結(jié)果,對于電石的檢測和分割的判識基本達(dá)到了應(yīng)用的需求,且檢測和分割的速度遠(yuǎn)超同類型的算法。之后將針對排除光照影響、提高分割精度和后續(xù)評判電石質(zhì)量模型的方向繼續(xù)深入研究。