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

圖1 YOLOv5網絡結構
本次研究所使用的YOLOv5-seg 算法主要是在YOLOv5 的基礎上添加了一條分割網絡,并在其基礎上進行了輕量化的改進,其結構如圖2所示。

圖2 YOLOv5-seg網絡結構
通過圖1 與圖2 的對比可以發現,在Backbone 結構中Focus 模塊被替換為一個6 × 6 的卷積。Focus 模塊將特征圖進行分塊切片操作,然后再將結果拼接使通道擴充,可以在信息不丟失的情況下提高計算力。而將其替換為一個6 × 6的卷積可達到相同的效果,雖然兩者的計算量是等價的,但對于一些GPU 設備卷積的計算更易進行。
而SPP 模塊則被改進為SPPF[16],SPP 的作用是將任意大小的特征圖通過不同尺寸的最大池化層轉換成固定大小的特征向量,其結構如圖3(a)所示。SPPF 的結構如圖3(b)所示,其效果與SPP相同,但運算時間更少。

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

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

圖5 電石檢測分割的主要步驟

圖6 電石情況

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

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

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