徐昕軍,江 波,黃啟迪
(中國鐵道科學(xué)研究院集團(tuán)有限公司基礎(chǔ)設(shè)施檢測研究所,北京 100081)
翻漿冒泥病害是鐵路路基常見病害,如果不能及時發(fā)現(xiàn)并處理,會嚴(yán)重影響行車安全。目前,對鐵路路基病害檢測主要采用車載地質(zhì)雷達(dá)法,檢測數(shù)據(jù)量巨大。對路基病害的識別仍然以人工解譯為主,對解譯人員相關(guān)專業(yè)知識要求較高,數(shù)據(jù)分析的速度極低且無法避免人為誤差。因此,如何提高鐵路路基檢測數(shù)據(jù)的病害識別效率以及時指導(dǎo)鐵路路基的養(yǎng)護(hù)維修,是亟需解決的難題。
由于鐵路路基地質(zhì)雷達(dá)檢測數(shù)據(jù)的解譯主要采用經(jīng)過處理的地質(zhì)雷達(dá)剖面圖,因此,鐵路路基病害識別可以看作計算機(jī)視覺研究中的目標(biāo)檢測任務(wù)。目標(biāo)檢測包括2個子任務(wù):①目標(biāo)類別檢測任務(wù),需要區(qū)分目標(biāo)和背景,并確定目標(biāo)所屬類別;②目標(biāo)定位任務(wù),需要用檢測框框定出目標(biāo)的所屬范圍。本文以目標(biāo)檢測方法中的Cascade R-CNN 模型為基礎(chǔ),提出一種針對鐵路路基翻漿冒泥病害的智能識別方法,該方法以PyTorch[1]作為深度學(xué)習(xí)框架,通過在自制病害數(shù)據(jù)集上進(jìn)行試驗(yàn)來驗(yàn)證本文方法的有效性。
針對鐵路路基病害識別的相關(guān)研究主要集中在病害特征的設(shè)計與提取,以及支持向量機(jī)、淺層神經(jīng)網(wǎng)絡(luò)等傳統(tǒng)機(jī)器學(xué)習(xí)方法在訓(xùn)練病害分類器上的應(yīng)用。趙勐[2]設(shè)計了基于二維小波分析的探地雷達(dá)圖像特征提取算法,并基于神經(jīng)網(wǎng)絡(luò)設(shè)計了路基病害自動識別算法,但識別算法中各參數(shù)需要人為設(shè)定,識別參數(shù)的選取直接決定了識別效果的好壞。廖立堅等[3]通過分析雷達(dá)圖像的層面圖,提取了翻漿冒泥的特征值,并采用神經(jīng)網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)了對翻漿冒泥病害的識別。鄒華勝[4]提出了以瞬時頻率和瞬時振幅為特征值,采用支持向量機(jī)技術(shù)對路基病害進(jìn)行識別,但識別范圍局限于訓(xùn)練樣本的范圍,超出范圍則識別效果變差。侯哲哲[5]采用稀疏表示的方法對路基病害進(jìn)行特征表示,并利用超球面支持向量機(jī)對病害進(jìn)行識別。
由于深度學(xué)習(xí)方法避免了傳統(tǒng)方法手工設(shè)計特征的弊端,在目標(biāo)檢測、語義分割等多個領(lǐng)域取得成功,其中目標(biāo)檢測發(fā)展迅速。目標(biāo)檢測框架主要包括2 類:①單階段檢測器,代表性架構(gòu)是SSD(Single Shot Multibox Detector)[6],YOLO(You Only Look Once)[7],F(xiàn)ocal Loss[8];②兩階段檢測器,代表性架構(gòu)是 Faster R-CNN[9],R-FCN(Region-Based Fully Convolutional Networks)[10],Mask R-CNN[11]和Libra R-CNN[12]。
近些年來,多階段檢測框架逐漸成為目標(biāo)檢測領(lǐng)域的一種風(fēng)向標(biāo)。Gidaris 等[13]提出了將檢測框評分和定位精修交替進(jìn)行的迭代定位機(jī)制。Gidaris 等[14]介紹了一種ARN(Attend Refine Network)網(wǎng)絡(luò)結(jié)構(gòu),通過一個多階段程序生成精確的候選框,并將其輸入FastR-CNN 進(jìn)行前向傳播。Yang 等[15]將一個級聯(lián)結(jié)構(gòu)合并到RPN 和Fast R-CNN,以提高候選區(qū)域和檢測結(jié)果的質(zhì)量。Jiang 等[16]提出了優(yōu)化的定位置信度方法,提高了檢測框精修定位精度。級聯(lián)結(jié)構(gòu)大量被用于排除簡單負(fù)樣本。例如,Ouyang 等[17]在淺層排除掉簡單的候選區(qū)域(Region of Interest,RoI)。Li 等[18]提出在多個分辨率上排除簡單樣本。Ouyang 等[19]在目標(biāo)檢測網(wǎng)絡(luò)中嵌入了典型的級聯(lián)架構(gòu)。Dai 等[20]將一個檢測和一個分割任務(wù)交替迭代用于實(shí)例分割。
在使用級聯(lián)結(jié)構(gòu)的模型中,Cascade R-CNN[21]效果顯著。Cascade R-CNN 包含多個階段,每一階段的輸出作為下一階段的輸入,以取得更高的精修質(zhì)量,而且每一個階段的訓(xùn)練數(shù)據(jù)是采用逐漸增加的交并比(Intersection over Union,IoU)閾值進(jìn)行采樣的,這種方式可以很好地應(yīng)對不同的訓(xùn)練分布。
Cascade R-CNN 是一種多階段目標(biāo)檢測模型,解決了在目標(biāo)檢測任務(wù)中訓(xùn)練出包含少量假陽性樣本的高性能檢測模型的問題。
傳統(tǒng)兩階段目標(biāo)檢測架構(gòu)[9,22-24]將目標(biāo)檢測歸結(jié)為包含分類和檢測框回歸2個子任務(wù)的多任務(wù)學(xué)習(xí)問題,通過設(shè)定一個IoU 閾值來定義正樣本和負(fù)樣本,該閾值一般為0.5。但這是一個不夠嚴(yán)格的判定標(biāo)準(zhǔn),檢測模型很難排除接近閾值的假陽性樣本。提高IoU閾值可減少通過的假陽性樣本數(shù)量,但會造成正樣本數(shù)量呈指數(shù)級減少,導(dǎo)致檢測器因?yàn)橛?xùn)練過擬合而性能下降。反之,降低IoU 閾值會導(dǎo)致訓(xùn)練的檢測模型產(chǎn)生誤檢。
研究發(fā)現(xiàn),以單一IoU 閾值訓(xùn)練的檢測器對與該閾值接近的輸入樣本的定位和檢測性能最好,所以單一IoU 閾值檢測器通常對某類樣本最優(yōu)。因此,Cascade R-CNN 被設(shè)計成多階段檢測架構(gòu),每個階段對應(yīng)不同質(zhì)量的輸入樣本。另外,回歸器輸出的IoU值總是優(yōu)于輸入的IoU值。因此,Cascade R-CNN 模型訓(xùn)練采用級聯(lián)檢測進(jìn)行迭代式訓(xùn)練,將低IoU 閾值檢測器的訓(xùn)練結(jié)果作為下一高IoU閾值檢測器的輸入。
Cascade R-CNN 級聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)從初始樣本分布開始,可通過重采樣自動生成下一階段需要的高IoU 閾值輸入樣本。這種結(jié)構(gòu)有2 個優(yōu)點(diǎn):①不易發(fā)生過擬合,因?yàn)槊總€階段都有足夠的輸入樣本;②較深階段的檢測器被優(yōu)化為適應(yīng)更高的IoU 閾值。此外,由于每一檢測階段均可剔除離散值,在檢測階段采用級聯(lián)結(jié)構(gòu),候選框質(zhì)量隨著檢測階段深入逐漸提高,進(jìn)而增強(qiáng)了檢測模型性能。
由于單一回歸函數(shù)很難適應(yīng)不同IoU 閾值下的候選框,因此Cascade R-CNN 將回歸任務(wù)分解為一系列更簡單的步驟,此級聯(lián)網(wǎng)絡(luò)的回歸函數(shù)如下:
式中:T是Cascade 網(wǎng)絡(luò)檢測階段的總數(shù);fi(i=1,2,…,T)是Cascade 網(wǎng)絡(luò)對應(yīng)階段的回歸器;x是輸入回歸器的圖片;b是輸入圖片對應(yīng)的檢測框。
級聯(lián)回歸函數(shù)中的每一個回歸函數(shù)不是采用同樣的初始分布,而是在相應(yīng)階段的樣本分布下達(dá)到的最優(yōu)化。因此該網(wǎng)絡(luò)可以逐漸優(yōu)化候選框。
圖1 Cascade R-CNN 級聯(lián)模型結(jié)構(gòu)
Cascade R-CNN(圖1)擴(kuò)展了Faster RCNN 的兩階段檢測架構(gòu),構(gòu)建了1 個由多階段子網(wǎng)絡(luò)構(gòu)成的級聯(lián)回歸模型。Cascade R-CNN 由4 個階段組成:1 個用于生成候選區(qū)的RPN(Region Proposal Network)階段和3 個檢測階段,IoU 閾值分別設(shè)為 0.5,0.6 和 0.7。首先,由產(chǎn)生候選區(qū)域的子網(wǎng)絡(luò)“H0”輸入整張圖片并產(chǎn)生初步的目標(biāo)檢測區(qū)域;然后,利用RoI候選區(qū)域檢測子網(wǎng)絡(luò)“H1”對第1階段的初步候選區(qū)進(jìn)行處理;最后,將每個候選區(qū)送到分類評分模塊“C”和檢測框模塊“B”。
因?yàn)槁坊『Φ刭|(zhì)雷達(dá)檢測數(shù)據(jù)內(nèi)部結(jié)構(gòu)復(fù)雜,目標(biāo)與背景結(jié)構(gòu)差異小,且彼此交融,導(dǎo)致邊界模糊不清。因此,本文針對翻漿冒泥目標(biāo)檢測任務(wù)的特點(diǎn),對原始Faster R-CNN 進(jìn)行了改進(jìn),基于Cascade R-CNN的病害識別流程如圖2所示。
在傳統(tǒng)非球面光學(xué)元件拋光過程中,主要通過技術(shù)人員手工修磨,因此存在加工效率低,精度穩(wěn)定性差的缺點(diǎn),且產(chǎn)品加工質(zhì)量十分依賴技術(shù)人員的經(jīng)驗(yàn)和技巧,很難達(dá)到技術(shù)要求。計算機(jī)控制小磨頭拋光技術(shù)的提出有效解決了這些難題。計算機(jī)控制小磨頭拋光技術(shù)也被稱為計算機(jī)控制光學(xué)表面成形技術(shù)(computer controlled optical saurface, CCOS),是發(fā)展于20世紀(jì)70年代的光學(xué)加工技術(shù),該技術(shù)在大口徑光學(xué)非球面元件加工領(lǐng)域扮演著重要角色。近年來發(fā)展的磁流變拋光、氣囊拋光、離子束拋光和大氣等離子體拋光等技術(shù),全是基于這一原理的拋光技術(shù)[2-5]。
圖2 基于Cascade R-CNN 的病害識別流程
首先,基于PyTorch 搭建深度學(xué)習(xí)開發(fā)環(huán)境,整理病害圖片進(jìn)行病害標(biāo)注,并轉(zhuǎn)換成COCO(Common Objects in Context)[25]格式數(shù)據(jù)集;然后,以深度學(xué)習(xí)工具箱mmdetection 提供的Cascade R-CNN 代碼為基礎(chǔ),并使用Soft-NMS 和數(shù)據(jù)增強(qiáng)方法對Cascade R-CNN 進(jìn)行改進(jìn);最后,采用預(yù)訓(xùn)練模型進(jìn)行模式參數(shù)初始化,訓(xùn)練和測試模型,使用自制數(shù)據(jù)集對模型調(diào)優(yōu),采用COCO檢測評價矩陣評價模型性能。
非極大值抑制(NMS)用于剔除重疊度高的候選框,但傳統(tǒng)NMS 會將部分正確的目標(biāo)檢測框剔除掉。翻漿冒泥病害在總體趨勢上是連續(xù)的,但也會由于涵洞、橋梁等結(jié)構(gòu)物而出現(xiàn)間斷的情況。因此,如果在翻漿冒泥病害識別任務(wù)中仍采用傳統(tǒng)NMS,會導(dǎo)致距離較近的正確病害候選框被抑制掉,降低識別準(zhǔn)確率。因此,本文采用了一種改進(jìn)的NMS方法——Soft-NMS[26]。
Soft-NMS 對重疊度大于閾值的候選框不是采用直接抑制的方式,而是降低該候選框的檢測評分。與最高分候選框重疊度大的候選框評分下降較大,而重疊度小的候選框評分受影響較小,可以減少假陽性結(jié)果,增強(qiáng)模型性能。其中,Soft-NMS 利用衰減函數(shù)對評分進(jìn)行控制,包括線性加權(quán)和高斯加權(quán)2種形式,分別見式(2)和式(3)。試驗(yàn)表明,在翻漿冒泥識別任務(wù)上高斯加權(quán)效果更好,因此本文采用高斯加權(quán)Soft-NMS。
式中:M是具有最高檢測評分的候選框;bi是候選檢測框;iou(M,bi)是M和bi的重疊度;si是bi對應(yīng)的檢測評分;D是預(yù)留的候選框集合;σ為高斯函數(shù)的方差;Nt為NMS的閾值。
在深度學(xué)習(xí)中,有時會出現(xiàn)訓(xùn)練集樣本不夠或某一類樣本較少的情況。為了防止過擬合,加強(qiáng)模型魯棒性,可以采用數(shù)據(jù)增強(qiáng)的改進(jìn)方法。數(shù)據(jù)增強(qiáng)通過幾何變換的方式改變像素所在位置,而不改變像素值,讓模型學(xué)到更多圖像不變特性。
在翻漿冒泥病害識別任務(wù)中,由于能收集到的樣本數(shù)量比一般的目標(biāo)檢測任務(wù)要少,因此本文綜合使用多種數(shù)據(jù)增強(qiáng)方法擴(kuò)充病害樣本集,提高模型性能。具體改進(jìn)方法為:①翻轉(zhuǎn)與反射變換,沿著水平或垂直方向翻轉(zhuǎn)圖像;②對比度和亮度變換,對圖像HSV(Hue,Saturation,Value)顏色空間中每個像素的飽和度和亮度分量進(jìn)行指數(shù)運(yùn)算,以增加光照變化;③縮放變換,按照一定的比例縮小圖像;④隨機(jī)裁剪,采用隨機(jī)圖像差值裁剪圖像。
利用中國鐵道科學(xué)研究院集團(tuán)有限公司基礎(chǔ)設(shè)施檢測研究所橋隧部多年鐵路路基檢測工作積累的數(shù)據(jù)自制路基病害數(shù)據(jù)集。數(shù)據(jù)集中的圖片為地質(zhì)雷達(dá)后處理軟件生成的病害雷達(dá)剖面圖,且部分病害已經(jīng)過現(xiàn)場開挖驗(yàn)證。
目前制作目標(biāo)檢測數(shù)據(jù)集常用的數(shù)據(jù)格式包括VOC 和COCO 2 種格式,本文采用COCO 數(shù)據(jù)集格式制作數(shù)據(jù)集。COCO 是微軟團(tuán)隊提供的一個進(jìn)行圖像識別的數(shù)據(jù)集。數(shù)據(jù)集包括1 030 張標(biāo)注好的翻漿冒泥病害圖片,并按照8∶1∶1 比例劃分為訓(xùn)練集、測試集和驗(yàn)證集。圖片首先由路基檢測專家使用LabelImg[27]圖片標(biāo)注工具進(jìn)行標(biāo)注,再使用數(shù)據(jù)格式轉(zhuǎn)換工具[28]將得到的 xml 標(biāo)注文件轉(zhuǎn)化為 COCO 的json format格式。
本次試驗(yàn)以PyTorch 為深度學(xué)習(xí)框架搭建開發(fā)環(huán)境,版本為 Stable(1.2),使用 Linux(Ubuntu14.04)系統(tǒng)、Python3.6版本和CUDA 版本10.0,Cascade R-CNN的實(shí)現(xiàn)代碼采用商湯科技和香港中文大學(xué)開源的深度學(xué)習(xí)目標(biāo)檢測工具箱mmdetection,開發(fā)環(huán)境配置如表1所示。模型訓(xùn)練和測試以PyTorch 版本的Cascade R-CNN為基礎(chǔ)。
表1 開發(fā)環(huán)境配置
mmdetection 將目標(biāo)檢測架構(gòu)拆解為不同的模塊進(jìn)行封裝,通過這些通用模塊可構(gòu)建出自己的檢測模型。本文模型的網(wǎng)絡(luò)模塊配置如表2所示,網(wǎng)絡(luò)模型選用Resnet101。
表2 網(wǎng)絡(luò)模塊配置
經(jīng)過大量試驗(yàn)與模型調(diào)試,對翻漿冒泥病害識別模型訓(xùn)練過程中的關(guān)鍵參數(shù)設(shè)置總結(jié)如下:參數(shù)imgs_per_gpu 設(shè)為 1,即每個 gpu 計算 1 張圖片;參數(shù)workers_per_gpu 設(shè)為 1,即每個 gpu 分配 1 個線程;參數(shù)num_classes設(shè)為2,即分為翻漿冒泥和背景類;求解器優(yōu)化方法采用隨機(jī)梯度下降法,全局學(xué)習(xí)率lr 設(shè)為0.002 5,初始學(xué)習(xí)率設(shè)為1/3,初始學(xué)習(xí)率增加策略設(shè)為線性增加,動量因子momentum 設(shè)為0.9,權(quán)重衰減因子weight_decay設(shè)置為0.001。
模型訓(xùn)練采用GPU 加速模式,訓(xùn)練周期epochs 設(shè)為12,即數(shù)據(jù)集共訓(xùn)練12 次。在前500 次迭代過程中學(xué)習(xí)率逐漸增加,并在第8 個和第11 個epoch 降低學(xué)習(xí)率。訓(xùn)練時采用Resnet 預(yù)訓(xùn)練模型初始化參數(shù),并在此基礎(chǔ)上使用自制數(shù)據(jù)集進(jìn)行調(diào)優(yōu),用少量訓(xùn)練樣本取得較高的模型識別精度。
本文采用COCO 檢測評價矩陣評估模型性能。COCO評價矩陣包括12個評價指標(biāo),用來評價COCO數(shù)據(jù)集上的目標(biāo)檢測器的性能。檢測指標(biāo)包括4大類:
第1 類為平均精度(Average Precision,AP),表示所有類別目標(biāo)的平均精度,包括AP,AP50和AP753 個指標(biāo)。AP 是COCO 格式數(shù)據(jù)集上評價模型性能最重要的指標(biāo),是多個IoU 值的平均值,以0.05 位間隔,對0.50~0.95 的 10 個 IoU 閾值進(jìn)行計算,以提高檢測器的精度;AP50對應(yīng)傳統(tǒng)的IoU閾值為0.50的計算方法,與PASCAL VOC 矩陣的評價方法相同;AP75對應(yīng)更加嚴(yán)格的IoU閾值為0.75的計算方法。
第2 類為跨尺度平均精度(AP Across Scales),用于衡量不同尺度目標(biāo)的平均精度,包括APS,APM和APL3 個指標(biāo)。APS表示小目標(biāo)的平均檢測精度,目標(biāo)區(qū)域像素點(diǎn)個數(shù)小于322;APM表示中等目標(biāo)的平均檢測精度,目標(biāo)區(qū)域像素點(diǎn)個數(shù)大于322,小于962;APL表示大目標(biāo)的平均檢測精度,即目標(biāo)區(qū)域像素點(diǎn)個數(shù)大于962。
第3 類為平均召回率(Average Recall,AR),是在每張圖片固定檢測目標(biāo)數(shù)量的情況下計算出的最大召回率,且該指標(biāo)是在不同類別和IoU 閾值上取平均之后的結(jié)果,包括 ARMAX=1,ARMAX=10和 ARMAX=1003 個指標(biāo),MAX為固定的檢測數(shù)量。
第4 類為跨尺度平均召回率(AR Across Scales),與 AP Across Scales 類似,包括 ARS,ARM和 ARL3 個指標(biāo),表示在不同大小檢測區(qū)域下的平均召回率。
本文基于Cascade R-CNN 的翻漿冒泥檢測模型的COCO評價指標(biāo)見表3。
表3 基于Cascade R?CNN病害檢測評價指標(biāo)
翻漿冒泥病害識別結(jié)果見圖3??芍?,模型檢測出的翻漿冒泥病害具有較高的置信度,框選區(qū)域與病害所在區(qū)域基本一致,并且多目標(biāo)區(qū)域可準(zhǔn)確進(jìn)行分割。
圖3 翻漿冒泥病害識別結(jié)果
為進(jìn)一步檢驗(yàn)本文模型性能,進(jìn)行了多組對比試驗(yàn),見表4。
表4 模型性能對比試驗(yàn)
由表4可知,Cascade R-CNN 在病害數(shù)據(jù)集上比Faster R-CNN 取得了更高的識別精度。經(jīng)過改進(jìn)后的Cascade R-CNN 模型在檢測精度上均有不同程度的提升,其中數(shù)據(jù)增強(qiáng)改進(jìn)方法的提升效果最顯著,性能提升率為1.7%,綜合2 種改進(jìn)方法的模型,性能提升率為3.5%。
本文提出了一種基于新型目標(biāo)檢測架構(gòu)Cascade R-CNN 的鐵路翻漿冒泥病害識別方法,并根據(jù)目標(biāo)的特點(diǎn)采用Soft-NMS 和數(shù)據(jù)增強(qiáng)方法對Cascade R-CNN進(jìn)行改進(jìn)。試驗(yàn)結(jié)果表明,改進(jìn)后的Cascade R-CNN檢測架構(gòu)在自制病害數(shù)據(jù)集上取得了43.7%的平均精度,可有效識別翻漿冒泥病害。