趙達(dá), 王亞慧, 陳林林
(北京建筑大學(xué)電氣與信息工程學(xué)院, 北京 100044)
近年來(lái),隨著中國(guó)城鎮(zhèn)化進(jìn)程快速發(fā)展,全國(guó)各類市政管道大量的被投入使用。隨著使用年限的增加,管道會(huì)產(chǎn)生各種損傷,管道的定期檢查和維護(hù)是城市平穩(wěn)運(yùn)行的重要部分。為了檢查和維護(hù)管道,顏凱凱等[1]、邢利輝等[2]、鄧蕊等[3]研究設(shè)計(jì)了一款管道探測(cè)蛇形機(jī)器人,該機(jī)器人由多個(gè)舵機(jī)正交連接構(gòu)成,通過(guò)STM32F103單片機(jī)控制,可實(shí)現(xiàn)在管道內(nèi)部行波和蜿蜒運(yùn)動(dòng)等。張成林等[4]為管道探測(cè)蛇形機(jī)器人設(shè)計(jì)了一種基于捷聯(lián)慣性導(dǎo)航的定位系統(tǒng),可以實(shí)現(xiàn)蛇形機(jī)器人在管道中的定位。同時(shí)在管道中準(zhǔn)確識(shí)別管道裂紋也是一個(gè)十分重要的環(huán)節(jié)。
Durai等[5]設(shè)計(jì)了一種搭載環(huán)形激光器的管道探測(cè)機(jī)器人,激光二極管用作光源,用于捕獲高質(zhì)量的檢測(cè)圖像。通過(guò)對(duì)采集圖像的高亮度像素?cái)?shù)量得到缺陷信息。李夷進(jìn)等[6]針對(duì)當(dāng)前管道圖像存在白霧和光斑等干擾的問(wèn)題,提出了一種管道圖像去除光斑和白霧的方法,首先根據(jù)霧氣特征,使用暗通道算法進(jìn)行先驗(yàn)去霧,其次使用多尺度Retinex色偏恢復(fù)算法修復(fù)去霧算法產(chǎn)生的色偏,最后使用改進(jìn)的二維伽馬函數(shù),實(shí)現(xiàn)對(duì)光斑的消除。趙謙等[7]針對(duì)工業(yè)管道內(nèi)壁分辨率低、適用性差等特征,提出了一種工業(yè)管道內(nèi)壁的重建方法,首先搭建了基于內(nèi)窺鏡的視頻采集平臺(tái)進(jìn)行數(shù)據(jù)實(shí)時(shí)采集,接著使用張正友標(biāo)定法進(jìn)行平面標(biāo)定計(jì)算鏡頭點(diǎn)在圖像上的位置值,采用改進(jìn)的尺度不變特征轉(zhuǎn)換算法進(jìn)行特征提取和匹配,最后使用融合隨機(jī)抽樣一致和加權(quán)融合算法消除誤差,達(dá)到管道內(nèi)壁重建目的。楊書(shū)娟等[8]為了實(shí)現(xiàn)對(duì)焊縫的快速準(zhǔn)確識(shí)別,研究了一種激光視覺(jué)引導(dǎo)的焊縫跟蹤系統(tǒng)。該系統(tǒng)使用電荷耦合器件(charge coupled device,CCD)工業(yè)相機(jī)采集焊縫圖像,之后對(duì)采集的圖像進(jìn)行預(yù)處理,再經(jīng)過(guò)特征點(diǎn)提取算法獲得特征點(diǎn)坐標(biāo),最后進(jìn)行三維重建得到三維坐標(biāo)。綜上所述,目前來(lái)說(shuō),關(guān)于管道探測(cè)缺少對(duì)視頻進(jìn)行自動(dòng)識(shí)別缺陷的方法,上述方法都是依靠人工識(shí)別裂縫再對(duì)裂縫進(jìn)行具體操作。
隨著計(jì)算機(jī)技術(shù)的深入發(fā)展,深度學(xué)習(xí)目前被大量應(yīng)用在缺陷檢測(cè)中。現(xiàn)在被廣泛應(yīng)用的算法有兩類,分別是以R-CNN系列算法[9]為代表的兩階段算法和以YOLO算法[10-11]、SSD算法[12]等為代表的一階段算法。兩者區(qū)別在于兩階段算法在結(jié)構(gòu)上比一階段算法多一個(gè)生成候選區(qū)域的步驟,然后再對(duì)其進(jìn)行識(shí)別和定位,而一階段算法直接對(duì)預(yù)測(cè)框進(jìn)行回歸和分類預(yù)測(cè)。所以兩種算法比較起來(lái),一階段算法雖然在檢測(cè)準(zhǔn)確率上稍遜于兩階段算法,但其檢測(cè)速度優(yōu)于兩階段算法。
因此,針對(duì)目前關(guān)于管道視頻自動(dòng)檢測(cè)研究不足的現(xiàn)狀,現(xiàn)設(shè)計(jì)一種基于管道蛇形機(jī)器人的管道裂縫視頻檢測(cè)系統(tǒng)。系統(tǒng)搭載了500萬(wàn)像素的攝像機(jī)以及用于輔助標(biāo)定的兩個(gè)激光發(fā)生器。使用攝像機(jī)采集管道視頻,并采用YOLOv3算法對(duì)管道視頻進(jìn)行檢測(cè),以實(shí)現(xiàn)對(duì)管道裂縫的實(shí)時(shí)準(zhǔn)確識(shí)別和定位,之后將檢測(cè)出裂縫的視頻幀輸出并結(jié)合激光標(biāo)定和邊緣檢測(cè)算法得到該幀圖像中裂縫的實(shí)際物理信息。
同時(shí)為了提高算法精度,現(xiàn)對(duì)YOLOv3 算法進(jìn)行改進(jìn),首先在使用距離交并作為K-means++算法損失函數(shù)的基礎(chǔ)上,利用K-means++算法對(duì)數(shù)據(jù)集進(jìn)行聚類分析,得到合適的先驗(yàn)框;同時(shí)也將距離交并比用作YOLOv3網(wǎng)絡(luò)的損失函數(shù),優(yōu)化和提高目標(biāo)的檢測(cè)精度。
YOLOv3網(wǎng)絡(luò)由Darknet-53網(wǎng)絡(luò)和預(yù)測(cè)網(wǎng)絡(luò)2個(gè)部分組成,在此網(wǎng)絡(luò)中第1~75層為Darknet-53結(jié)構(gòu),Darknet-53結(jié)構(gòu)由一系列的1×1和3×3的卷積以及殘差層構(gòu)成,在交替使用后再經(jīng)過(guò)步長(zhǎng)為2的下采樣,將特征圖縮小為原來(lái)的1/2,一共經(jīng)過(guò)5個(gè)下采樣最終將特征圖變?yōu)樵瓐D的1/32。76~106層為預(yù)測(cè)網(wǎng)絡(luò)層,預(yù)測(cè)網(wǎng)絡(luò)從Darknet-53網(wǎng)絡(luò)中選取三個(gè)尺度的特征圖進(jìn)行預(yù)測(cè),分別是為13×13、26×26、52×52,每個(gè)尺度之間又通過(guò)卷積的方式實(shí)現(xiàn)交互,將感受野大的信息傳遞個(gè)感受野小的尺度。YOLOv3特征提取網(wǎng)絡(luò)如圖1所示。

圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 YOLOv3 network structure
在目標(biāo)檢測(cè)過(guò)程中,使用損失函數(shù)來(lái)度量預(yù)測(cè)和真實(shí)數(shù)據(jù)的差異,損失函數(shù)的優(yōu)劣與網(wǎng)絡(luò)學(xué)習(xí)速度和模型預(yù)測(cè)效果有著重大的關(guān)系。在原始YOLOv3中,使用交并比(intersection over union, IoU)作為邊界框的損失函數(shù),反映預(yù)測(cè)檢測(cè)框與真實(shí)檢測(cè)框的檢測(cè)效果。交并比原理如圖2所示。

圖2 交并比原理Fig.2 The principle of IoU
交并比的計(jì)算公式為

(1)
式(1)中:A、B分別為真實(shí)框和預(yù)測(cè)框,其中0≤IoU≤1。
在YOLOv3中,交并比損失函數(shù)定義為
LIoU=1-IoU
(2)
然而,一旦真實(shí)框和預(yù)測(cè)框不相交的情況下,IoU=0,此時(shí)損失函數(shù)無(wú)法表現(xiàn)預(yù)測(cè)框和真實(shí)框的實(shí)際距離,優(yōu)化無(wú)法繼續(xù)進(jìn)行,如圖3(a)所示。此外,當(dāng)兩個(gè)預(yù)測(cè)框大小相同且IoU相同的情況下,損失函數(shù)同樣無(wú)法區(qū)分兩種情況,如圖3(b)所示。
基于上述情況,提出使用距離交并比(distance intersection over union, DIoU)[13]作為邊界框的損失函數(shù)。距離交并比原理如圖4所示。
距離交并比計(jì)算公式為

(3)
式(3)中:a、b分別為預(yù)測(cè)框和真實(shí)框的幾何中心點(diǎn);ρ為計(jì)算兩個(gè)中心點(diǎn)的歐氏距離;c為能夠同時(shí)覆蓋預(yù)測(cè)框和真實(shí)框的最小矩形的對(duì)角線距離。由上述內(nèi)容,可以得出-1 距離交并比損失函數(shù)定義為 LDIoU=1-DIoU (4) 圖3 交并比的不足Fig.3 Deficiencies of IoU 圖4 距離交并比原理Fig.4 The principle of DIoU 式(4)中:DIoU取值范圍為(-1,1],當(dāng)預(yù)測(cè)框和真實(shí)框重合時(shí),DIoU=1;當(dāng)兩框不相交時(shí),DIoU取值范圍為(-1,0),且在兩框遠(yuǎn)離的情況下,DIoU逐漸趨向-1。由此即使兩框不相交時(shí)認(rèn)可繼續(xù)優(yōu)化。同時(shí),以DIoU作為損失函數(shù)相較于IoU作為損失函數(shù),考慮到中心點(diǎn)的距離,其收斂速度更快。 YOLOv3將位置損失、置信度損失和類別損失融合在一個(gè)損失函數(shù)中,所改變的是位置損失函數(shù)。改進(jìn)后YOLOv3損失函數(shù)分別為 (5) (6) (7) Loss=Lbox+Lobj+Lcls (8) Loss=Lbox+Lobj (9) YOLOv3在每個(gè)尺度的特征圖中都與先設(shè)置了3個(gè)不同尺度的先驗(yàn)框,并通過(guò)對(duì)先驗(yàn)框的偏移實(shí)現(xiàn)對(duì)目標(biāo)的預(yù)測(cè),先驗(yàn)框的尺寸對(duì)檢測(cè)精度有著重大的影響。原始的YOLOv3使用K-means算法聚類得到先驗(yàn)框。算法流程如下:①確定要得到的先驗(yàn)框數(shù)量K;②從數(shù)據(jù)集中隨機(jī)選擇K個(gè)數(shù)據(jù)點(diǎn)作為初始聚類中心;③針對(duì)數(shù)據(jù)集中每個(gè)樣本點(diǎn),計(jì)算它們到各個(gè)聚類中心點(diǎn)的距離,到哪個(gè)聚類中心點(diǎn)的距離最小,就將其劃分到對(duì)應(yīng)聚類中心的類簇中(YOLOv3中使用IoU作為距離的判斷標(biāo)準(zhǔn),d=1-IoU);④針對(duì)每個(gè)類別,重新計(jì)算該類別的聚類中心;⑤重復(fù)流程③和流程④,直到聚類中心的位置不再變化。 傳統(tǒng)K-means 算法初始點(diǎn)的選取隨機(jī)性較大,影響聚類精度,本文使用K-means++算法[14]代替原來(lái)的K-means算法,對(duì)裂縫數(shù)據(jù)集的標(biāo)記框進(jìn)行聚類,得到更好的先驗(yàn)框大小。具體流程如下:①確定要得到的先驗(yàn)框數(shù)量K;②隨機(jī)選取數(shù)據(jù)集中的1個(gè)數(shù)據(jù)作為初始聚類中心;③針對(duì)數(shù)據(jù)集中每個(gè)樣本,計(jì)算它們到聚類中心的最短距離D(x)=1-DIoU,計(jì)算每個(gè)樣本被選為下一聚類中心的概率,通過(guò)輪盤(pán)法選擇出下一個(gè)聚類中心; ④重復(fù)步驟③,直到選擇出K個(gè)聚類中心;⑤之后的步驟和K-means算法的步驟相同。 最終經(jīng)過(guò)K-means++算法得到的先驗(yàn)框?yàn)閇39,76],[216,34],[47,356],[391,68],[165,165],[74,396],[408,121],[127,411],[390,380]。 使用平均精確率(average precision, AP)對(duì)裂縫檢測(cè)模型進(jìn)行評(píng)價(jià),AP與召回率(recall)和精確度(precision)有關(guān)。計(jì)算公式為 (10) (11) (12) 式中:TP為正確劃分成正樣本的數(shù)量;FP為錯(cuò)誤劃分成正樣本的數(shù)量;FN為錯(cuò)誤劃分為負(fù)樣本的數(shù)量;P(r)為根據(jù)召回率和準(zhǔn)確率繪制的曲線;R為召回率。 為了給予工作人員具體的裂縫信息,需要將YOLOv3識(shí)別到的裂縫圖像輸出并加以處理得到裂縫的實(shí)際物理信息。本文所研究的系統(tǒng)搭載在本課題組所設(shè)計(jì)的一款蛇形機(jī)器人上,考慮到蛇形機(jī)器人的整體設(shè)計(jì)的情況,系統(tǒng)在硬件需求方面主要是一對(duì)激光發(fā)射器以及500萬(wàn)像素相機(jī)。將激光發(fā)射器安置在蛇形機(jī)器人的頭部左右兩側(cè),并使得發(fā)出的左右兩條光線保持平行,兩者間距為20 mm。這樣,在安裝在機(jī)器人頭部的相機(jī)捕獲圖像時(shí),激光就會(huì)在圖片上形成兩個(gè)亮點(diǎn)。在已知兩個(gè)激光發(fā)射器之間的實(shí)際距離的情況下,通過(guò)圖像處理技術(shù)計(jì)算出兩個(gè)亮點(diǎn)之間的像素?cái)?shù),最終便可以計(jì)算出像素與物理尺寸的關(guān)系。激光標(biāo)定模型如圖5所示。 圖5 激光標(biāo)定模型示意圖Fig.5 Schematic of a laser calibration model 安裝在機(jī)器人頭部左右兩側(cè)的激光發(fā)射器相互平行且處于同一水平高度,以確保發(fā)出的激光線是平行的。兩個(gè)激光發(fā)射器之間的距離d,發(fā)出的平行光線打在被測(cè)目標(biāo)上形成的兩個(gè)激光點(diǎn)之間的距離為L(zhǎng)。假設(shè)像平面上像素為正方形,機(jī)器人頭部的仰角與水平面之間的夾角像為α,便可以得到激光發(fā)射器水平距離d與兩激光點(diǎn)距離L的關(guān)系,即 (13) 假設(shè)經(jīng)過(guò)圖像處理后兩個(gè)亮點(diǎn)之間的像素?cái)?shù)為N,便可以計(jì)算出圖像坐標(biāo)系與現(xiàn)實(shí)物理坐標(biāo)系之間的比例系數(shù)K,即 (14) 在得到比例系數(shù)后使用Canny邊緣檢測(cè)算法[15]和形態(tài)學(xué)處理算法提取出裂縫特征,并提取計(jì)算圖像裂縫像素,將裂縫像素與比例系數(shù)相乘得到實(shí)際信息。 本文的檢測(cè)系統(tǒng)安裝在管道探測(cè)蛇形機(jī)器人上,蛇形機(jī)器人可應(yīng)用在多種管道情形下,現(xiàn)以水泥管道為背景進(jìn)行研究。選取從搜索引擎找到的關(guān)于水泥裂縫圖像的數(shù)據(jù)集,對(duì)其使用LabelImg軟件重新進(jìn)行標(biāo)注,同時(shí)使用自己采集的1 000張水泥裂縫圖片,同樣使用LabelImg軟件進(jìn)行標(biāo)注。將兩個(gè)數(shù)據(jù)集一起進(jìn)行訓(xùn)練。部分裂縫圖像樣例如圖6所示。 圖6 部分裂縫圖像樣例Fig.6 The example of a partial crack image 為了驗(yàn)證蛇形機(jī)器人裂縫檢測(cè)系統(tǒng),實(shí)驗(yàn)器材包括管道蛇形機(jī)器人、直流穩(wěn)壓電源、筆記本電腦、500萬(wàn)像素相機(jī)、激光發(fā)生器等。筆記本電腦配置如下:操作系統(tǒng)為Windows10,CPU為Intel(R) Core(TM) i7-10750H,內(nèi)存為16 GB;GPU為NVIDIA GeForce GTX 1 650 Ti,顯存為4 GB。 首先將數(shù)據(jù)集圖像劃分為訓(xùn)練集和測(cè)試集,兩者比例設(shè)置為7∶3;由遷移學(xué)習(xí)的思想,加載darknet53.conv.74作為算法的預(yù)訓(xùn)練權(quán)重,使用訓(xùn)練集數(shù)據(jù)對(duì)改進(jìn)的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,在模型訓(xùn)練好后,使用該模型對(duì)測(cè)試集圖片進(jìn)行檢測(cè),同時(shí)將檢測(cè)結(jié)果輸出,從而確定模型的性能優(yōu)劣。在確定模型性能后,調(diào)用攝像頭使用訓(xùn)練好的模型進(jìn)行實(shí)際實(shí)驗(yàn),當(dāng)在視頻中檢測(cè)到裂縫時(shí),視頻中出現(xiàn)標(biāo)記框,同時(shí)激光發(fā)生器啟動(dòng)在當(dāng)前位置打出兩個(gè)光點(diǎn),并輸出當(dāng)前圖像,運(yùn)行邊緣檢測(cè)和激光標(biāo)定算法得到當(dāng)前圖像裂縫物理信息。裂縫檢測(cè)整體算法流程如圖7所示。 圖7 裂縫檢測(cè)整體算法流程Fig.7 Overall algorithmic flow of crack detection 對(duì)改進(jìn)后的YOLOv3算法進(jìn)行訓(xùn)練,隨著迭代次數(shù)的增加,損失函數(shù)的變化趨勢(shì)如圖8所示。 由圖8可以看出,剛開(kāi)始訓(xùn)練時(shí),模型的損失值在200左右,隨著訓(xùn)練迭代次數(shù)的增加,損失值迅速逐漸減小到10左右,之后隨著訓(xùn)練的繼續(xù),損失值減小的速度開(kāi)始放緩,當(dāng)?shù)螖?shù)到9 000次左右時(shí),損失值在0.6左右,此時(shí)的損失值已不再有明顯的下降趨勢(shì),即已到了合適的效果。 圖8 損失函數(shù)趨勢(shì)Fig.8 Loss function trend 對(duì)同一訓(xùn)練集分別使用改進(jìn)YOLOv3算法和原始YOLOv3算法訓(xùn)練得到模型,之后使用同一個(gè)驗(yàn)證集進(jìn)行對(duì)比實(shí)驗(yàn)。裂縫檢測(cè)性能指標(biāo)如表1所示。算法結(jié)果對(duì)比圖如圖9所示。 表1 裂縫檢測(cè)性能指標(biāo) 圖9 算法結(jié)果對(duì)比圖Fig.9 Algorithm results comparison chart 由表1可以看出:相較于與原始YOLOv3算法,本文提出的改進(jìn)YOLOv3算法在平均精度方面提高了5.88%,這表明改進(jìn)方法在一定程度上能夠提高網(wǎng)絡(luò)模型的檢測(cè)性能。 從圖9能夠發(fā)現(xiàn),本文的方法相較于原始算法的檢測(cè)結(jié)果更優(yōu),與裂縫的實(shí)際位置更加吻合。 在確定了模型的可行性后,使用模型進(jìn)行實(shí)際測(cè)試。本文檢測(cè)時(shí),會(huì)在識(shí)別出裂縫后輸出不含標(biāo)記框的圖片,使用不含標(biāo)記框的圖片進(jìn)行圖像處理得到裂縫物理信息。視頻檢測(cè)輸出的部分圖像如圖10所示。 圖10 部分輸出裂縫圖像Fig.10 Partial output crack image 之后使用檢測(cè)出的裂縫圖片驗(yàn)證圖像處理算法的準(zhǔn)確性,使用實(shí)際的一張帶有激光點(diǎn)的照片,使用圖像處理算法計(jì)算裂縫參數(shù),同時(shí)實(shí)際測(cè)量該裂縫的物理信息,與計(jì)算出的參數(shù)進(jìn)行對(duì)比。裂縫圖片如圖11所示。 圖11 裂縫圖像Fig.11 The crack image 本文設(shè)置的兩個(gè)激光發(fā)生器之間間距為 20 mm,測(cè)量的裂縫是兩條紅線間的裂縫數(shù)據(jù),經(jīng)過(guò)圖像處理最終得到的結(jié)果以及實(shí)際測(cè)量的結(jié)果如表2所示。 通過(guò)算法計(jì)算出的長(zhǎng)度誤差為2.6%,寬度誤差為4.5%,兩者誤差皆在5%以內(nèi)。同時(shí)由于探測(cè)時(shí)攝像頭與被測(cè)量面間距離很短,故檢測(cè)到的裂縫大小也有限。5%的誤差可以滿足實(shí)際的應(yīng)用。 表2 測(cè)量結(jié)果 針對(duì)管道裂縫自動(dòng)檢測(cè)存在的問(wèn)題,本文基于改進(jìn)YOLOv3算法為管道蛇形機(jī)器人設(shè)計(jì)了基于一個(gè)快速檢測(cè)識(shí)別管道視頻裂縫的系統(tǒng)。新算法首先使用DIoU代替IoU作為損失函數(shù)用于先驗(yàn)框聚類計(jì)算損失值,以及用于YOLOv3算法訓(xùn)練時(shí)的損失值計(jì)算;其次,使用K-means++算法對(duì)裂縫數(shù)據(jù)集的標(biāo)記框進(jìn)行聚類;最后使用圖像處理算法對(duì)檢測(cè)出的裂縫圖像進(jìn)行測(cè)量。得出如下結(jié)論。 (1)通過(guò)使用DIoU作為損失函數(shù)優(yōu)化YOLOv3算法,以及使用K-means++算法進(jìn)行聚類得到合適的先驗(yàn)框。實(shí)驗(yàn)結(jié)果表明,本文算法比原始YOLOv3算法AP提高了5.88%。 (2)進(jìn)行實(shí)際實(shí)驗(yàn),訓(xùn)練好的模型在使用中可以識(shí)別視頻中的裂縫并定位。同時(shí)輸出識(shí)別出裂縫的視頻幀。 (3)建立了激光標(biāo)定模型,針對(duì)從視頻中檢測(cè)出的裂縫圖像使用邊緣檢測(cè)算法和形態(tài)學(xué)處理提取裂縫特征,之后結(jié)合激光標(biāo)定得出裂縫物理信息。實(shí)驗(yàn)表明,該算法得到的結(jié)果與實(shí)際結(jié)果誤差范圍在5%以內(nèi),滿足實(shí)際需求。






2.2 先驗(yàn)框聚類改進(jìn)
2.3 評(píng)價(jià)標(biāo)準(zhǔn)



2.4 圖像處理算法



3 實(shí)驗(yàn)與分析
3.1 數(shù)據(jù)集

3.2 實(shí)驗(yàn)條件及步驟


3.3 實(shí)驗(yàn)結(jié)果及分析





4 結(jié)論