胡珉,周顯威,高新聞
(1. 上海大學 悉尼工商學院,上海 201800;2. 上海大學 上海城建集團建筑產業化研究中心,上海 200072;3. 上海大學 機電工程與自動化學院,上海 200444)
目前,公路隧道的病害檢測主要依賴人工巡檢,這種檢測方式耗時、耗力、低效,而且惡劣的巡檢環境增加巡檢難度[1-2],存在遺漏病害的情況[3-11].用自動化的巡檢設備代替人工采集病害,結合圖像處理方法識別病害是目前的主要研究方向[12-23],但基于圖像的檢測需要對圖像進行合適的預處理.在基于圖像處理的病害檢測方法中,目前效果最好的是基于深度神經網絡的方法,為了能夠精確計算病害嚴重程度,主要使用全卷積網絡(FCN)[24]對圖像進行語義分割[23].FCN能夠對每個像素點進行分類.在病害檢測研究中,FCN存在兩個問題:1) 結果不夠精細[25],處理結果過于模糊,對細節不敏感;2) 沒有考慮像素之間的關系,忽略了空間規整的步驟[26].問題1)主要通過多重上采樣解決[24],問題2)可以結合隨機場改善[25-26].
針對上述問題,本文設計合理的圖像預處理方法,建立基于FCN的病害識別模型.結合FCN模型與馬爾可夫隨機場(MRF),完善FCN的空間規整的步驟.

圖1 病害檢測流程Fig.1 Defect detection procedure
隧道病害檢測主要是從圖像中獲取特征,再通過模式識別的方法判斷是否存在病害.在病害檢測的方法中,深度神經網絡能夠全面提取圖像特征,又能夠快速進行模式識別,因此,使用深度學習方法作為病害檢測的主要模型.考慮到在數據采集的過程中,數據的采集方式、采樣頻率及噪聲干擾會影響數據質量,需要在病害檢測之前先對數據進行預處理.
病害檢測的整體流程,如圖1所示.深度學習病害檢測模型的設計考慮到模型需要進行訓練,因此,應用的過程可以分為模型訓練和模型應用.由于數據采集過程中存在問題,首先,需要根據采集數據的特點,對圖像進行一系列數據預處理,構建隧道病害數據并進行標記;然后,再訓練病害檢測模型.由于初始采集的病害數量較少,故使用數據增強技術擴充數據集,獲得足夠的數據用于模型訓練.模型應用處理日常巡檢中產生的數據,完成數據預處理,接下來直接進行病害檢測.由于無需對模型參數進行優化,沒有數據增強的步驟.

圖2 數據預處理流程Fig.2 Data preprocess procedure
在數據預處理過程中,由于所采集的視頻圖像存在數據冗余、鏡頭畸變、噪聲等問題,需要進行適當的預處理后才能應用.考慮到冗余數據的存在,若先進行畸變矯正則會導致預處理時間增加.而先截取關鍵幀不僅能夠大幅提高預處理效率,還能在截取關鍵幀的步驟同時先消除噪聲,防止噪聲對后續步驟的影響.因此,將視頻數據的預處理分為4個步驟:采集數據、關鍵幀截取、畸變校正和數據增強.數據預處理流程,如圖2所示.圖2中:數據增強步驟僅用于訓練數據集的擴充,而在模型的實際使用中不存在此步驟.
1.2.1 采集數據 借助自主研發的巡檢機器采集的視頻數據來自上海市大連路隧道,適用于自動化的采集模式,在數據采集的過程中,為了獲取完整的圖像信息,往往采用視頻錄制的方式.另外,從數據特征的角度,視頻相當于圖像數據的特征增加了時間步長,獲取時間維度的數據可以更好地應用于離線定位,更加符合工業應用的需要.
視頻的錄制是以視頻幀的方式記錄信息,視頻的錄制幀率一般是24幀·s-1,有巨大信息冗余.為了提高檢測效率,避免重復的數據處理,需要從視頻中截取特定位置的圖像,將其作為檢測模型的輸入圖像,也就是關鍵幀.關鍵幀并非指含有病害的幀,而是從視頻中挑選特定位置的幀,關鍵幀之間應當在地理上近似等距,這樣既減少了不必要的數據處理,又利于確定病害的空間位置,其作為病害的定位依據,滿足了工程需求.
1.2.2 關鍵幀截取 視頻關鍵幀截取是為了從視頻中提取重要信息,排除冗余數據.目前廣泛使用的關鍵幀提取算法主要是基于信息熵[27]和圖像熵[28]分類方法,這些方法將關鍵幀視為異常,計算不同鏡頭的信息熵,結合靜態的局部處理,以異常檢測的方式區分冗余幀和關鍵幀.基于復雜特征和信息熵的方法需要進行大量的圖像比對和特征距離計算,處理效率不高,因而在實際應用中,需要結合應用場景,選擇顯著的、高效的特征提取方法和特征距離計算方法.
由于隧道由環組成,環面在視頻中寬度一致,排列有序,因此,每個環面是最合適的關鍵幀,可以將環面邊緣作為識別的特征,通過對比不同圖像中的邊緣特征,計算特征距離以判斷是否存在病害.由于Canny算子在邊緣檢測中檢測效率高、效果好且應用廣泛[29],因此,文中使用Canny算子作為環面邊緣特征提取的模板.該方法僅適用于邊緣特征明顯的關鍵幀截取,但處理效率和效果較好,對于應用場景是最合適的方法.關鍵幀截取有以下3個步驟.
步驟1選擇標準圖作為關鍵幀的模板,將標準圖中的環面邊緣特征作為匹配關鍵幀的依據,因此,需要從視頻幀中選擇一組包含完整且不重復環面的圖像作為標準圖.標準圖符合以下特點:1) 同一環的4個邊緣線均完整地顯示在圖像中;2) 環面邊緣的中心位于或者鄰近圖像的中心點;3) 邊緣線沒有病害和干擾物,環面幾乎沒有病害和干擾物.
步驟2提取特征點集.灰度化標準圖后使用Canny濾波提取環面特征點集P,用T表示特征點總數.將特征點的灰度值Gn,n∈[1,T]按位置順序排列,形成新的特征點集P′,并記錄每個點的位置坐標Ln=(Xn,Yn),n∈[1,T].

(1)
1.2.3 畸變矯正 通過相機拍攝所采集的數據會產生光學畸變,廣角鏡頭的畸變尤其嚴重,但許多研究中往往會忽略畸變問題的處理.鏡頭畸變一般分為徑向畸變和棱鏡畸變,針對所使用相機的特點,采用實際應用廣泛的多項式法.鏡頭畸變校正使用了r=0處的泰勒展開的前幾項描述徑向畸變,由于研究中需要校正的圖片分辨率較大,因而采用了更為完整的多項式,對徑向畸變進行詳細描述,即
(3)
式(3)中:xdis和ydis是徑向畸變點在原圖上的位置坐標;xc和yc是該畸變點經過校正后坐標位置;k1~k6為徑向畸變系數;r為透鏡半徑.切向畸變為
(4)
畸變參數模型需要考慮徑向畸變和切向畸變,結合相機的小孔成像模型,以反向投影的角度反向思考,從畸變后的坐標點反推出未發生畸變的坐標點,畸變校正的模型描述為
(5)
式(5)中:k1~k6為徑向畸變參數;p1,p2為切向畸變參數;xdis和ydis是畸變點在原圖上的位置坐標(世界坐標系);x,y為相機坐標系的坐標;z為拍攝距離;R為旋轉矩陣;xc和yc是該畸變點經過校正后的實際坐標位置(圖像坐標系);u,v分別像素點在像素坐標系下的坐標;u0,v0為圖像的原點坐標;f為相機焦距;dx,dy為每個像素在圖像坐標系橫、縱方向的尺寸.
將標準標定模板(棋盤格)作為參照物,使用需要標定的相機拍攝模板.通過Harris角點識別獲取拍攝前后圖像的網格角點,計算網格點的坐標差,選擇特定的控制點,解出式(5)中的畸變參數,就可以明確畸變的變化關系.
標準的圖像中某一點坐標(X,Y),且X,Y均為整數,但畸變后,在畸變圖像上的位置基本上不是整數,所以需要用雙線性內插法進行插值處理.設點p(i+u,j+v)為畸變前圖像中落在畸變圖像上的點,且該點不在畸變圖坐標上,使用相鄰4個畸變坐標點P(i,j),P(i+1,j),P(i,j+1),P(i+1,j+1)進行雙線性內插值法計算,即
1.2.4 數據增強 對于深度學習神經網絡而言,數據量不足、類別不均衡會導致訓練不夠充分,容易產生過擬合現象.而在隧道病害識別的研究領域,深度學習的應用處于起步階段,沒有合適的數據集可用于訓練和測試,因此,在數據預處理之后,使用數據增強方法增加數據量.
一般來說,常用的用于增大圖像數據集的方法有保留標記變換圖像,變換包括以下5個方式:
1) 改變圖像亮度、飽和度、對比度;
2) 隨機重構目標大小;
3) 隨機裁剪、拉伸、切片;
4) 旋轉、翻折、仿射變換;
5) 隨機噪聲、模糊和扭曲.
通過兩步變換操作實現數據增強,首先,將畸變矯正后的圖像添加隨機的像素點擾動,其次,將原本1 920 px×1 080 px的圖像隨機裁剪成224 px×224 px大小,隨機翻折圖像(上下、左右或鏡像翻折隨機進行),隨機組合,形成新的1 920 px×1 080 px的圖像.通過監督,隨機生成原始數據量19倍的新圖像,總數據量擴充為原來的20倍.
至此,數據預處理及數據集的構建完成.由于深度學習模型依賴訓練樣本的數量,所以僅對常見的裂縫、滲漏水和破損3種病害進行目標檢測.排除其他病害,不同病害類別以3∶1隨機抽取,構建模型的訓練集和驗證集.
1.3.1 基礎模型 對于隧道病害檢測而言,從圖像級別的分類細化到像素級別的分類,使病害危險程度可以定量計算和評估.若使用目標檢測的神經網絡模型,僅能夠判斷病害的位置,無法進一步計算其嚴重程度(面積、寬度等).在現有的病害檢測研究中,薛亞東等[30]改進了GoogLeNet,并用于隧道內滲漏水、裂縫、拼縫、管線圖片的分類,相對于一般目標檢測模型效果更好.目標檢測的方法能夠找到病害,判斷病害類別,但是在實際應用中,還需要計算病害的嚴重程度,例如,裂縫的長度、寬度、滲漏水和破損的面積等,所以需要將檢測的精度細化到像素級別,從而進行圖像語義分割.
在現有的語義分割模型中,FCN應用于諸多領域中,并取得了顯著的研究成果.FCN是卷積神經網絡中的一種,能夠對每個像素點都進行預測,可以實現圖像像素點對點的分類[24].因此,選用FCN作為基礎模型.全卷積網絡架構圖,如圖3所示.
全卷積神經網絡對圖像進行語義分割,需要對圖像上的各個像素進行分類,上采樣過程是將最后輸出的熱力圖上采樣到原圖.上采樣類似卷積,在卷積之前,將輸入特征插值到更大的特征圖,然后,進行卷積.一般采用雙線性插值填充特征圖,這一操作丟失部分信息.根據FCN模型結構計算,經過5次卷積和池化,圖像的分辨率依次縮小了2,4,8,16和32倍.因此,32倍上采樣丟失了大量細節信息.Long等[24]將第4次和第3次卷積分別進行16倍和8倍上采樣,可以保留更多細節信息.將底層結果進行2倍上采樣,結果與第4層結果相加并進行預測,得到FCN-16s,以此類推,得到更加精細的FCN-8s.

圖3 全卷積網絡架構圖Fig.3 Structure of FCN network
1.3.2 MRF增強空間一致性 FCN模型存在著空間不一致的問題,端對端的計算方式忽視了像素點之間的關聯.由于隧道病害和干擾物均具有連通性,其像素點之間可以通過領域相關算法構建關聯.將像素點視作節點,引入MRF概念可以更好地反映像素點之間的鄰域關系.對于病害檢測而言,裂縫、滲漏水和破損3種常見病害均具有連通性,結合MRF的圖像分割,對病害區域中的個別錯誤分類有抑制的作用.
MRF也被稱為馬爾科夫網絡或者無向圖模型,在圖像處理中,往往使用MRF表示圖像像素之間的關聯,將圖像中的每個像素作為馬爾可夫隨機場的節點,每個節點之間都存在相互的連接(Edges),而且這種連接是無向的.特別地,對于馬爾可夫隨機場而言,每個像素的分類結果僅與相鄰像素的類別相關,而與圖像中的其他像素的分類是條件獨立的.MRF通過勢函數反映節點之間的關系,也就是研究中需要使用的損失函數,即
(7)
一元勢函數僅僅反映了單個像素的分類概率,在實際應用中,病害具有連通性,因此,可以看作是連通區域內的其他像素影響某一像素分類的結果.在勢函數中需要添加二元勢函數,即
(8)
用來反映該像素點與連通區域內其他像素之間的連接關系.
二元勢函數示意圖.如圖4所示.圖4中:K為圖像中所有連通區域的集合,且連通區域內所有像素分類均不是背景;μk(i,u,j,v)表示第k個連通區域內,像素i被分為病害類別u,同時,像素j被分為病害類別v的聯合概率;d(i,j)表示像素i與j之間的幾何距離.二元勢函數通過連通區域內像素點的連接關系(分類的聯合概率和像素的幾何距離),表現像素之間的關聯性.
一元勢函數和二元勢函數組成了MRF方法,而MRF勢函數包含了FCN模型的損失函數,作為單個像素的分類結果,另外還增加了二元勢函數反映像素之間的關聯.所以使用MRF方法和FCN模型結合的方式就是擴展FCN模型的損失函數.增加二元勢函數損失LPai作為額外的優化目標,形成聯合損失函數Ltotal,即
Ltotal=LFCN+LPai.
(9)
MRF優化流程,如圖5所示.

圖4 二元勢函數示意圖 圖5 MRF優化流程 Fig.4 Schematic diagram of binary energy function Fig.5 Process of MRF optimization

圖6 MRF-FCN模型迭代損失圖Fig.6 Loss of MRF-FCN model iterations
用于訓練模型的病害圖像來自于上海市大連路隧道,使用自主研發的自動巡檢設備機器人采集視頻數據.研究所使用的計算機配置為:Inter core i7-8750H @2.2 GHz,內存8 GB×2,顯卡為GeForce GTX1070 8 GB.由于自動巡檢設備分別對環面、頂部和側墻3個方向同時采集視頻數據,且每個方向的信息無重疊、背景不一樣,主要干擾物也不同,但病害特征基本一致.因此,所使用的實驗數據將分為3個數據集.模型訓練的過程中,將從3個數據集等比例隨機抽取圖像訓練,防止模型過擬合.對3個數據集進行模型驗證,并且將驗證的結果與常見檢測算法進行對比.
通過采集共獲取3個采集方向等比例的4 200余張圖像,通過數據增強使得數據集擴大到20倍.因此,數據集共有約84 000張的圖像可用于訓練.實驗將從增強數據中隨機抽取67 200張圖像進行訓練,抽取16 800張圖像用于測試.MRF-FCN模型迭代損失圖,如圖6所示.圖6中:n為迭代次數.由圖6可知:經過了3 000次迭代訓練,損失函數趨于收斂,結束模型的訓練.
為了檢驗所提出算法的魯棒性,將處理后的結果與其他算法的結果進行對比.準確率(P)常常作為目標識別算法的評價指標,可以有效直觀地反映出檢測算法的準確性,即
(10)


表1 實驗結果Tab.1 Experiment results (%)
由表1可知:文中方法的平均準確率略高于FCN模型,比傳統方法(大律分割法和區域增長法)要高出許多,且更為穩定,相比較而言,對于不同背景的數據集傳統方法穩定性不佳.
不同病害檢測算法的語義分割結果,如表2所示.

表2 不同病害檢測算法的語義分割結果Tab.2 Semantic segmentation results of different defect detection algorithms

續表Continue table
由表2可知:FCN模型在未經過MRF的優化時,對于病害的錯誤分類較多,存在較多離散的病害像素,而MRF-FCN則較好地優化了檢測結果,對于同一病害連通區域內的點進行了分類結果的優化,減少了連通區域內的誤分類,同時,去除了背景區域中的離散點,MRF-FCN的檢測準確度顯著提升;大律分割法和分水嶺法兩種方法對于圖像中的反光部分過于敏感,導致算法忽視了病害的信息,其中,大律法能有效獲取細微的病害邊緣信息,適用于細小病害以及零散病害的檢測,但邊緣信息粗糙,零散的誤診點也較多.分水嶺法對于較大的病害識別更加精細,對于病害邊緣預測更加平滑,但會忽視較小的病害信息.
文中方法已經在上海市虹梅南路隧道中進行應用,共執行18次巡檢任務.根據實際需求開發隧道運維系統界面,如圖7所示.使用文中方法從視頻中獲取病害信息,并對檢測結果進行匯總與分析,判斷每個病害的嚴重程度,以及結構段(50 m)的病害健康狀況,以報告的形式為隧道運維和維修提供科學的建議.

圖7 隧道運維系統界面Fig.7 Interface of tunnel operation and maintenance system
通過應用文中方法,隧道病害檢測的效率和準確率具有明顯的提升,日常巡檢的耗時從約2 h(2 km)降低至1.5 h(2 km),定期巡檢頻率也從一個月1次變為一周2次.另外,與人工檢測相比,應用文中方法大幅度減少了病害的漏檢率,達到0.1% .病害識別的準確度約為92.0%,非常接近人工判斷的準確率.另外,在檢測中發現了兩處尚未修理的嚴重病害,及時提醒運維公司進行維修,防止進一步惡化.檢測結果均通過人工復檢的方式加以驗證,并用復檢結果再次訓練檢測模型,不斷提高檢測準確度.經過多次再訓練和應用,漏檢率為0.05%,錯檢率為4.50%.
在隧道內部環面上采集視頻數據,首先,從視頻數據中截取信息完全且不重復的環面圖像,然后,對每個截取出來的圖像去除廣角畸變.對每張圖像進行隨機小幅修改,以實現數據增強.通過處理好的圖像進行標記工作,構建了病害圖像數據集.使用多種上采樣結合推理的跳級策略,引入馬爾科夫隨機場彌補了FCN模型空間一致性的缺失,構建了MRF-FCN病害識別模型.使用預先準備好的數據集訓練改進的MRF-FCN模型,并取得部分數據測試模型的性能,模型的平均準確率為92.8%.
文中方法在上海市虹梅南路隧道中進行了應用,結果通過隧道運維公司的復檢進行驗證,開展了維修工作并給予反饋,最后,反向更新數據集,形成了完整的閉環管理.
但是基于機器學習的隧道病害檢測還處于實驗階段,鮮有能夠適用于實際應用.主要困難在于:1) 可供用于訓練的病害圖像數量較少且類別不均衡;2) 訓練出的模型有特殊性,難以應用于結構有差異的隧道;3) 干擾物數目較多且會與病害交疊共存.針對以上問題還需要進一步研究,才能使基于機器學習的方法在實際隧道運維中真正進行應用.