孫明華,楊 媛,李淵博
(西安理工大學自動化與信息工程學院,陜西 西安 710048)
地鐵隧道內需要檢測的對象主要包括軌道與隧道。相比于地面鐵路巡檢,地鐵隧道內的環境固定、異物入侵概率較低,同時可見度較低,需要靠隧道壁兩側的LED燈提供照明。國內外提出了很多自動鐵路異常檢測和隧道評估的方法:Rodriguez等人[1]提出了一種使用霍夫變換完成軌道內異物檢測的系統,該系統通過攝像機采集圖像能夠實時地檢測障礙物,并且在發現異物時能夠發出警報;Gibert 等人[2]使用計算機視覺和模式識別方法完成對軌道的自動檢查,該方法通過在多任務學習框架內組合多個檢測器,能夠更準確地檢測鐵路枕木和軌道扣件上的缺陷。但是,傳統圖像特征提取的方法容易受到場景和光線的影響,無法滿足智能分析的需要。而深度學習憑借著其針對特定問題自動構建最合適特征的優勢,在圖像分析領域相對于傳統圖像處理方法有著巨大優勢。
將深度學習技術應用于自動化異常檢測已經成為一種趨勢。Xu等人[3]提出了一種基于深度學習的方法來識別鐵路路基探測數據的探地雷達剖面缺陷,通過識別各種缺陷類型的比較實驗證明了該方法的魯棒性。Santur等人[4]利用3D激光相機和深度學習的方法,提出了一種用于鐵路表面檢測的軟硬件架構,其中3D激光相機能夠快速檢測鐵路表面和橫向的缺陷,而深度學習具有極高的特征表達能力。Zhang等人[5]提出了一種基于卷積神經網絡和多聲發射事件概率分析的鐵路軌道狀況監測的方法,該方法消除了一次性分類引起的檢測誤差,提高了分類精度。Makantasis等人[6]提出了一種基于深度學習的全自動隧道評估方法。該方法使用單個單目相機采集原始輸入信息,利用卷積神經網絡構建高級特征,結果顯示了深度學習架構對隧道缺陷檢測問題的適用性。Protopapadakis等人[7]提出了一種用于隧道評估的機器人自動檢查方法,使用卷積神經網絡完成視覺檢查。整個系統已經在鐵路和公路隧道中進行試用,顯示了檢查自動化領域研究的活躍性。
自2012年以來,深度學習技術飛速發展,卷積神經網絡模型也不斷推陳出新。從最初的AlexNet[8]到VGG[9],從GoogleNET[10]到ResNet[11]。網絡模型的結構也從單分支演變為多分支,層數不斷加深,計算量不斷增加,特征提取能力不斷加強。
網絡層數的加深雖然使網絡的性能得到了提高,但是同時也帶來了效率問題:網絡模型的大小與單幅圖像的處理速度。對于效率問題,通常的提升方法是進行模型壓縮(Model Compression),即對已經訓練好的網絡模型進行壓縮,使得網絡攜帶更少的參數,從而改善模型大小以及處理速度,但是這種方法會對網絡模型的準確率造成影響。相比于對訓練后保存的模型進行處理,輕量化模型的設計另辟蹊徑。輕量化網絡模型也具有各種不同的架構設計,如使用fire module 的SqueezeNet[12]、使用深度可分離卷積的MobileNet_v1[13]與MobileNet_v2[14]、使用分組卷積和通道混洗的ShuffleNet[15]。這類網絡模型的主要思想在于使用更高效的計算方式(主要是改進卷積方式),從而在減少網絡參數的同時保持網絡的性能。
為了完成在地鐵隧道環境中的實時異常檢測,所構建的卷積神經網絡需要在保證識別準確率的前提下縮減網絡的參數量,加快網絡的處理速度。即在控制卷積神經網絡計算量的前提下,增強網絡的特征提取能力。GoogleNet網絡由多個inception結構堆疊而成,該網絡的特征提取能力強但是計算量較大;而MobileNet網絡的計算效率高但是網絡的拓撲結構采用VGG的思想,特征提取能力較弱。并且2種網絡中都使用了1×1卷積,因此將2種網絡的優勢互補成為了一種可行的選擇,即使用深度可分離卷積對inception結構進行改進。
地鐵隧道巡檢視頻分析系統的工作流程如圖1所示,其由2部分構成: 左半部分是對網絡模型的訓練與優化,其中還包括對數據集的劃分和圖像的預處理。本文通過設置不同的訓練輪數EPOCHS、初始學習率INIT_LR、批大小BS等超參數對SubwayNet網絡模型進行多次訓練,記錄實驗結果。SubwayNet網絡模型是使用改進后的inspection結構構成的輕量化網絡。通過實驗結果的對比不斷調整各種超參數以獲得更好的分類效果,從而完成網絡模型的優化,保存實驗中效果最優的網絡模型參數供分析系統調用。右半部分則是分析系統。運行分析系統軟件,自動讀取待檢測的視頻并對視頻中待分析的圖像進行預處理;然后調用已保存的網絡模型,將分析結果反饋到系統中;最后預測類別與置信度的分析結果會在系統界面中直觀顯示,并在發現異常時進行聲音報警。

Figure 1 Workflow of video analysis system for subway tunnel inspection圖1 地鐵隧道巡檢視頻分析系統工作流程
本文所采用的地鐵隧道視頻均采集于地鐵線路實景。制作數據集時首先使用Python中的OpenCV庫將采集到的1080×1920的視頻數據按照10幀的間隔頻率提取圖像。然后結合日常地鐵運營檢修中出現的異常情況將數據集分為正常、軌道內存在異物、隧道壁滲漏水、鋼軌扣件螺絲緊固、鋼軌扣件螺絲松動5大類。之后將對視頻中提取到的圖像進行人工判斷分類,分別為Normal、Object、Water、Fasten、Loosen,作為Subway-5數據集,用于后續網絡模型的訓練和測試,訓練和測試圖像所占比例為8∶2。圖2所示為5種不同類別的圖像示例(方框為后期標注,真實數據無方框)。

Figure 2 Image samples of Subway-5 dataset圖2 Subway-5數據集圖像示例
在數據量有限的情況下,可能存在偏斜類的問題,即訓練網絡模型時不同樣本的數目相差很大,最終對網絡模型的泛化能力產生影響。在本數據集中表現為正常情況與鋼軌扣件螺絲緊固情況類別的樣本數遠多于其余異常情況的樣本數,如果不進行處理,那么訓練后的網絡模型即使將所有圖像都判別為以上2類也能有較高的準確率,所以本文去除Normal、Fasten文件夾中差異不明顯的圖像。最終選定的每類圖像的數目都為100幅,Subway-5數據集共有5類總計500幅圖像。
數據集中的圖像在用于訓練和預測之前還需要對其進行預處理。本文主要采用以下3種預處理方法:
(1)圖像尺寸的調整:將數據集中待輸入網絡模型的圖像統一調整為320×320的尺寸,便于網絡模型的訓練和測試。
(2)數據的歸一化處理:圖像的像素為[0,255],采用對所有像素值除以255的方法將圖像的原始像素值縮放到[0,1],加快網絡模型使用梯度下降法求得最優解的速度。
(3)數據增強(Data Augmentation)[16]處理:本文在原始Subway-5數據集的基礎上對圖像進行剪切、縮放、隨機旋轉、隨機偏移等處理。數據增強是一種常用的技術,有利于網絡模型在小數據集上的訓練,能夠加速擬合或者充當正規化項,從而減少過擬合并增強網絡模型的泛化能力。
預處理方法(1)和(2)在網絡模型的訓練和預測階段都需要實行,而預處理方法(3)只在訓練時使用,預測時不使用。
利用MobileNet_v1網絡模型中使用的深度可分離卷積對inception結構進行改進,改進后的結構稱為Subway_inception_v1結構,如圖3所示。在inception結構的基礎上使用卷積窗口大小為3×3的深度卷積 (Depthwise Conv)替換3×3標準卷積并在之后增加1×1標準卷積,而且inception結構中3×3卷積之前的1×1卷積操作具有降維和通道間特征融合的作用,在進行深度卷積操作之前就能夠融合不同層間的特征信息,更好地緩解了深度可分離卷積帶來的層間信息流通不暢的問題。

Figure 3 Subway_inception_v1 structure圖3 Subway_inception_v1結構圖
考慮到MobileNet_v2網絡模型在 MobileNet_v1網絡模型基礎上做出的改進:在基本構建塊中引入ResNet的skip connection跳躍連接結構,本文對Subway_inception_v1結構進行改進提出了Subway_inception_v2結構,如圖4所示。Subway_inception_v2結構在深度可分離卷積的中間2個通路分支中引入跳躍連接。這種改進只增加了2個跳躍連接少量的相加運算,對總體結構的計算量無顯著影響,卻能夠保留更多的之前層提取到的特征信息。

Figure 4 Subway_inception_v2 structure diagram圖4 Subway_inception_v2結構圖

Figure 5 SubwayNet model圖5 SubwayNet模型
本文使用提出的2種Subway_inception結構分別設計了2種對應的SubwayNet網絡。如果直接使用較深的網絡結構會出現梯度消失的問題,而層數太少則會導致分類準確率較低。SubwayNet_v1網絡模型的核心是Subway_inception_v1結構,因此需要通過對比實驗來確定其數量。對于卷積神經網絡模型來說,通常層數越深,卷積核的數目越多,SubwayNet_v1網絡模型也是如此,增加的每個Subway_inception_v1結構都有比上一個結構更多的卷積核個數。具有不同Subway_inception_v1結構數量的網絡模型在Subway-5數據集上的分類準確率如表1所示。從表1中可以看出:當Subway_inception_v1結構數量為2,3時,準確率較低;當Subway_inception_v1結構數量為4時,準確率相比之前有顯著提升,達到了94%;當Subway_inception_v1結構數量為5時,準確率相比Subway_inception_v1結構數量為4時提升了1%,但是參數量是之前的2.5倍。在準確率相近時需要對比模型的計算速度,在本文的神經網絡模型中,Subway_inception_v1結構數量越少就意味著參數量越少,計算速度就越快,模型的復雜度越低。因此,出于對模型準確率和計算速度的綜合考量,本文所構建的SubwayNet_v1網絡模型具有4個Subway_inception_v1結構,如圖5所示。

Table 1 Comparison of the number of different subway_inception_v1 structure表1 不同Subway_inception_v1結構數量的效果對比
由于Subway_inception_v2結構只是在Subway_inception_v1結構的基礎上進行了部分改進,SubwayNet_v2與 SubwayNet_v1網絡模型的結構完全相同,只是將所有Subway_inception_v1結構替換為Subway_inception_v2結構。
圖5為本文提出的SubwayNet網絡模型結構。輸入是尺寸為320×320×3的圖像,首先經過卷積窗口尺寸為7×7、步長為2的標準卷積(conv)操作進行初步的特征提??;然后通過窗口尺寸為3×3、步長為2的最大池化(Max Pooling)操作來減少數據量,保留有效特征;之后將得到的特征圖按順序依次輸入到4個Subway_inception結構中進行多尺度的特征提取與多通道的特征融合;在全連接層(FC)之前添加了全局平均池化(Global Average Pooling)[17]操作AvgPooling,加入全局平均池化相比于直接使用全連接層,可在減少網絡參數的同時降低過擬合的幾率;最后經由Softmax分類器得到相關類別概率的輸出。
為了使網絡模型檢測結果的顯示更加直觀,方便人機交互,本文使用Pycharm軟件中的Qt Designer工具制作了相應的圖形用戶界面。最終生成的圖形用戶界面包含:界面中間的視頻顯示區域,用于顯示預測結果和可信度的Detect_Result窗口。open_camera為打開視頻按鈕,點擊后系統開始加載保存的網絡模型和待分析的地鐵隧道巡檢視頻,加載完成后開始實時分析。close_camera為關閉視頻按鈕,點擊后系統停止視頻的播放與分析。
原始的網絡模型只能提供分類結果的顯示,而在檢測到異常狀況時聲音報警提示也十分重要。所以本文使用Python的第三方庫pygame為系統添加了發現異常狀況時聲音報警的功能。當檢測到視頻中的圖像類別為軌道內存在異物、隧道壁滲漏水、鋼軌扣件螺絲松動時,分別播放3種不同的報警聲音,便于提醒和區分。
由于所有的代碼都使用Python語言編寫,在運行時就需要通過命令行進行操作,這樣會降低地鐵隧道巡檢視頻分析系統應用的便利性。所以,本文使用Python的第三方庫pyinstaller將所需文件打包生成Detector.exe可執行程序,便于其在電腦端移植使用。使用鼠標雙擊打開程序就會出現圖形用戶界面,點擊open_camera按鈕即可對視頻進行分析,相比通過命令行進行操作,操作更為便捷和易用。
實驗是在Ubuntu16.04版本的 Amax Sever 環境中進行的,Amax Sever包括2塊Intel Xeon E5-2620V4 CPU、4塊NVIDIA TESLA-K80 GPU。本文使用Keras深度學習框架設計網絡模型。Keras使用Tensorflow和theano作為后端的高級封裝庫,相當于在二者基礎上構建的高級API,雖然靈活性有所降低但是易用性強,可以很方便地對網絡模型進行修改。本文使用其中的Tensorflow作為后端。網絡模型的訓練使用AdamOptimizer,它是一種自適應學習率的優化算法,能夠自動調節學習率以加速網絡收斂。
為了將SubwayNet與其它輕量化網絡模型比較,本文根據原始論文復現了SqueezeNet、MobileNet_v1、MobileNet_v2、ShuffleNet 4種輕量化網絡模型,并使用Subway-5數據集作為輸入進行對比實驗,輸入圖像尺寸均為320×320×3。
網絡模型參數量與分類準確率如表2所示,從表2中可以看出:SubwayNet_v1在Subway-5數據集上的準確率能夠達到94%;SubwayNet_v2 在SubwayNet_v1的基礎上將準確率提升了2%,達到96%,而參數量保持不變;剩余4種輕量化網絡模型中MobileNet_v2的準確率較高但也只達到了90%,而參數量卻是SubwayNet_v2的8.4倍,SqueezeNet的參數量與SubwayNet_v2的參數量數量級相同,但是準確率只能達到80%。

Table 2 Different network models classification accuracy and parameter quantity表2 不同網絡模型分類準確率與參數量
網絡模型大小與處理單幅320×320大小的地鐵隧道圖像的速度的關系如表3所示,測試分別在單塊Intel Xeon E5-2620V4 CPU下和單塊NVIDIA TESLA-K80 GPU下進行,其中,model_size表示將模型保存為.h5文件所占用的內存大小。處理時間為多幅圖像的處理時間求平均并保留小數點后4位,幀速率將計算結果向下取整。根據視覺暫留原理,視頻的圖像變化速度需要大于24 fps畫面才能流暢平滑。從表3中可以看出,在本文的實驗條件下:各種網絡模型中SubwayNet_v1網絡模型所占用的內存最少,僅為3.6 MB,處理速度也最快,在CPU上能達到25 fps、在GPU上能達到52 fps;SubwayNet_v2由于添加了skip connection,計算量相比SubwayNet_v1略微增加,在CPU、GPU上的處理時間也略微增加,但網絡模型大小以及幀速率保持不變;剩余4種輕量化網絡模型中,MobileNet_v1網絡模型所占用的內存最多,為37.3 MB,是SubwayNet_v1網絡模型的10倍,處理速度也最慢,在CPU上只能達到15 fps,不滿足視覺連續性的要求。
為了更好地評估2種SubwayNet對Subway-5數據集中5類圖像的分類效果,本文計算了2種網絡模型的準確率(Precision)、召回率(Recall)和F1值(F1_score)。
從表4中可以看出,SubwayNet_v1網絡模型能夠精準地檢測鋼軌扣件螺絲緊固、鋼軌扣件螺絲松動、隧道壁滲漏水的情況,但是存在軌道內異物漏檢和正常狀態誤報為異常的情況。其中正常類的F1-score僅為0.88,異物類的F1-score僅為0.84。

Table 3 Network model size and processing speed表3 網絡模型大小與處理速度

Table 4 Classification effect of SubwayNet_v1表4 SubwayNet_v1的分類效果
從表5中可以看出,相比于SubwayNet_v1網絡模型,SubwayNet_v2網絡模型雖然在鋼軌扣件螺絲緊固、鋼軌扣件螺絲松動2種情況中的識別準確率有所降低,但是整體5類情況的F1-score很高(最低為0.95)。這說明SubwayNet_v2網絡模型在Subway-5數據集上的綜合性能優于SubwayNet_v1網絡模型的,在實際應用中的可靠性更高。

Table 5 Classification effect of SubwayNet_v2表5 SubwayNet_v2的分類效果
為了進一步分析綜合性能較高的SubwayNet_v2網絡模型提取到的地鐵巡檢圖像的特征,本文將Subway-5數據集中5幅不同類別的測試圖像分別輸入到訓練后保存的網絡模型中,并對網絡模型中部分層得到的特征圖進行了可視化處理,如圖6所示。從圖6中可以看出:測試圖像在經過第1次Conv_7×7卷積操作后過濾了大量無關信息并保留了圖像的紋理等主要特征,此時特征圖的尺寸變為160×160;在經過第1個Subway_inception_v2結構后特征圖的抽象程度進一步提升,此時特征圖的尺寸變為80×80;在經過第4個Subway_inception_v2結構后特征圖的抽象程度極高,已無法進行視覺上的直觀分析,此時特征圖的尺寸變為20×20。而且從Object類中還能夠看出光線對于網絡模型的特征提取效果影響極大,網絡模型提取到了隧道壁上LED燈的特征以及地面上手電光線的特征,這會減弱軌道內異物特征對于最終分類結果的影響。

Figure 6 Feature map visualization圖6 特征圖可視化
為了更好地分析SubwayNet_v2網絡模型的圖像分類依據,本文還可視化了類激活圖CAM(Class Activation Map)并疊加在輸入圖像上生成類激活熱圖(Heat Map)。類激活圖是與特定輸出類別關聯分數的二維網格,其針對于輸入圖像中的每個像素位置進行計算,并指示每個像素位置對于所判定結果的類的重要程度,如圖7所示。從圖7中可以看出:SubwayNet_v2網絡模型對正常情況圖像的判別依據是軌道的中間部分以及側邊隧道壁的部分;對隧道壁滲漏水情況的判別依據是側邊隧道壁滲漏水的部分以及軌道的中間部分;對于鋼軌扣件螺絲緊固以及鋼軌扣件螺絲松動情況的判別依據是鋼軌扣件的部分。以上情況基本符合人工巡檢的檢查位置,但是對于軌道內存在異物的情況,系統卻把隧道壁上的LED燈的部分當做判別依據,說明網絡沒有正確地學習到相應的異物特征。這與Subway-5數據集中軌道內存在異物類別的圖像數據采集的位置有關,這段隧道內的亮度較低,燈光的亮度成為了主要影響因子。根據以往的深度學習研究經驗,采集更多不同隧道環境下的軌道內異物的圖像數據,增加同類數據的差異性可能會使效果得到改善。

Figure 7 Class activation map and heat map visualization圖7 類激活圖和熱度圖可視化
由于最終地鐵隧道巡檢視頻分析系統的結果是以Python文件打包后得到的應用軟件中視頻的形式呈現,因此本文截取了一段測試視頻中的5種不同情況進行說明,如圖8所示(箭頭為后期標注)。從5種情況的分析結果中能夠看出,分析系統具有較高的準確率,并且在情況2、情況3和情況5中有警報聲,與設置相符。

Figure 8 Analysis system operation results圖8 分析系統運行結果
本文利用MobileNet中的深度可分離卷積與ResNet中的跳躍連接來改進GoogleNet的inception結構,提出了2種Subway_inception結構,建立了2種SubwayNet卷積神經網絡模型,并構建了完整的地鐵隧道巡檢視頻分析系統。通過不同輕量化網絡模型在Subway-5數據集上的效果對比檢驗了2種SubwayNet的性能,還通過可視化特征圖和類激活圖分析了SubwayNet_v2網絡模型對于圖像特征的提取效果。在文中的實驗條件下,SubwayNet_v2網絡模型的準確率能夠達到96%,圖像處理速度能夠達到52 fps,滿足視頻實時、準確處理分析的要求。本文為地鐵隧道日常巡檢,保障地鐵的安全運營提供了一種新方法。對算法進行改進,在分類的基礎上完成異常狀態位置的檢測是下一步的改進方向。