童千倩,李立明,鄭丹陽,楊 意,汪晨曦,鄭樹彬
(上海工程技術大學 城市軌道交通學院,上海 201620)
截止2020 年底,中國鐵路總保有量達到146.3×103km,營業里程總數達到128×103km,鐵路每萬平方公里的路網密度達到152.3 km,大規模的鐵路建設對鐵路基礎建設和維護保障提出了較高的需求[1]。維持軌道的幾何形位是鐵路建設工程與維護保障中重要的部分,軌道線路中,軌枕充當著承載列車負荷、分散鋼軌壓力至道床的中間角色,在列車運行中起到重要的作用。由于軌枕上截面的荷載彎矩大于軌枕的抗裂強度,易導致混凝土軌枕表面產生裂紋,若不及時檢修,會引起混凝土壓潰,導致軌枕失效,嚴重地影響軌枕的使用壽命,威脅軌道交通的行車安全[2]。目前,軌枕裂紋的檢測方法主要依靠人工進行,而人工巡檢的主觀性較強,檢測效率低[3]。近年來,部分學者將無損檢測,如物理檢測手段與計算機檢測等手段運用到裂紋檢測中。
物理檢測通常從聲、光、熱、磁等角度提出檢測方法,對混凝土結構表面的微小異常進行判斷,典型的物理無損檢測方法,如:聲發射技術,散斑干涉技術,紅外檢測技術等。但是物理檢測方法對環境要求較高,檢測成本高,具有一定的局限性,例如:聲發射技術需要一定的聲耦合,需要處于應力狀態,紅外檢測通常需要設備體積較大的儀器,檢測環境也有嚴格的限制[4]。計算機檢測通常經過圖像預處理,圖像特征提取,圖像特征處理,最終得到裂紋檢測結果,具有低成本,高效率的特點。隨著機器視覺技術與深度學習技術的發展,目標檢測技術在軌道裂紋檢測中應用廣泛,例如Faster R-CNN,SSD,YOLO等,已經在裂紋圖像檢測方面取得了一定的檢測成果。目前,Cha 等提出了一種基于Faster R-CNN 的混凝土裂紋檢測方法,該種優化后的Faster R-CNN網絡能夠在多分類的條件下快速地提取裂紋特征,達到較為精確的檢測結果[5];Mandal 等基于DCNN對道路混凝土裂紋提出了一種自動化的檢測方法,但檢測精度較低[6];上述方法均針對路面裂紋提出,在有砟軌道的實際運用中取得的效果較差,Li等基于改進的YOLO 網絡,疊加了原始YOLO 中淺層卷積結構的低層特征,提取了深層卷積網絡中的抽象語義特征,提高了軌道板裂紋的檢測精度,增強了小目標和重疊目標的檢測能力,但是由于軌道板數據集的背景信息單一,該方法的通用性較差[7];曹建斌通過結合CF-Net 以及FastCrack模型的兩階段定位法,能滿足自動檢測軌枕裂紋的需求,但是其召回率與檢測速度還需進一步的提升[8]。
針對小目標裂紋檢測的方法存在通用性差,精度低,召回率低,檢測速度慢的問題,本文設計了一種基于YOLOv3 改進算法的軌枕裂紋檢測模型,如圖1 所示。本模型首先使用灰度投影法結合經驗值定位軌枕坐標并分割軌枕,然后將注意力機制與空間金字塔池化引入本文所述改進的YOLOv3模型中,并改善了裂紋檢測損失函數,最終在保持速度的情況下,提高了檢測的精度。

圖1 基于YOLOv3 改進算法的軌枕裂紋檢測模型示意圖Fig.1 Schematic diagram of sleeper location segmentation and crack detection method
由于道砟與軌枕的灰度存在差異,軌枕邊緣特征明顯,且軌枕水平放置于道床,垂直于鋼軌,同時軌枕尺寸也有著嚴格的規定,可以利用灰度投影法結合經驗值定位軌枕位置,具體流程圖如圖2 所示。
灰度投影法針對復雜背景的物體邊緣檢測有著不錯的效果,主要依賴波峰和波谷確定物體邊緣位置的坐標[9]。針對原圖中存在道砟背景的干擾,利用灰度投影法定位得到軌枕與光帶邊緣坐標,假設圖像表示為f(x,y),在y方向的灰度投影函數為fy(x),在x方向的灰度投影函數為fx(x),圖像中的像素點坐標為(x,y),則水平與垂直方向的灰度投影函數值為式(1)和式(2):

利用灰度投影法,計算出軌枕與光帶邊緣的位置,具體實驗結果如圖2 所示。圖2(a)表示有砟道床中鋼軌與軌枕原圖;圖2(b)表示水平投影的波谷表示軌枕與道砟的接觸邊緣;圖2(c)表示垂直投影得到的波峰表示鋼軌表面光帶所在位置,根據灰度投影的實驗結果能夠得到光帶與軌枕相交點的坐標。

圖2 灰度投影實驗結果圖Fig.2 Grayscale projection experimental results
由于在采集的道床圖片中,軌枕邊緣的像素寬度相對固定,首先通過灰度投影法得到邊緣坐標,然后疊加軌枕像素寬度的經驗值,即可得到軌枕頂點坐標,最終定位得到軌枕的位置并完成對軌枕的分割,如圖3 所示。

圖3 灰度投影分割效果圖Fig.3 Grayscale projection segmentation effect
YOLOv3 主要改善了主干網絡結構,融合多尺度特征,使用獨立的邏輯分類器,YOLOv3 網絡主要特征為:
(1)Darknet-53模塊的預測效率良好。基于Darknet-53 構建的主干網絡由于設計了類殘差快捷連接(shortcut connections),實現高速的浮點運算,使得預測效率更高[10];
(2)利用邏輯回歸輸出的多尺度預測。每個網格單元在3 個尺度上預測得到3 個物體框(bounding box),每個物體框包含(x,y,w,h,confidence)5 個基本參數,通過獨立的邏輯分類器得出標簽為裂紋的概率,根據上采樣倍數的不同,輸出不同尺度的張量尺寸,張量尺寸計算公式為N ×N ×[3×(5+1)]。
由于YOLOv3 網絡在復雜背景下對軌枕裂紋類小目標檢測精度低,本文設計了基于YOLOv3 改進算法,使得YOLOv3在保證快速的前提下,進一步提升在混凝土軌枕裂紋檢測方面的檢測精度。在算法中引入注意力機制中的擠壓與激勵模塊(Squeeze and Excitation,SE)和空間金字塔池化模塊(Spatial Pyramid Pooling,SPP),改進后的YOLOv3 網絡結構如圖4 所示。

圖4 改進的YOLOv3 結構圖Fig.4 Improved YOLOv3 structure diagram
由于軌枕裂紋特征存在微小細長、形態多樣、與混凝土軌枕背景相似度高等的特點,傳統算法存在提取軌枕裂紋特征精確度低等缺點,本算法在YOLOv3 主干網絡末端,引入注意力機制中的擠壓與激活模塊,改善對裂紋特征提取的精度,SE模塊的結構如圖5 所示。

圖5 擠壓與激勵模塊原理Fig.5 Principle of extrusion and excitation module
注意力機制的特點在于其經過特殊設計參數配置,有助于減少無效信息冗余,迅速提取關鍵特征,所以能夠大幅度提高準確率[11]。引入的注意力機制中的擠壓與激勵模塊,能夠快速、準確地提取到關鍵的軌枕裂紋特征。擠壓與激勵模塊首先經過擠壓操作(Squeeze),計算公式(3)如下:

其中,uc表示輸出軌枕圖像中通道的特征;Vc表示軌枕圖像中第c個學習的濾波器的參數;X表示輸入通道特征;*表示卷積運算。
擠壓與激勵模塊經過1 個全局平均池化層,將軌枕裂紋圖像轉化為一個1×1×1 024 的向量,該向量代表了軌枕圖片中全局的特征通道分布情況,然后放入2 個以全連接層和激活函數為單位的小型模塊,針對軌枕裂紋的特征圖進行激活(Excitation),最后統一對通道進行加權操作,輸出軌枕裂紋特征圖。此外,設有殘差模塊確保有效訓練,使得全局特征聚焦于軌枕裂紋的信息特征,有效抑制軌枕圖像中其他冗余的特征干擾[12]。
由于混凝土軌枕在采集的圖像中的大小不盡相同,原有的池化層(Pooling)會丟失圖片信息,導致裂紋檢測效果不理想。如圖6 所示,在建立主干網絡結構后,通過引入空間金字塔池化操作,能夠最終輸出固定的圖片尺寸,不丟失主要特征,不受輸入軌枕圖片的尺寸影響,不破壞原始圖像比例[13]。首先,將輸入的軌枕圖像經過一次卷積運算;其次,特征圖經過5×5,9×9,13×13 這3 個尺度的池化窗口(pooling window);最后,輸出一個同樣長度的池化特征(scale-invariance)。

圖6 空間金字塔池化模塊Fig.6 Pooling module of spatial pyramid
軌枕裂紋預測損失函數由回歸預測誤差Lregression,置信度誤差Lconfidence以及分類誤差Lclassification3 部分組成[14]。其中,置信度誤差由邊框內存在軌枕裂紋和不存在軌枕裂紋兩種情況疊加計算得到;軌枕裂紋分類誤差是基于網格內存在裂紋的前提計算的,若邊框內存在軌枕裂紋則分類誤差值為1,總體公式(4)如下:

在軌枕裂紋回歸預測的損失函數部分,Yolov3使用二分交叉熵損失函數(binary cross-entropy loss),但該函數在誤差較大的情況下,會因為小幅度地調整參數,使得訓練速度更緩慢。此外,二分交叉熵損失函數較為復雜,運算量較大。
出于對模型收斂速度和精度的考慮,將CIoU損失函數(Complete Intersection over Union Loss,CIoU Loss)作為新的軌枕裂紋回歸預測的損失函數,該函數的示意圖如圖7 所示。

圖7 CIoU 損失函數示意圖Fig.7 Schematic diagram of CIoU loss function
CIoU部分的損失函數公式(5)為:

其中,IoU表示預測框和實際框的重疊度;ρ2(·)為預測框與實際框的歐式距離;b和bgt分別表示預測框與實際框的中心點位置;c為預測框與實際框組合部分最小外矩形框的對角線;αv是一個帶有平衡參數α且用于衡量寬高比相似性v的影響因子。
本文的數據集的構建是基于有砟軌道上拍攝和采集的軌枕圖片,軌枕狀態分為有裂紋和無裂紋兩種,本實驗獲取了共計1 000張裂紋數據集,根據軌枕狀態與裂紋條數將其分類,其中含有軌枕裂紋的圖像共210 張,不含軌枕裂紋的圖像790 張,以7∶3 的訓練集與測試集的比例開展實驗。本實驗是在Win10 操作系統,雙CPU Intel Xeon Silver 4214 2.2 GHz,PyTorch 框架以及PyCharm 的集成開發環境下進行。
針對灰度投影法分割后的軌枕圖像,本實驗對訓練參數初始值的設置值見表1。

表1 初始參數值的設定Tab.1 Setting of initial parameter values
通過灰度定位法針對道床定位并分割軌枕,用注意力機制中的擠壓與激活模塊提取重要特征,引入空間金字塔池化,改進損失函數,最終利用改進的YOLOv3 網絡完成對軌枕裂紋的檢測。評價指標主要從精確度與速度兩個角度分析,用到的指標有精確度(Precision,P),召回率(Recall,R),平均準確率(Mean Average Precision,MAP),每秒傳輸幀數(Frames Per Second,FPS)。實驗結果的精確度,召回率和平均準確率的公式(6)~(8)如下:

在精確度與召回率的公式中,Tp(True Positive)表示人工標定為軌枕裂紋,實際被判定存在軌枕裂紋的樣本數量;TN(False Positive)表示人工標定背景區域,實際被判定存在軌枕裂紋的樣本數量;FN(False Negative)為人工標定背景區域,實際被判定不存在軌枕裂紋的樣本數量。在平均準確率的公式中,N表示裂紋分類數量,p(r)表示精確度與召回率的關系函數。
基于本算法實現的軌枕裂紋檢測效果如圖8 所示。針對輸入的整體道床圖像與灰度投影法分割后的軌枕圖像,分別采用YOLOv3與本算法進行對比實驗,結果見表2。經過軌枕區域提取后裂紋檢測在YOLOv3 網絡上精確度提升了35.0%,召回率提升11.4%,MAP 提升22.4%,證明了軌枕區域提取對軌枕裂紋檢測的必要性;將灰度投影法提取的軌枕圖像,輸入改進的YOLOv3 裂紋檢測網絡中,裂紋精確度較YOLOv3 網絡提升了16.9%,召回率提升了3.5%,MAP 提升了5.9%,證明了本算法在軌枕裂紋檢測精度具有顯著的優越性。

圖8 軌枕裂紋檢測效果圖Fig.8 Effects of sleeper crack detection

表2 實驗量化結果對比Tab.2 Comparison of experimental results
(1)本文提出了一種基于YOLOv3 改進算法的軌枕裂紋檢測方法。首先,通過灰度投影法對道床定位并針對軌枕進行了分割;其次,通過改進的YOLOv3 算法對分割得到的軌枕圖像進行軌枕裂紋的精確檢測。
(2)針對軌枕裂紋檢測任務,改進了YOLOv3算法。通過加入注意力機制中的擠壓與激活模塊,提取軌枕裂紋的重要特征,使得特征提取層部分能夠對軌枕裂紋進行精確的定位;引入空間金字塔池化,實現輸出相同尺寸的特征圖,改進損失函數,最終實現對YOLOv3 的改進。
(3)經實驗驗證,結果表明對軌枕裂紋的檢測精確度達到96.3%,召回率達到91.2%,MAP 達到91.5%,FPS 達到76.6 張/s,檢測精確度、召回率和MAP在有砟軌道的軌枕裂紋數據集的表現提升顯著。