韋若禹,李舒婷,吳松榮,鄭英杰,劉 東
(1.磁浮技術(shù)與磁浮列車教育部重點(diǎn)實(shí)驗(yàn)室,成都 610031; 2.西南交通大學(xué)電氣工程學(xué)院,成都 611756)
隨著我國鐵路的快速發(fā)展,鐵路運(yùn)輸承擔(dān)能力也隨之越來越高,如何有效保障鐵路運(yùn)營安全已成為鐵路養(yǎng)護(hù)工作中的關(guān)鍵問題[1-2]??奂沁B接道床和鋼軌的重要軌道組件,鋼軌振動和環(huán)境溫差等因素會使扣件損壞或脫落,長此以往會出現(xiàn)鋼軌變形、坍塌等問題,嚴(yán)重時(shí)會直接導(dǎo)致列車發(fā)生脫軌事故[3-4]。而我國鐵路軌道扣件數(shù)量眾多,因此迫切需要智能化、自動化的檢測手段來快速且準(zhǔn)確地識別扣件缺陷[5-6]。
當(dāng)前我國主要采用人工巡道的方法檢查軌道扣件中的缺陷,這種方法不僅經(jīng)常發(fā)生漏檢現(xiàn)象,而且極度依賴巡道工的經(jīng)驗(yàn),需要耗費(fèi)大量的人力和物力,已經(jīng)不適應(yīng)如今鐵路軌道的發(fā)展[7-8]。隨著深度學(xué)習(xí)(Deep learning)和神經(jīng)網(wǎng)絡(luò)的興起[9],國內(nèi)外學(xué)者提出了許多基于神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測[10-11]和目標(biāo)跟蹤算法[12],并且已有相關(guān)研究將其用于處理鐵路圖像,如通過卷積神經(jīng)網(wǎng)絡(luò)(Conventional neural network)識別有砟軌道區(qū)域[13-14]、軌道塞釘[15]等零件狀態(tài)等,獲得了良好的檢測效果。
目前應(yīng)用比較廣泛且基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法可以分為兩類:一類是基于候選區(qū)域的目標(biāo)檢測算法,如R-CNN[16](Region-Conventional Neural Network)、Fast R-CNN[17]、Faster R-CNN[18]等,這類算法首先獲取圖像中可能存在目標(biāo)的子區(qū)域,接著將所有的子區(qū)域作為輸入,并通過深度卷積神經(jīng)網(wǎng)絡(luò)提取目標(biāo)特征,最后進(jìn)行類別檢測和邊框修正;另一類是基于端對端學(xué)習(xí)的目標(biāo)檢測算法,如SSD(Single Shot Multibox Detector)[19]、YOLO(You Only Look Once)[20]、YOLO V3[21]等,此類算法不需要提取候選區(qū)域,只要給定輸入圖像,就可以直接利用該算法檢測出圖像中的目標(biāo)類別和目標(biāo)邊框,大大加快了檢測速度。
本文將采集到的現(xiàn)場環(huán)境下的圖像樣本制作成軌道扣件缺陷檢測數(shù)據(jù)集,以YOLO V3模型為基礎(chǔ),將軌道扣件的各類缺陷作為訓(xùn)練和檢測的目標(biāo)。但由于檢測目標(biāo)尺寸普遍較小,目標(biāo)包含的特征信息量較少,在使用YOLO V3算法檢測時(shí),誤識別率較高,因此本文對YOLO V3目標(biāo)檢測算法提出了兩點(diǎn)改進(jìn)。先使用K-means算法對扣件數(shù)據(jù)集的目標(biāo)候選框尺寸進(jìn)行聚類分析,采用分析得到的聚類中心進(jìn)行模型訓(xùn)練,以提高模型的識別準(zhǔn)確率;同時(shí)調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),根據(jù)檢測目標(biāo)的尺寸選取兩組尺度特征,對扣件缺陷的位置和類別進(jìn)行預(yù)測,以減少運(yùn)算量,提升檢測速度。
圖1 Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)
YOLO[20]系列算法訓(xùn)練模型時(shí)通過卷積神經(jīng)網(wǎng)絡(luò)直接輸入整張圖像,是一種端到端的目標(biāo)檢測算法,省去了生成候選區(qū)域的中間步驟,因此能夠快速將目標(biāo)和背景區(qū)域進(jìn)行區(qū)分,實(shí)現(xiàn)實(shí)時(shí)檢測目標(biāo)物體的功能。相比于YOLO V2中的骨干網(wǎng)絡(luò)Darknet-19,YOLO V3參考了殘差神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),通過在網(wǎng)絡(luò)中引入殘差單元,降低訓(xùn)練深層網(wǎng)絡(luò)的難度,并且將Darknet-19網(wǎng)絡(luò)擴(kuò)充至53層并稱該骨干網(wǎng)絡(luò)為Darknet-53[21]。圖1為Darknet-53的網(wǎng)絡(luò)結(jié)構(gòu),其中方框圈出的部分為殘差組件,最左側(cè)一列的1、2、8等數(shù)字代表重復(fù)殘差組件的數(shù)量;網(wǎng)絡(luò)的輸入尺寸為416×416,輸出13×13、26×26和52×52三種尺度的特征圖,并送入檢測網(wǎng)絡(luò)。
檢測網(wǎng)絡(luò)將輸入的圖像劃分成S×S個(gè)相同大小的單元格,如果目標(biāo)的中心落入某一單元格,則該網(wǎng)格負(fù)責(zé)預(yù)測該目標(biāo)[20],并通過卷積層將特征提取出來,以便于正確識別目標(biāo)。一個(gè)單元格需要預(yù)測多個(gè)邊界框,每個(gè)邊界框包含置信度信息和預(yù)測的位置信息(tx,ty,tw,th)。將圖像左上角設(shè)置為坐標(biāo)原點(diǎn),則單元格相對于整幅圖像的坐標(biāo)為(cx,cy),且先驗(yàn)框(anchor box)的寬度和高度分別為pw和ph,那么預(yù)測出的邊界框可以表示為
(1)
式中,(bx,by)為預(yù)測邊界框的中心坐標(biāo);bw、bh分別表示預(yù)測邊界框的寬度和高度。通過該公式可得到多個(gè)邊界框的信息,YOLO V3網(wǎng)絡(luò)采用非極大值抑制算法,去除置信得分較低的邊界框,保留置信得分較高的邊界框?yàn)槟繕?biāo)的檢測框[22]。
本文主要研究軌道扣件中的缺陷檢測問題,原YOLO V3網(wǎng)絡(luò)中定義的先驗(yàn)框和網(wǎng)絡(luò)的層級結(jié)構(gòu)并不適用于本文的研究對象。因此,首先使用K-means算法對數(shù)據(jù)集進(jìn)行聚類分析,然后針對扣件缺陷檢測,對原網(wǎng)絡(luò)的層級結(jié)構(gòu)進(jìn)行修改。
YOLO V3網(wǎng)絡(luò)使用anchors boxes對邊界框進(jìn)行預(yù)測,初始anchor boxes是一組尺寸固定的先驗(yàn)框,對先驗(yàn)框的選擇會影響網(wǎng)絡(luò)對目標(biāo)物體的檢測準(zhǔn)確度和速度。在Faster R-CNN和SSD檢測算法中,anchor boxes的大小是通過人工確定的,這種做法會導(dǎo)致主觀性比較強(qiáng)。YOLO V3網(wǎng)絡(luò)為了選出尺寸合適的先驗(yàn)框,使用K-means聚類算法對數(shù)據(jù)集的目標(biāo)框進(jìn)行聚類分析。
在K-means算法中,設(shè)置anchor boxes的目的是使其與臨近的真實(shí)框有更大的IOU值,并且IOU的值應(yīng)該與框的尺寸無關(guān)。IOU表示真實(shí)標(biāo)注框與預(yù)測框的交并比,用來衡量預(yù)測邊界框的準(zhǔn)確性,當(dāng)IOU=1時(shí),說明真實(shí)標(biāo)注框與預(yù)測框重合,其計(jì)算公式如下
(2)
式中,btrue和bpred分別表示真實(shí)標(biāo)注框和預(yù)測框。
K-means算法通常使用歐氏距離、切比雪夫距離、曼哈頓距離等方法作為距離量度,計(jì)算兩點(diǎn)間的距離。在YOLO V3網(wǎng)絡(luò)中,如果聚類算法仍采用這些常用的距離,會導(dǎo)致不能產(chǎn)生很好的檢測效果。因此可通過自定義的距離公式計(jì)算邊框之間的相似度,自定義的距離度量公式如下
d(box,centroid)=1-IOU(box,centroid)
(3)
式中,centroid表示聚類時(shí)被選作中心的邊框;box表示樣本中標(biāo)注的邊框;IOU(box,centroid)表示樣本標(biāo)注框和聚類中心框的交并比。
本文選取K=1~10,分別對訓(xùn)練集中的樣本圖像進(jìn)行K-means聚類分析,得到K值與平均交并比AvgIOU之間的關(guān)系如圖2所示。
圖2 K-means聚類分析結(jié)果
從圖2可以看出,隨著K值的增大,平均交并比的變化曲線逐漸平緩,曲線的拐點(diǎn)可認(rèn)為是最佳的anchor boxes的個(gè)數(shù)。當(dāng)K>3時(shí),曲線開始變得平緩,所以確定anchor boxes的數(shù)量為3,這樣既可以加快損失函數(shù)的收斂速度,又可以降低預(yù)測框引起的誤差。對應(yīng)先驗(yàn)框的大小設(shè)置為3個(gè)聚類的中心,在本訓(xùn)練數(shù)據(jù)集上相對應(yīng)的分別是(31,69),(39,82),(60,93)。
YOLO V3采用類似FPN的上采樣和融合做法,在3個(gè)尺度的融合特征圖上分別獨(dú)立做檢測,對目標(biāo)物體的尺度變化適應(yīng)性較好。但在軌道扣件缺陷檢測任務(wù)中,檢測目標(biāo)普遍較小,因此需要對YOLO V3的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行一些改進(jìn),從而適應(yīng)特定的軌道扣件缺陷檢測任務(wù),同時(shí)為了提升運(yùn)算速率,加快缺陷檢測整體流程,從原網(wǎng)絡(luò)結(jié)構(gòu)中提取兩組尺度特征對扣件缺陷的位置和類別進(jìn)行預(yù)測,使其更好地適應(yīng)檢測軌道扣件缺陷的任務(wù)。
圖3為改進(jìn)后的YOLO V3網(wǎng)絡(luò)結(jié)構(gòu),輸入圖像尺寸為416×416,Darknet-53中conv53層做五次卷積操作后進(jìn)行上采樣操作,將結(jié)果與Darknet-53中的conv45層融合,然后進(jìn)行五次卷積操作、3×3和1×1等卷積后得到第一尺度26×26的特征圖。以類似的方法對Darknet-53中的conv29層進(jìn)行特征融合,可以得到第二尺度52×52的特征圖。
圖3 改進(jìn)后的YOLO V3網(wǎng)絡(luò)結(jié)構(gòu)
通過改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)可以使YOLO V3網(wǎng)絡(luò)結(jié)構(gòu)更好地適應(yīng)軌道扣件檢測場景中檢測目標(biāo)普遍較小的情況,進(jìn)而提高模型檢測的準(zhǔn)確率。由于采用了與現(xiàn)實(shí)場景相匹配的尺度數(shù)目,改進(jìn)后的YOLO V3模型還可以有效減少不必要的計(jì)算量,提升檢測速度。
表1為本文的實(shí)驗(yàn)硬件環(huán)境配置,同時(shí)在服務(wù)器上搭建軟件環(huán)境,包括Windows 10.0、CUDA8.0、OpenCV3.4.0等常用環(huán)境,深度學(xué)習(xí)算法使用Darknet-53框架。
表1 實(shí)驗(yàn)硬件環(huán)境配置
實(shí)驗(yàn)的圖像數(shù)據(jù)來源為安裝于某地鐵列車上的軌道智能巡檢系統(tǒng),該系統(tǒng)通過高速工業(yè)相機(jī)拍攝軌道,并得到DTVI2型扣件圖像。該類型扣件包含彈條和螺栓兩個(gè)主要零件,其中零件的脫落和松動是最容易出現(xiàn)的問題。因此本文自制了軌道扣件缺陷六分類數(shù)據(jù)集,類別名稱分別為正常彈條(sh)、彈條松動(sh_loose)、彈條脫落(sh_off)、正常螺栓(nut)、螺栓松動(nut_loose)、螺栓脫落(nut_off),各類典型樣本如圖4所示。
圖4 典型扣件缺陷圖像
對圖像數(shù)據(jù)進(jìn)行整理后,因?yàn)槿毕輼颖鞠∪?,所以?00余張缺陷扣件圖像進(jìn)行旋轉(zhuǎn)、鏡像等數(shù)據(jù)增強(qiáng)處理后擴(kuò)展到600張,其中各類缺陷均占1/4。將200張正常扣件樣本與500張缺陷樣本組合作為訓(xùn)練數(shù)據(jù)集,再選取剩余100張缺陷樣本與100張正??奂颖窘M合作為測試數(shù)據(jù)集。采用Yolo_mark工具對數(shù)據(jù)集的圖像進(jìn)行標(biāo)注并以Yolo數(shù)據(jù)的格式進(jìn)行存儲。
使用YOLO V3網(wǎng)絡(luò)和改進(jìn)后的YOLO V3網(wǎng)絡(luò)分別進(jìn)行訓(xùn)練,訓(xùn)練的批量大小為64,衰減系數(shù)為0.000 5,采用動量為0.9的異步隨機(jī)梯度下降,在訓(xùn)練的初始階段選擇0.001的學(xué)習(xí)率,并利用旋轉(zhuǎn)、調(diào)整飽和度、調(diào)整曝光量等方法增強(qiáng)和擴(kuò)充數(shù)據(jù)集中的圖像樣本。
在訓(xùn)練過程中,通過繪制Loss曲線可以直觀地觀察訓(xùn)練模型的迭代過程,圖5為改進(jìn)前后的YOLO V3網(wǎng)絡(luò)在訓(xùn)練過程中對應(yīng)的Loss曲線。圖5(a)為原YOLO V3網(wǎng)絡(luò)對應(yīng)的Loss曲線,圖5(b)為改進(jìn)后YOLO V3網(wǎng)絡(luò)對應(yīng)的Loss曲線,如圖所示,當(dāng)?shù)螖?shù)達(dá)到20000次后,各參數(shù)趨于穩(wěn)定,改進(jìn)前后網(wǎng)絡(luò)的Loss值分別降至0.27和0.15左右。從Loss函數(shù)的收斂情況分析可知,改進(jìn)后YOLO V3網(wǎng)絡(luò)的訓(xùn)練效果比較理想。
圖5 改進(jìn)前后的YOLO V3損失函數(shù)曲線
為了準(zhǔn)確且有效地對檢測算法的性能進(jìn)行評價(jià),本文選擇準(zhǔn)確率RP和召回率RR作為評價(jià)指標(biāo),其計(jì)算公式分別為
(4)
(5)
式中,NTP為正確識別的目標(biāo)數(shù)量;NFP為被錯(cuò)誤識別的目標(biāo)數(shù)量;NFN為沒有被識別出來的目標(biāo)數(shù)量。
用來測試的200張圖像中共有489個(gè)目標(biāo),分別使用原YOLO V3算法和改進(jìn)后的YOLO V3算法對測試數(shù)據(jù)集進(jìn)行目標(biāo)檢測,分別計(jì)算它們的準(zhǔn)確率RP和召回率RR,結(jié)果如表2所示。
從表2可以看出,與原YOLO V3算法相比,改進(jìn)后的YOLO V3對扣件缺陷的漏檢和誤檢數(shù)量均有明顯下降,檢測準(zhǔn)確率達(dá)到96.38%,提高了15.37%,召回率達(dá)到98.16%,提升了17.89%,說明改進(jìn)后的YOLO V3算法具有更高的可靠性。
表2 改進(jìn)前后算法的目標(biāo)檢測結(jié)果對比
在測試數(shù)據(jù)集上,分別利用YOLO V3改進(jìn)前后算法計(jì)算六類目標(biāo)的平均準(zhǔn)確率(Average Precision,AP),平均準(zhǔn)確率對準(zhǔn)確率和召回率綜合考慮,可用來衡量檢測算法的可靠性,并且可以用來分析每個(gè)類別的檢測結(jié)果,是評價(jià)檢測模型準(zhǔn)確性的直觀評價(jià)標(biāo)準(zhǔn)。同時(shí)計(jì)算六類目標(biāo)檢測的平均準(zhǔn)確率均值(mean Average Precision,mAP),mAP值反映了檢測模型識別所有類別的綜合性能。測試結(jié)果如表3所示,可以看出,改進(jìn)后的YOLO V3算法的平均準(zhǔn)確率均值mAP提升了20.64%,達(dá)到95.62%,檢測速度在原YOLO V3的基礎(chǔ)上提升了82.5%,達(dá)到58.4fps,說明改進(jìn)后的YOLO V3算法具有更好的檢測性能。
表3 YOLO V3改進(jìn)前后算法的檢測結(jié)果對比
圖6 YOLO V3改進(jìn)前后算法的檢測結(jié)果對比
圖6為YOLO V3改進(jìn)前后算法的檢測結(jié)果,圖6(a)、圖6(b)是原YOLO V3目標(biāo)檢測算法對扣件缺陷的檢測結(jié)果,圖6(c)、圖6(d)是改進(jìn)后的YOLO V3目標(biāo)檢測算法對扣件缺陷的檢測結(jié)果。對比圖6(a)、圖6(c),可以發(fā)現(xiàn)原YOLO V3對扣件缺陷的檢測存在誤檢的情況,把正常的但有污漬的螺栓誤認(rèn)為是松動的螺栓,而改進(jìn)后的YOLO V3則可以透過污漬正確識別出正常螺栓。對比圖6(b)、圖6(d),可以發(fā)現(xiàn)原YOLO V3存在漏檢的問題,而改進(jìn)后的YOLO V3網(wǎng)絡(luò)則可以檢測出原網(wǎng)絡(luò)漏檢的螺栓。
為了更全面地評測改進(jìn)YOLO V3算法的目標(biāo)檢測性能,使用文獻(xiàn)[18]中的Faster R-CNN檢測算法和文獻(xiàn)[19]中的SSD檢測算法進(jìn)行對比實(shí)驗(yàn),并以mAP和檢測速度作為評價(jià)算法檢測性能的兩個(gè)指標(biāo),實(shí)驗(yàn)結(jié)果如表4所示。
表4 不同算法的檢測結(jié)果對比表
從表4可以看出,在Fater R-CNN、SSD和YOLO V3算法中,平均準(zhǔn)確率均值mAP最高的為Faster R-CNN算法,檢測速度最快的為YOLO V3算法。本文方法與FasterR-CNN相比,mAP提高了15.01%,主要原因是本文方法采用了Anchor機(jī)制和改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu),提高了網(wǎng)絡(luò)對目標(biāo)的檢測準(zhǔn)確率;本文方法與原YOLO V3算法相比,檢測速度大幅提高,主要是因?yàn)楸疚姆椒ň喠司W(wǎng)絡(luò)結(jié)構(gòu),減少了不必要的計(jì)算量,從而提升了檢測速度。由此可見,改進(jìn)后的YOLO V3算法同時(shí)保證了檢測的準(zhǔn)確性和檢測速度,能夠較好地完成軌道扣件缺陷檢測任務(wù)。
提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的YOLO V3改進(jìn)方法,并將其應(yīng)用于軌道扣件缺陷檢測領(lǐng)域。通過采用目標(biāo)框維度聚類和調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)等方法改進(jìn)YOLO V3算法,并使用DTVI2型扣件圖像作為數(shù)據(jù)集進(jìn)行扣件缺陷檢測實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,相比于原YOLO V3網(wǎng)絡(luò),改進(jìn)后YOLO V3算法的檢測準(zhǔn)確率和召回率均有明顯提高,具有更好的檢測效果。但在實(shí)時(shí)性方面,改進(jìn)后的YOLO V3算法與實(shí)際工程應(yīng)用仍存在著差距,如何在不影響檢測性能的條件下提升檢測速度將是未來的主要研究方向。