葉劍青,汪義賀,母久狀,吳冰,朱峰
(國(guó)能神皖池州發(fā)電有限責(zé)任公司,安徽 池州 247100)
電廠運(yùn)行過(guò)程中,管道的正常輸送和日常維護(hù)關(guān)乎發(fā)電過(guò)程是否能夠順利進(jìn)行、電力系統(tǒng)是否能夠穩(wěn)定運(yùn)行。在日常生產(chǎn)過(guò)程中,蒸汽管網(wǎng)中一般為高溫高壓的蒸汽流體,發(fā)生泄漏時(shí),會(huì)影響蒸汽管道的正常運(yùn)行,同時(shí),泄露一般依靠運(yùn)營(yíng)人員日常巡檢發(fā)現(xiàn),存在安全隱患,效率不高。因此通過(guò)技術(shù)手段準(zhǔn)確的識(shí)別出是否發(fā)生蒸汽泄漏情況具有重要意義。
針對(duì)此問(wèn)題,眾多研究人員進(jìn)行了大量相關(guān)的研究。早期氣體泄漏檢測(cè)主要依靠經(jīng)驗(yàn)人工觀測(cè),之后發(fā)展為通過(guò)空氣或者其他氣體的氣密性檢測(cè)方法,依靠傳感器和探測(cè)器等專門的檢測(cè)裝置,通過(guò)氣體參數(shù)變化判斷泄漏情況,Rivers等[1]介紹了一種在低溫和機(jī)械載荷下通過(guò)復(fù)雜幾何結(jié)構(gòu)測(cè)量泄漏的方法,該方法已被開發(fā)、校準(zhǔn)并用于通過(guò)X-33 液氫罐結(jié)構(gòu)測(cè)量氦和氫泄漏,馬胤剛等[2]將溫度傳感器與紅外熱成像儀安裝于蒸汽管路當(dāng)中,形成完整的檢測(cè)系統(tǒng),實(shí)現(xiàn)對(duì)蒸汽泄漏的定位,但溫度傳感器與紅外成像儀的安裝位置不當(dāng)會(huì)影響真實(shí)管道蒸汽溫度測(cè)量和泄漏氣體輪廓的情況判斷。隨著檢測(cè)算法的發(fā)展,龔其春等[3]以超聲波原理為基礎(chǔ),通過(guò)分析小孔氣體泄漏情況,通過(guò)氣體動(dòng)力學(xué)分析,提出了一種微量泄露檢測(cè)方法,實(shí)現(xiàn)了對(duì)氣體微泄漏量的估算,王濤等[4]提出了基于帶有溫差因子的模糊核聚類分割算法,對(duì)紅外熱像圖進(jìn)行圖像增強(qiáng)和加權(quán)差分處理,提高了對(duì)紅外熱像圖噪聲的抗干擾能力,在電廠蒸汽泄漏檢測(cè)研究中,李智華等[5]同樣利用紅外測(cè)溫傳感器識(shí)別泄漏點(diǎn)附近的溫度場(chǎng)分布,然后根據(jù)溫度場(chǎng)對(duì)應(yīng)的紅外色譜圖進(jìn)行分析,最終確定是否存在泄漏并找到泄漏點(diǎn)。隨著深度學(xué)習(xí)的研究和發(fā)展,基于圖像檢測(cè)的研究取得了長(zhǎng)足的進(jìn)展,2014年,Ross Girshick 等[6]提出R-CNN 模型,首次將深度學(xué)習(xí)應(yīng)用于目標(biāo)檢測(cè),并將在Pascal VOC 2012 數(shù)據(jù)集上的測(cè)試結(jié)果中的重要指標(biāo)均值平均精度由23.3%提升到53.3%,為基于深度學(xué)習(xí)的目標(biāo)檢測(cè)任務(wù)快速發(fā)展奠定了基礎(chǔ)。在2016年,Joseph Redmon 等[7]提出YOLO 算法,舍棄了候選框提取階段,簡(jiǎn)化了網(wǎng)絡(luò)結(jié)構(gòu),提高了目標(biāo)檢測(cè)速度,基于此,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法正式開始滿足實(shí)時(shí)檢測(cè)的要求,目前YOLO 系列算法得到了不斷地改進(jìn)和提高,在目標(biāo)檢測(cè)領(lǐng)域擁有優(yōu)秀的表現(xiàn)。
但是目前應(yīng)用深度學(xué)習(xí)的目標(biāo)檢測(cè)方法對(duì)電廠蒸汽泄漏檢測(cè)進(jìn)行研究的實(shí)例較少,同時(shí)蒸汽泄漏時(shí)的特征性不強(qiáng),排量不定,易受光線影響,本文依據(jù)電廠蒸汽泄漏的實(shí)時(shí)檢測(cè)要求和現(xiàn)場(chǎng)檢測(cè)需求,利用高精度,高速度YOLOv5s 目標(biāo)檢測(cè)算法,針對(duì)現(xiàn)有電廠發(fā)生的蒸汽泄漏情況,在不同光線,不同排量情況進(jìn)行了檢測(cè)研究,并從最終得到模型訓(xùn)練結(jié)果,實(shí)際測(cè)試并評(píng)估檢測(cè)的效果。
目標(biāo)檢測(cè)算法目前主要分為雙步檢測(cè)和單步檢測(cè)兩類,雙步檢測(cè)包括識(shí)別與定位兩部分,有較高的準(zhǔn)確率但運(yùn)算速度較慢,運(yùn)算量較大;單步檢測(cè)是將識(shí)別與定位融合至同一網(wǎng)絡(luò),輸入圖像可直接得到目標(biāo)的類別與位置,精度損失不會(huì)太多且能夠滿足實(shí)時(shí)性要求。YOLO 系列算法屬于單步目標(biāo)檢測(cè)算法,具有良好的檢測(cè)精度,運(yùn)算速度快,且對(duì)硬件要求不高,目前已迭代至v5 版本。YOLOv5 算法模型主要包括4 類不同深度和寬度的網(wǎng)絡(luò)結(jié)構(gòu),而綜合目前的需求,選用深度最小,模型文件最小的YOLOv5s 模型進(jìn)行蒸汽泄漏檢測(cè)研究,主要網(wǎng)絡(luò)結(jié)構(gòu)由四部分組成,依次為輸入端,Backbone,Neck 和Head,如圖1 所示。
圖1 YOLOv5s 網(wǎng)絡(luò)模型結(jié)構(gòu)
1.1.1 輸入端
(1)自適應(yīng)錨框計(jì)算。錨框(Anchor)是由網(wǎng)絡(luò)設(shè)定的,用于框選目標(biāo)的初始框設(shè)置,在YOLO 系列算法中,針對(duì)不同的數(shù)據(jù)樣本,會(huì)設(shè)置不同大小的錨框,當(dāng)啟動(dòng)訓(xùn)練后,根據(jù)初始設(shè)定的錨框輸出預(yù)測(cè)框,將預(yù)測(cè)框與標(biāo)定的真實(shí)框(Ground Truth)進(jìn)行對(duì)比,比較差異后反向傳播,進(jìn)而更新網(wǎng)絡(luò)的參數(shù),達(dá)到訓(xùn)練的目的。
因而初始錨框的設(shè)定具有重要的作用,會(huì)影響到預(yù)測(cè)框的的生成,而YOLOv5 前的YOLO 系列算法,都將該部分獨(dú)立在整體網(wǎng)絡(luò)代碼外,YOLOv5 算法將計(jì)算初始錨框整合到整體網(wǎng)絡(luò)程序中,在正式訓(xùn)練時(shí),算法能夠根據(jù)不同的數(shù)據(jù)樣本輸入,計(jì)算最佳的初始錨框,如不需要設(shè)置自適應(yīng)錨框時(shí),可將代碼中的“—noautoanchoer”參數(shù)設(shè)置為False。
(2)自適應(yīng)圖片縮放。目標(biāo)檢測(cè)算法在輸入端對(duì)于不同長(zhǎng)寬的圖片,一般統(tǒng)一處理為同一種標(biāo)準(zhǔn)尺寸,再進(jìn)行后續(xù)檢測(cè)網(wǎng)絡(luò)的訓(xùn)練任務(wù),實(shí)際情況中對(duì)于長(zhǎng)寬比不同的圖片,一般進(jìn)行縮放填充黑邊的方式得到輸入圖像。黑邊具體實(shí)現(xiàn)如圖2 所示,首先根據(jù)原始輸入圖像計(jì)算縮放比例,如圖1中輸入圖像像素為3 000×4 000 時(shí),需要最終得到的輸入為640×640,則短邊與長(zhǎng)邊的縮放比例分別為0.21 和0.16,選擇最小的縮放比例0.16;將原圖像按照縮放比例縮放后的應(yīng)得到480×640 的縮放圖像;最后將短邊兩側(cè)對(duì)稱補(bǔ)充黑邊得到640×640 的網(wǎng)絡(luò)圖像輸入。
圖2 自適應(yīng)圖像縮放原理
YOLOv5 中填充的是灰色,在網(wǎng)絡(luò)訓(xùn)練過(guò)程中同樣是按照上述方法進(jìn)行圖像輸入的縮放操作。但如果兩側(cè)的灰邊填充信息較多,則存在信息冗余,影響推理速度。在YOLOv5s 算法網(wǎng)絡(luò)中,默認(rèn)的圖片尺寸(image size)輸入為640×640,在測(cè)試和推理過(guò)程中,對(duì)于常用的處理方法做了進(jìn)一步處理和優(yōu)化,采用自適應(yīng)算法減少了輸入圖像的灰邊填充,明顯提高了檢測(cè)推理速度。
1.1.2 Backbone
(1)Focus 結(jié)構(gòu)。YOLOv5 不同于之前的YOLO 系列算法,首次加入了Focus 結(jié)構(gòu),而Focus 結(jié)構(gòu)中最關(guān)鍵的是切片的操作,例如會(huì)將4×4×3 的圖像切片為2×2×12的特征圖,如圖3 所示。在YOLOv5 算法中,若輸入為640×640×3 的圖像,采用Focus 結(jié)構(gòu),經(jīng)過(guò)一系列的切片操作,得到320×320×12 的特征圖,最后經(jīng)過(guò)卷積核為32的卷積層將會(huì)得到320×320×32 的特征圖[8]。
圖3 切片操作
(2)CSP 結(jié)構(gòu)。CSP 結(jié)構(gòu)在之前的YOLO 系列算法網(wǎng)絡(luò)已經(jīng)應(yīng)用,設(shè)計(jì)思路源于CSPNet。但與之前不同的是,YOLOv5s 算法網(wǎng)絡(luò)中應(yīng)用了兩處CSP 結(jié)構(gòu),一處CSP1_X結(jié)構(gòu)應(yīng)用于Backbone 中,另一處CSP2_X 結(jié)構(gòu)應(yīng)用于Neck中。其中的X 表示有幾個(gè)殘差組件,以此使得算法輕量化,在減少計(jì)算量的同時(shí)又能夠提高模型的學(xué)習(xí)能力[9]。
1.1.3 Neck
(1)Focus 結(jié)構(gòu)。YOLOv5 算法網(wǎng)絡(luò)在最初出現(xiàn)時(shí),Neck 結(jié)構(gòu)只由FPN 結(jié)構(gòu)組成,目前的Neck 結(jié)構(gòu)與YOLOv4中一樣,都采用FPN+PAN 的特征金字塔結(jié)構(gòu)。FPN 結(jié)構(gòu)是將高層特征與低層特征進(jìn)行特征融合的結(jié)構(gòu),通過(guò)將高層特征上采樣的方式自上而下的做融合出進(jìn)行預(yù)測(cè)的特征圖,增強(qiáng)了語(yǔ)義信息,而PAN 結(jié)構(gòu)金字塔是對(duì)FPN 的補(bǔ)充,將自下而上的將低層的強(qiáng)定位特征傳遞上去,如圖4 所示。而上述提到的CSP 結(jié)構(gòu),YOLOv5s 的Neck 中有所使用,加強(qiáng)了了網(wǎng)絡(luò)特征融合的能力。
圖4 FPN+PAN 結(jié)構(gòu)
1.1.4 Head
(1)Bounding box 損失函數(shù)。YOLOv5 中采用其中的CIOU_Loss 做Bounding box 的損失函數(shù)。CIoU_Loss,表達(dá)式如下:
其中:α表示權(quán)重,ν表示衡量長(zhǎng)寬比的相似度,b,bgt分別表示預(yù)測(cè)框和真實(shí)框的中心坐標(biāo),兩者之間距離采用歐式距離ρ。c表示能同時(shí)包含預(yù)測(cè)框和真實(shí)框的最小包圍框的斜距[10]。
CIoU_Loss 增加了檢測(cè)真實(shí)框高度和寬度的長(zhǎng)度數(shù)值loss,能夠使預(yù)測(cè)框和真實(shí)框的中心坐標(biāo)之間的距離加速收斂,使得最終的預(yù)測(cè)框大小和位置更加接近真實(shí)框。
(2)nms 非極大值抑制。在目標(biāo)檢測(cè)算法中,對(duì)于最后可能出現(xiàn)的同一目標(biāo)出現(xiàn)多個(gè)預(yù)測(cè)框的問(wèn)題,一般通過(guò)nms 的方法進(jìn)行篩選。YOLOv4 在DIOU_Loss 的基礎(chǔ)上采用DIOU_nms 的方式,而YOLOv5 中仍然采用加權(quán)nms 的方式。在同樣的參數(shù)情況下,將nms 中IOU 修改成DIOU_nms,對(duì)于一些遮擋重疊的目標(biāo),確實(shí)會(huì)有一些改進(jìn)。
綜上,蒸汽泄漏檢測(cè)主要包括檢測(cè)網(wǎng)絡(luò)訓(xùn)練階段和檢測(cè)網(wǎng)絡(luò)推理階段,總體流程如圖5 所示,其中利用PyTorch 深度學(xué)習(xí)框架通過(guò)YOLOv5s 目標(biāo)檢測(cè)網(wǎng)絡(luò)訓(xùn)練公共數(shù)據(jù)集與自建數(shù)據(jù)集,達(dá)到能夠檢測(cè)蒸汽泄漏的能力,將訓(xùn)練好的模型轉(zhuǎn)換為ONNX 格式,獨(dú)立利用OpenCV-DNN 模塊完成對(duì)蒸汽泄漏的實(shí)時(shí)檢測(cè),具體實(shí)現(xiàn)方法在實(shí)驗(yàn)結(jié)果分析中闡釋。
圖5 蒸汽泄漏檢測(cè)流程圖
2.1.1 數(shù)據(jù)來(lái)源
關(guān)于蒸汽泄漏的圖像采集工作較難,且目前還未有蒸汽泄漏的公開數(shù)據(jù)集[11],因此通過(guò)模擬電廠蒸汽泄漏場(chǎng)景,收集了總共400 張圖片作為訓(xùn)練和驗(yàn)證數(shù)據(jù)集,采集圖像舉例如圖6 所示,分為四種場(chǎng)景,明亮無(wú)遮擋場(chǎng)景,明亮無(wú)遮擋,昏暗無(wú)遮擋和昏暗有遮擋場(chǎng)景。采用labelimg 工具進(jìn)行標(biāo)注,生成VOC 格式數(shù)據(jù)集,并轉(zhuǎn)換為能夠使用YOLOv5s算法網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)集格式。
圖6 四種模擬蒸汽泄漏場(chǎng)景圖片
2.1.2 訓(xùn)練環(huán)境
實(shí)驗(yàn)運(yùn)行于Ubunt u20.04 環(huán)境,利用PyTorch 深度學(xué)習(xí)框架[13]完成訓(xùn)練與模型轉(zhuǎn)換任務(wù),利用OpenCV-DNN 模塊完成模型部署。具體配置如表1 所示。
表1 實(shí)驗(yàn)環(huán)境配置
2.2.1 訓(xùn)練過(guò)程
本實(shí)驗(yàn)利用YOLOv5s 網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,針對(duì)自建數(shù)據(jù)集設(shè)置訓(xùn)練集與驗(yàn)證集比例為9:1,預(yù)訓(xùn)練模型為Yolov5s.pt,采用不同的輸入大小和Batch Size 進(jìn)行實(shí)驗(yàn)[14],具體實(shí)驗(yàn)參數(shù)設(shè)置如表2 所示。
表2 訓(xùn)練參數(shù)配置
2.2.2 訓(xùn)練結(jié)果與測(cè)試
4 種訓(xùn)練結(jié)果如圖7 所示,訓(xùn)練實(shí)驗(yàn)結(jié)果主要由三項(xiàng)指標(biāo)衡量,包括準(zhǔn)確率,召回率和平均精度均值[15],即Precision,Recall 和mAP(mean average precision)。準(zhǔn)確率表示預(yù)測(cè)為正的樣本中有多少是真正的正樣本,即預(yù)測(cè)結(jié)果中真正的正例的比例,召回率表示樣本中的正例有多少被預(yù)測(cè)正確,即所有正例中被正確預(yù)測(cè)出來(lái)的比例,mAP 為學(xué)習(xí)的所有類別精度均值的平均值。mAP@0.5 表示將交并比IOU 設(shè)為0.5 時(shí),計(jì)算每一類的所有圖像數(shù)據(jù)集的AP,然后所有類別求平均的值。準(zhǔn)確率與召回率的公式依次如式(2)和式(3)所示。
圖7 不同輸入訓(xùn)練結(jié)果
式中:TP 表示目標(biāo)為正例,檢測(cè)結(jié)果為Positive;FP表示目標(biāo)為負(fù)例,檢測(cè)結(jié)果為Positive;FN 表示目標(biāo)為正例,檢測(cè)結(jié)果為Negative。
通過(guò)對(duì)比不同的輸入訓(xùn)練結(jié)果[16]可以發(fā)現(xiàn),同樣為訓(xùn)練50 個(gè)epoch 情況下,各項(xiàng)指標(biāo)都在20 輪左右趨于平穩(wěn)或增長(zhǎng)緩慢,四種情況下模型都有不錯(cuò)的Precision,接近于1,其中640×640 輸入精度稍差;輸入為224×224 的recall 值最高為0.99,其他三種輸入的recall 值為0.86 ~0.89 之間;160×160,224×224,320×320 訓(xùn)練輸入的mAP 值均能達(dá)到0.98,640×640 的輸入訓(xùn)練mAP 值稍差。綜上,輸入為224×224 的訓(xùn)練表現(xiàn)最佳。
通過(guò)YOLO v5s 算法模型訓(xùn)練出的模型文件,轉(zhuǎn)換為通用的模型部署文件ONNX 格式,脫離PyTorch 環(huán)境庫(kù),只需要OpenCV 庫(kù)[17]即可完成蒸汽泄漏檢測(cè)。將上述4 種輸入訓(xùn)練出的網(wǎng)絡(luò)模型,通過(guò)YOLOv5 算法中的export 文件,轉(zhuǎn)換為ONNX 格式模型文件,通過(guò)編寫使用OpenCV-DNN模塊,實(shí)現(xiàn)對(duì)蒸汽泄漏視頻流的檢測(cè),其中通過(guò)綜合比較,輸入圖像尺寸為224×224 的ONNX 模型文件具有良好的檢測(cè)精度,虛警和漏警情況較少,同時(shí)具有較快的處理速度,F(xiàn)PS 在實(shí)驗(yàn)設(shè)備CPU 上能夠達(dá)到約43。
運(yùn)用YOLOv5s 算法網(wǎng)絡(luò)模型,通過(guò)自建蒸汽泄漏模擬數(shù)據(jù)集,對(duì)蒸汽圖像進(jìn)行裁剪,標(biāo)注等處理過(guò)程,建立訓(xùn)練集與驗(yàn)證集,運(yùn)用預(yù)訓(xùn)練模型進(jìn)行模型訓(xùn)練,通過(guò)調(diào)整不同的圖像輸入大小,對(duì)比網(wǎng)絡(luò)訓(xùn)練結(jié)果指標(biāo),獲得較好的實(shí)驗(yàn)檢測(cè)與實(shí)驗(yàn)?zāi)P?,通過(guò)將訓(xùn)練模型轉(zhuǎn)換為通用的ONNX模型,只運(yùn)用OpenCV-DNN 模塊,完成對(duì)現(xiàn)階段電廠蒸汽泄漏問(wèn)題的檢測(cè)任務(wù),模型具有較好的檢測(cè)效果,同時(shí)滿足了實(shí)時(shí)檢測(cè)的要求。
圖8 檢測(cè)結(jié)果