郝俊峰,李玉濤,來博文
(1.河鋼數(shù)字技術(shù)股份有限公司人工智能工作室,石家莊 050035;2.河鋼數(shù)字技術(shù)股份有限公司技術(shù)中心本部,石家莊 050035)
由于我國(guó)能源結(jié)構(gòu)中石油和天然氣的消耗遠(yuǎn)遠(yuǎn)高于其他能源,這導(dǎo)致我國(guó)長(zhǎng)期處于“貧油少氣”的能源結(jié)構(gòu)狀態(tài)。為了滿足能源需求,我國(guó)煤化工領(lǐng)域和能源領(lǐng)域中的電石作為工業(yè)制作乙炔的關(guān)鍵原材料得到了廣泛應(yīng)用。作為世界上最大的電石生產(chǎn)國(guó),我國(guó)的電石產(chǎn)能和產(chǎn)量均占據(jù)了世界總量的90%以上,充分體現(xiàn)了我國(guó)在電石領(lǐng)域的強(qiáng)大實(shí)力。據(jù)統(tǒng)計(jì),2021年我國(guó)電石的產(chǎn)量高達(dá)2825 萬噸,證明了電石在我國(guó)能源經(jīng)濟(jì)中的重要地位。
電石的主要成分是碳化鈣,它與水會(huì)產(chǎn)生劇烈的化學(xué)反應(yīng),從而產(chǎn)生乙炔氣體。雖然電石在工業(yè)制造中的作用非常重要,但是我們也應(yīng)該注意到它的潛在危險(xiǎn)性。碳化鈣的生產(chǎn)被列入了世界衛(wèi)生組織國(guó)際癌癥研究機(jī)構(gòu)公布的致癌物清單中的三類致癌物清單,這表明我們需要在電石生產(chǎn)中引入安全措施來避免危險(xiǎn)情況的發(fā)生。同時(shí)在生產(chǎn)過程中熔化了的碳化鈣從爐底取出后冷卻,這個(gè)環(huán)節(jié)被稱作電石打樣,需要人為參與等待冷卻后破碎。冷卻時(shí)間不宜過短或過長(zhǎng),所以需要人員長(zhǎng)期看守。
為了確保電石生產(chǎn)的安全和高效,我們需要引入自動(dòng)化、無人化的生產(chǎn)方式。這就需要電石的目標(biāo)檢測(cè)和實(shí)例分割技術(shù)的應(yīng)用,因?yàn)樗鼈兪菍?shí)現(xiàn)生產(chǎn)自動(dòng)化、無人化的必要前提。實(shí)際上,電石的目標(biāo)檢測(cè)和實(shí)例分割都是比較困難的技術(shù)挑戰(zhàn),因?yàn)殡娛臓顟B(tài)具有多種多樣的變化,比如空狀態(tài)、電石棒、電石三種狀態(tài)。其中,電石棒和電石較為相似,而且還會(huì)出現(xiàn)電石棒上有電石殘留的情況。因此,在檢測(cè)和分割中還會(huì)受到光照、爐火光、電石未冷卻時(shí)的紅光和紫光的干擾。傳統(tǒng)視覺方法難以滿足當(dāng)前需求,因此我們需要應(yīng)用先進(jìn)的人工智能和計(jì)算機(jī)視覺技術(shù)來實(shí)現(xiàn)電石的目標(biāo)檢測(cè)和分割,通過目標(biāo)檢測(cè)和實(shí)例分割技術(shù),可以實(shí)現(xiàn)對(duì)電石準(zhǔn)確快速的識(shí)別和定位,同時(shí)提高生產(chǎn)效率,降低生產(chǎn)成本,確保生產(chǎn)安全;以填補(bǔ)檢測(cè)和分割技術(shù)在電石生產(chǎn)領(lǐng)域的空白。
隨著深度學(xué)習(xí)和計(jì)算機(jī)視覺的發(fā)展,深度學(xué)習(xí)在目標(biāo)檢測(cè)和實(shí)例分割方向上已成為最優(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年提出,它可以對(duì)圖像中的物體進(jìn)行實(shí)時(shí)檢測(cè)和分類。這個(gè)算法以其快速和準(zhǔn)確的檢測(cè)能力而聞名,成為計(jì)算機(jī)視覺領(lǐng)域的一項(xiàng)重要技術(shù)。在過去的幾年中,YOLO 算法已經(jīng)經(jīng)歷了很多的發(fā)展和改進(jìn),YOLOv1 是第一版YOLO 算法,它是基于卷積神經(jīng)網(wǎng)絡(luò)的物體檢測(cè)方法。YOLOv1將圖像分成S×S個(gè)格子,每個(gè)格子預(yù)測(cè)B個(gè)邊界框以及每個(gè)框的置信度和類別概率。在訓(xùn)練時(shí),YOLOv1使用均方誤差作為損失函數(shù),同時(shí)也考慮了置信度的加權(quán)。YOLOv1相比于其他算法具有較高的檢測(cè)速度,但是其檢測(cè)精度略低于一些其他算法。YOLOv2 在YOLOv1 的基礎(chǔ)上進(jìn)行了改進(jìn),提高了檢測(cè)精度和速度。YOLOv2采用了一系列的技術(shù)來提高其性能,例如利用BN(batch normalization)層加速收斂和提高準(zhǔn)確性,使用多尺度訓(xùn)練和預(yù)測(cè)來適應(yīng)不同尺度的物體,引入Anchor Boxes 來更好地適應(yīng)不同大小的物體,以及在訓(xùn)練時(shí)使用目標(biāo)形狀信息來幫助檢測(cè)物體[6]。YOLOv3 是YOLO 算法的第三版,它在YOLOv2的基礎(chǔ)上進(jìn)行了改進(jìn),進(jìn)一步提高了檢測(cè)精度和速度。YOLOv3采用了一系列的技術(shù)來提高其性能,例如使用FPN(feature pyramid networks)來提取多尺度特征,引入多個(gè)輸出層來檢測(cè)不同大小的物體,使用更高效的Darknet-53作為主干網(wǎng)絡(luò),使用上采樣來提高精度等[7]。YOLOv4 在YOLOv3 的基礎(chǔ)上進(jìn)行了改進(jìn),進(jìn)一步提高了檢測(cè)精度和速度。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)來提高小物體的檢測(cè)精度,引入Swish 激活函數(shù)來提高準(zhǔn)確率和泛化能力,使用DropBlock 正則化來提高泛化能力等[8]。與YOLOv3 相比,YOLOv4 的檢測(cè)精度得到了進(jìn)一步提高,同時(shí)也保持了很高的檢測(cè)速度。YOLOv5是由ultralytics公司提出的YOLO的一個(gè)獨(dú)立分支,基于YOLOv4進(jìn)行改進(jìn),使用更輕量級(jí)的網(wǎng)絡(luò)結(jié)構(gòu),同時(shí)也保持較高的檢測(cè)精度和速度[9]。再到最新的YOLOv5-seg 和YOLOv8添加了實(shí)例分割的分支,實(shí)現(xiàn)了實(shí)例分割的功能,同時(shí)在性能上也有所提升。YOLO系列應(yīng)用的領(lǐng)域也非常廣泛,張慧春等[10]基于YOLOv5實(shí)現(xiàn)了對(duì)植物葉綠素含量的估測(cè);王玲敏等[11]引入注意力機(jī)制用YOLOv5 實(shí)現(xiàn)了安全帽佩戴的檢測(cè);尹靖涵等[12]使用YOLOv5 實(shí)現(xiàn)了霧霾天氣下交通標(biāo)志的識(shí)別。
YOLOv5 的網(wǎng)絡(luò)主要包括Backbone(主干網(wǎng)絡(luò))、Neck(特征融合)、Head(預(yù)測(cè))這三大主要部分。Backbone 部分主要由Focus、CSPNet、SPP(空間金字塔池化)三種模塊構(gòu)成,其主要的功能是特征提取。Neck 部分為FPN+PAN 結(jié)構(gòu),通過自頂向下和自下而上的方式提取特征圖。Head 部分對(duì)Neck 傳進(jìn)來的特征圖進(jìn)行結(jié)果的預(yù)測(cè)[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 的對(duì)比可以發(fā)現(xiàn),在Backbone 結(jié)構(gòu)中Focus 模塊被替換為一個(gè)6 × 6 的卷積。Focus 模塊將特征圖進(jìn)行分塊切片操作,然后再將結(jié)果拼接使通道擴(kuò)充,可以在信息不丟失的情況下提高計(jì)算力。而將其替換為一個(gè)6 × 6的卷積可達(dá)到相同的效果,雖然兩者的計(jì)算量是等價(jià)的,但對(duì)于一些GPU 設(shè)備卷積的計(jì)算更易進(jìn)行。
而SPP 模塊則被改進(jìn)為SPPF[16],SPP 的作用是將任意大小的特征圖通過不同尺寸的最大池化層轉(zhuǎn)換成固定大小的特征向量,其結(jié)構(gòu)如圖3(a)所示。SPPF 的結(jié)構(gòu)如圖3(b)所示,其效果與SPP相同,但運(yùn)算時(shí)間更少。

圖3 模塊結(jié)構(gòu)
YOLOv5 中的C3模塊是基于CSPNet提取分流的思想[17],同時(shí)結(jié)合 Bottlenneck 殘差結(jié)構(gòu)的思想而設(shè)計(jì)的,其結(jié)構(gòu)如圖4(a)所示。為了進(jìn)一步輕量化,并且豐富梯度流信息,在C3 的基礎(chǔ)上結(jié)合ELAN[18]的思想設(shè)計(jì)了C2f 模塊,其結(jié)構(gòu)如圖4(b)所示。

圖4 模塊結(jié)構(gòu)
在Head 部分,增加了一條Protonet 作為分割的輸出。算法的損失函數(shù)共有四個(gè),分別為分類損失cls_loss、邊界框損失box_loss、置信度損失obj_loss 和分割損失seg_loss。分類損失cls_loss 用于判斷模型是否能夠識(shí)別出圖像中的對(duì)象,并將其分類到正確的類別中;邊界框損失box_loss用于衡量模型預(yù)測(cè)的邊界框與真實(shí)邊界框之間的差異,這有助于確保模型能夠準(zhǔn)確地定位對(duì)象;置信度損失obj_loss 用于衡量模型預(yù)測(cè)的框(即包含對(duì)象的矩形)與真實(shí)框之間的差異[19-21];分割損失seg_loss 用于衡量模型預(yù)測(cè)的mask 與真實(shí)的mask 的差異。其中分類損失、定位損失和分割損失都是使用二元交叉熵?fù)p失函數(shù)[22],其中x為樣本,y為標(biāo)簽分?jǐn)?shù),a為預(yù)測(cè)輸出分?jǐn)?shù),n為樣本總量,函數(shù)表達(dá)式如下:
而置信度損失obj_loss則是用Generalized Intersection over Union(GIoU)[23]來進(jìn)行評(píng)估:
其中:Bgt=(xgt,ygt,wgt,hgt)表示真實(shí)的回歸框,B=(x,y,w,h)表示預(yù)測(cè)回歸框,C則為覆蓋B和Bgt,這樣在不重疊的情況下,預(yù)測(cè)框也會(huì)向目標(biāo)框回歸。
相較于兩階段視覺算法,YOLO模型具有相對(duì)輕量型的結(jié)構(gòu)和較高的效率,基于YOLOv5算法我們?cè)O(shè)計(jì)了電石檢測(cè)分割的方法,并開發(fā)了相應(yīng)的系統(tǒng)。方法實(shí)現(xiàn)部分的主要步驟如圖5所示。

圖5 電石檢測(cè)分割的主要步驟

圖6 電石情況

圖7 對(duì)比結(jié)果
由于我們只需要電石的分割輸出,而檢測(cè)算法的運(yùn)算速度明顯要高于分割算法,在訓(xùn)練集標(biāo)注方面檢測(cè)算法的標(biāo)注成本也明顯低于分割算法,所以我們先使用檢測(cè)模型將電石檢測(cè)出來,再傳入分割模型進(jìn)行分割,以達(dá)到節(jié)省算力的目的。同時(shí)針對(duì)電石棒與電石易混淆的問題,為了增加系統(tǒng)的容錯(cuò)率,在檢測(cè)模型和分割模型之間添加了一個(gè)圖像的二分類模型,對(duì)電石和電石棒進(jìn)行區(qū)分。
使用的是YOLOv5-l 模型進(jìn)行目標(biāo)檢測(cè),主要的檢測(cè)目的是區(qū)分當(dāng)前檢測(cè)區(qū)域內(nèi)是否有電石存在。根據(jù)實(shí)際場(chǎng)景的情況可以分為“空狀態(tài)”“電石棒”和“電石”三種。為了減少模型的誤檢情況,在實(shí)際的實(shí)時(shí)檢測(cè)中,系統(tǒng)設(shè)定連續(xù)15 次“空狀態(tài)”則判定為空,連續(xù)5 次“電石”則判定為電石。系統(tǒng)將判定為電石的區(qū)域沿檢測(cè)框裁剪出來,發(fā)送到分割模型進(jìn)行下一步操作。由于在工業(yè)場(chǎng)景中干擾因素較多,經(jīng)常會(huì)出現(xiàn)背景板污染、強(qiáng)光干擾、電石未冷卻等因素,影響分割后圖片的進(jìn)一步使用。所以需要提前將這些情況排除,將誤檢或者效果不佳的樣本收集起來,重新標(biāo)注并訓(xùn)練和更新模型。
分割模型使用的是YOLOv5-seg-m 模型,直接將檢測(cè)模型傳過來的電石圖片進(jìn)行分割,并將效果不佳的樣本收集起來,進(jìn)行標(biāo)注并訓(xùn)練和更新模型,此模型的更新側(cè)重于負(fù)例的更新,以便有效地排除受到干擾的情況。
為了減少參數(shù)儲(chǔ)存與內(nèi)存占用空間,將模型進(jìn)行參數(shù)量化操作。將32 位浮點(diǎn)(FP32)網(wǎng)絡(luò)參數(shù)量化到16 位浮點(diǎn)數(shù)(FP16)或者8 位整型(INT8),從而節(jié)省帶寬加速運(yùn)算,降低設(shè)備能耗。
而轉(zhuǎn)換數(shù)值的方法則會(huì)顯著影響預(yù)測(cè)的精度。以FP32到INT8為例,量化的映射方式主要可分為對(duì)稱量化和非對(duì)稱量化兩種[24]。
對(duì)稱量化是將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)系如下:
非對(duì)稱量化[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)系如下:
本次實(shí)驗(yàn)主要是針對(duì)分割算法(YOLOv5-seg)的橫向和縱向的比較。訓(xùn)練所使用的數(shù)據(jù)集是自制的電石數(shù)據(jù)集,使用labelme 標(biāo)注樣本數(shù)為10000,樣本中有攝像頭采集的3840 × 2160 原圖,也有經(jīng)過YOLOv5 分割后的不定大小的樣本。為了后期方便部署,YOLOv5-seg 使用的權(quán)重是.onnx格式的。
實(shí)驗(yàn)中常采用召回率(Recall)、精確率(Precision)、mAP等評(píng)價(jià)指標(biāo)[26]。首先表1給出二分類性能指標(biāo)TP、FP、FN、TN的定義。

表1 TP、FP、FN、TN的定義
T/F表示預(yù)測(cè)是否正確,P/N表示預(yù)測(cè)的標(biāo)簽。召回率的表達(dá)式為Recall=,精確率的表達(dá)式為Precision=。算法以均值平均精度(mean average precision,mAP)作為評(píng)價(jià)指標(biāo),PmAP的計(jì)算表達(dá)式為:
YOLOv5-seg的不同模型和不同輸入尺寸進(jìn)行對(duì)比,輸入尺寸分別為640×640和960×960;三種模型 YOLOv5-seg_l、YOLOv5-seg_m 和 YOLOv5-seg_s,推理時(shí)使用的硬件配置GPU 為1050 T,訓(xùn)練輪數(shù)為40 輪,最佳參數(shù)的輪次集中在15~25輪。其中評(píng)估的參數(shù)為Recall、Precision、mAP、Predict_t、cls_loss、box_loss、obj_loss 和 seg_loss,表2為評(píng)估參數(shù)。

表2 YOLOv5-seg不同模型和尺寸的評(píng)估參數(shù)
這些參數(shù)中參考價(jià)值最大的是mAP,可以較好地衡量出分割的效果;box_loss 和obj_loss是描述檢測(cè)框的效果的參數(shù);綜合參考mAP、損失函數(shù)、Recall、Precision 和推理時(shí)間,可以看出640 × 640 輸入的模型的函數(shù)收斂情況不如960 × 960 的收斂情況,但差距并不明顯,從mAP、Recall、Precision上來看640 × 640輸入的模型的效果明顯要好于960 × 960 輸入的模型,所以我們選擇640 × 640 輸入的模型。主要考慮到分割效果和推理時(shí)間,我們最后選擇m_640模型。
YOLOv5-seg 與 Mask R-CNN算法進(jìn)行對(duì)比,使用相同的訓(xùn)練集和驗(yàn)證集進(jìn)行訓(xùn)練。硬件配置GPU 為NVIDIA T4,訓(xùn)練輪次為60輪。首先,在訓(xùn)練過程中,YOLOv5-seg 在單輪的訓(xùn)練時(shí)間要比Mask R-CNN 更短,收斂速度也更快;但從函數(shù)的收斂情況來看,Mask R-CNN 的收斂更加穩(wěn)定。從模型效果來看,二者效果基本達(dá)到一致,但在推理時(shí)間上,Mask R-CNN 所需時(shí)間接近1 s,而YOLOv5-seg只需要45 ms。
電石的檢測(cè)和分割具有重要的研究與應(yīng)用價(jià)值。但是,電石檢測(cè)和分割存在著業(yè)務(wù)場(chǎng)景復(fù)雜、電石與電石棒易混淆、檢測(cè)和分割精度要求高等問題。本文設(shè)計(jì)了面向?qū)嶋H業(yè)務(wù)場(chǎng)景的電石檢測(cè)分割的方案與方法,在實(shí)際場(chǎng)景數(shù)據(jù)采集、電石狀態(tài)與干擾狀態(tài)的定義、數(shù)據(jù)標(biāo)注等方面做出了重要貢獻(xiàn)。提出的基于YOLOv5-l 和YOLOv5-seg-m 網(wǎng)絡(luò)的電石檢測(cè)分割方法在檢測(cè)精度與速度上取得了較好的結(jié)果,對(duì)于電石的檢測(cè)和分割的判識(shí)基本達(dá)到了應(yīng)用的需求,且檢測(cè)和分割的速度遠(yuǎn)超同類型的算法。之后將針對(duì)排除光照影響、提高分割精度和后續(xù)評(píng)判電石質(zhì)量模型的方向繼續(xù)深入研究。