胡繼新,何子峰,譚學(xué)靖,張榮達(dá),鄭亞鋒
(1.國家電投集團(tuán)東方新能源股份有限公司熱力分公司,河北 石家莊 050000;2.國家電投集團(tuán)河北電力有限公司,河北 石家莊 050000;3.國核電力規(guī)劃設(shè)計研究院有限公司,北京 100000)
現(xiàn)如今,為提高城市土地利用率和保證生產(chǎn)生活安全,天然氣管道、電纜線路、熱網(wǎng)管道等多深埋于地下。地下環(huán)境惡劣,管網(wǎng)表面在受到內(nèi)外作用影響時會出現(xiàn)破損,對地下管網(wǎng)的定期檢修是安全生產(chǎn)生活的保障。工人下井巡檢存在一定的安全隱患且經(jīng)濟(jì)成本較高,地下巡檢機(jī)器人的出現(xiàn)很好地解決了這一問題。利用機(jī)器人搭載的攝像頭進(jìn)行破損檢測不僅經(jīng)濟(jì)成本低,在檢測的效率和準(zhǔn)確率方面都有了進(jìn)一步的提升。本文主要研究基于YOLOv5 的機(jī)器人巡檢地下熱網(wǎng)管道保溫層破損問題。
傳統(tǒng)的表面破損檢測往往采用常規(guī)圖像處理算法。文獻(xiàn)[1]通過構(gòu)造特殊的光源照射結(jié)構(gòu),在實驗過程中,保持物體不動,光源從不同角度照射物體,獲取表面信息,利用光度立體法建立物體三維模型,從而判斷表面是否存在破損。文獻(xiàn)[2]基于Gabor 濾波的重建圖像算法檢測破損,利用破損和圖片紋理之前存在能量差異這一特點,計算濾波處理后得到的重建圖像能量值分布情況,從而根據(jù)能量閾值就可以實現(xiàn)皮革表面破損的檢測。但本次實驗需要檢測的是位于地下的熱網(wǎng)管道上的破損,光度立體法的實驗裝置在井下無法安裝,實驗數(shù)據(jù)采集困難;機(jī)器人在井下采集圖片過程中存在抖動,圖片分辨率不夠高,根據(jù)采集的實驗數(shù)據(jù)可以看出圖片紋理不夠清楚,紋理統(tǒng)計效果差,影響檢測結(jié)果?;谝陨喜蛔?,選擇深度學(xué)習(xí)的方法進(jìn)行表面破損檢測。
基于深度學(xué)習(xí)的破損檢測方法層出不窮,針對不同物體表面的破損缺陷,不同學(xué)者根據(jù)其特征選擇不同的檢測方法。文獻(xiàn)[3]通過使用目前最先進(jìn)的YOLOv5 算法進(jìn)行木材樹結(jié)檢測,解決了傳統(tǒng)檢測方法中依賴人工選擇特征沒法滿足多種樹結(jié)類型檢測的缺陷。并將該方法與YOLOv3 SPP 和Faster R-CNN[4]進(jìn)行了比較。實驗結(jié)果表明,YOLOv5 模型對表面結(jié)缺陷的檢測效果最好。文獻(xiàn)[5]研究了基于YOLOv5 的PCB 板缺陷檢測方法,結(jié)果證明YOLOv5 算法可以檢測出在生產(chǎn)過程中由操作不當(dāng)或技術(shù)故障導(dǎo)致的PCB中的缺陷,其可信的準(zhǔn)確率為99.74%。文獻(xiàn)[6]提出將YOLOv5 用于織物缺陷檢測,解決了傳統(tǒng)人工檢測方法效率低、費時、費力、成本高的問題,該方法具有良好性能。YOLOv5 結(jié)合了YOLOv3 的SPP 和Faster R-CNN 的錨框機(jī)制。在目標(biāo)檢測過程中模型尺寸小,訓(xùn)練速度快,權(quán)重文件小,檢測速度大。因此,本文選擇YOLOv5 進(jìn)行保溫層表面破損的識別和定位。
YOLO(You Only Look Once)系列算法將特征圖劃分為n×n的網(wǎng)格,每個網(wǎng)格各自負(fù)責(zé)區(qū)域內(nèi)的目標(biāo)檢測,進(jìn)行一次預(yù)測可以同時實現(xiàn)所有網(wǎng)格內(nèi)所有目標(biāo)物體的分類和定位,輸出目標(biāo)的邊界框、定位置信度以及所有類別概率向量。
YOLOv5 將自適應(yīng)錨框機(jī)制融合到訓(xùn)練過程中,不需要單獨初始錨框值,隨著訓(xùn)練過程的進(jìn)行,可以自適應(yīng)更新最合適的錨框值,自適應(yīng)圖片尺度變化錨框有效地提高了檢測效率。根據(jù)YOLOv5s 輕量化的特點,本次破損檢測選用最小模型,只有27 MB。借助網(wǎng)絡(luò)可視化工具Netron 和YOLOv5s 的yaml 文件可以得到Y(jié)OLOv5s 的模型結(jié)構(gòu)可視化,經(jīng)過整理可以得到如圖1 所示的網(wǎng)絡(luò)模型結(jié)構(gòu)圖。
圖1 YOLOv5s 網(wǎng)絡(luò)模型結(jié)構(gòu)
在YOLOv5s 結(jié)構(gòu)中,Backbone 結(jié)構(gòu)中的Focus模塊提高了運算速度。YOLOv5s 為減少卷積層的計算量,使用Focus 模塊改變數(shù)據(jù)尺寸,將圖片的寬度和高度信息整合到通道空間中。該模塊進(jìn)行切片操作,將輸入數(shù)據(jù)切分為4 塊,對每塊數(shù)據(jù)進(jìn)行了2 倍下采樣,之后在通道維度上拼接,此時得到的數(shù)據(jù)寬高變?yōu)樵瓉淼囊话?,通道?shù)變?yōu)樵瓉淼? 倍,即[b,c,h,w]變?yōu)閇b,c*4,h/2,w/2]。
在CSP(Cross Stage Partial Network,跨階段局部網(wǎng)絡(luò))中,YOLOv5s 采用了跨鄰域網(wǎng)格的匹配策略,從而得到更多的正樣本,加速收斂。池化過程通過SPP(Spatial Pyramid Pooling)空間金字塔進(jìn)行池化,進(jìn)行了填充,保證特征圖尺寸不變。SPP 可以增大感受野,提取重要特征,在不降低網(wǎng)絡(luò)操作速度的同時進(jìn)行最大值池化。
Neck 結(jié)構(gòu)部分在處理過程中存在不同尺寸的特征圖,F(xiàn)PN(Feature Pyramid Network)在進(jìn)行多尺度融合過程中PANet(Path-Aggregation Network,路徑聚合網(wǎng)絡(luò))增加了一個Bottom-up 路徑,將精細(xì)特征圖的信息直接傳遞到小尺度特征圖,再進(jìn)行相同尺度特征的拼接和融合處理,解決了特征融合過程中信息傳輸流失的問題。
在基于深度學(xué)習(xí)的目標(biāo)檢測中,訓(xùn)練樣本集的豐富程度嚴(yán)重影響最終的檢測結(jié)果,而對于熱網(wǎng)管道表面破損數(shù)據(jù)集,一方面網(wǎng)絡(luò)上難以找到和現(xiàn)場類似的破損類型,已有數(shù)據(jù)集和實際相差較大,因此沒辦法利用現(xiàn)成數(shù)據(jù);另一方面,地下熱網(wǎng)管道在運行過程中溫度過高,工作時無法下到井下采集數(shù)據(jù)集,在停機(jī)時采集到的僅有的現(xiàn)場照片中,破損較少且類型不夠豐富。人為制作破損數(shù)據(jù)集就是本次破損檢測的一個重點內(nèi)容。本文選擇了2 種方法進(jìn)行數(shù)據(jù)集獲取。
方法一:直接將玻璃纖維布劃成各種類型大小不一致的破洞,手機(jī)拍攝破損后降低圖片分辨率,在此基礎(chǔ)上在破損周圍撒上一些水泥和石子,模擬上方落石將管道砸破,在此獲取新的數(shù)據(jù)集。數(shù)據(jù)集如圖2 所示。
圖2 手機(jī)采集數(shù)據(jù)集
方法二:在實驗過程中,根據(jù)方法一得到的數(shù)據(jù)集不符合現(xiàn)場利用機(jī)器人搭載攝像頭所獲取的圖片的情況,沒有模擬到管道弧度對拍攝破損的影響,還原度不高。我們根據(jù)現(xiàn)場管道的大小和裝置特點,搭建如圖3 所示的實驗裝置。管道表面采用玻璃纖維布模擬石棉保溫層,人為制造各類破損。場景搭建完畢后,真實模擬機(jī)器人下井采集數(shù)據(jù)的情況,機(jī)器人搭載攝像頭采集1 000 張樣本集。如圖4 所示為數(shù)據(jù)集樣本,本次實驗的數(shù)據(jù)集由機(jī)器人搭載攝像頭采集到的、手機(jī)拍攝的、現(xiàn)場獲取的數(shù)據(jù)集3 部分組成。
圖3 模擬管道實驗場景
圖4 數(shù)據(jù)集樣本
數(shù)據(jù)集準(zhǔn)備完成后,還需要將破損數(shù)據(jù)集制作為標(biāo)準(zhǔn)的COCO 數(shù)據(jù)集。首先新建一個文件夾Label 和數(shù)據(jù)集Data 文件夾同級,打開LabelImg 軟件,使用Open 命令導(dǎo)入Data 文件、Open Dir 命令導(dǎo)入Label文件夾。手動劃定破損區(qū)域并打上標(biāo)簽,標(biāo)簽記為“crack”。標(biāo)注圖片后會生成一個.xml 文件,自動存入到 Label 文件夾中。 完成標(biāo)記后依次運行01voc2yolo4.py、02voc2yolov5.py、03get_pic_labels.py文件,COCO 數(shù)據(jù)集文件夾結(jié)構(gòu)滿足YOLOv5s 的格式要求。
YOLOv5s 的數(shù)據(jù)讀取的代碼在unitls 文件夾下的dataset.py 文件。通過定義函數(shù)(Dataset)類來實現(xiàn)數(shù)據(jù)讀取。在數(shù)據(jù)讀入到網(wǎng)絡(luò)中,load_mosaic 函數(shù)進(jìn)行預(yù)處理——數(shù)據(jù)擴(kuò)充(Mosaic)。將4 張圖片拼接在一起,縮小目標(biāo),以提高小樣本的檢測率。
在以上工作準(zhǔn)備完畢后,將數(shù)據(jù)集放到Y(jié)OLOv5文件下,訓(xùn)練過程包括以下步驟:①修改data 文件夾下的yaml 文件。將coco.yaml 文件夾的路徑、類別數(shù)、類別名稱都改為本次實驗內(nèi)容。②修改train.py 文件。權(quán)重文件改為yolov5s.pt,模型文件改為yolov5s.yaml,路徑文件改為coco.yaml。③點擊RUN 命令進(jìn)行訓(xùn)練。
在訓(xùn)練過程中,會進(jìn)行學(xué)習(xí)率的預(yù)熱。因為開始訓(xùn)練過程中沒有最匹配的模型權(quán)重,一般是隨機(jī)初始化的,所以為了避免學(xué)習(xí)率過大而導(dǎo)致模型震蕩,該網(wǎng)絡(luò)在訓(xùn)練過程中選擇在開始的幾個輪次預(yù)熱學(xué)習(xí)率的訓(xùn)練方式,待模型相對穩(wěn)定后又恢復(fù)預(yù)先設(shè)置好的學(xué)習(xí)率,從而加快模型收斂速度,最終的訓(xùn)練效果更佳。
訓(xùn)練后得到的權(quán)重文件保存在“run/train/weights”路徑下,將測試圖片或視頻放入到“data/images”路徑。修改detect.py 文件中的輸入圖片路徑,權(quán)重文件改為best.pt,運行后得到如圖5 所示的驗證結(jié)果,從圖5 中可以看出,所有破損都識別到并進(jìn)行定位,置信度均在0.60 以上,檢測效果佳。
圖5 檢測結(jié)果
基于YOLOv5 的熱網(wǎng)管道表面破損在檢測效率、投入成本、檢測準(zhǔn)確度、訓(xùn)練速度、權(quán)重文件等方面都有良好的表現(xiàn),使得YOLOv5 適用于現(xiàn)場破損檢測。由于YOLO 模型的性能取決于訓(xùn)練集的大小,隨著數(shù)據(jù)集越來越豐富,檢測準(zhǔn)確度會越來越高,因此,在未來的使用中,我們會不斷豐富數(shù)據(jù)集,更好地訓(xùn)練網(wǎng)絡(luò),提升網(wǎng)絡(luò)檢測性能。