張偉光,鐘靖濤,于建新,馬濤,毛碩,石藝蘭
(1.東南大學(xué)交通學(xué)院,江蘇南京,210096;2.河南理工大學(xué)土木工程學(xué)院,河南焦作,454003)
傳統(tǒng)的路面病害檢測(cè)以人工為主,對(duì)同一路面狀況的評(píng)價(jià)存在極大的主觀性,并且效率很低,不能夠處理大量的信息。因此,考慮實(shí)時(shí)、高效、泛化性能強(qiáng)、識(shí)別準(zhǔn)確率高的檢測(cè)方法,對(duì)路面養(yǎng)護(hù)工作具有重要意義。伴隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,機(jī)器學(xué)習(xí)和圖像處理技術(shù)快速發(fā)展,并在一些領(lǐng)域得到應(yīng)用,為路面裂縫信息的識(shí)別和處理提供了重要的方法。機(jī)器學(xué)習(xí)使用大量的數(shù)據(jù)進(jìn)行訓(xùn)練模型,并能夠?qū)D像給予客觀的評(píng)價(jià),效率遠(yuǎn)高于傳統(tǒng)檢測(cè)方法。
ZHANG 等[1]設(shè)計(jì)了一種路面裂縫檢測(cè)算法,通過圖像的預(yù)處理,包括圖像增強(qiáng)、圖像分割等手段對(duì)裂縫特征信息進(jìn)行了提取,計(jì)算了裂縫的幾何特征信息。OLIVEIRA 等[2]提出了一種利用高速行駛時(shí)采集的測(cè)量圖像進(jìn)行裂紋自動(dòng)檢測(cè)和分類的新框架,將得到的圖像使用形態(tài)學(xué)濾波器進(jìn)行預(yù)處理來減少像素強(qiáng)度差異,將閾值圖像分割成非重疊塊進(jìn)行熵計(jì)算,對(duì)產(chǎn)生的熵塊矩陣進(jìn)行二次動(dòng)態(tài)閾值處理,收到了良好效果。SALMAN等[3]基于Gabor 濾波,提出設(shè)計(jì)了一種自動(dòng)識(shí)別圖像裂縫的方法,能夠?qū)β访婕y理層次高、裂縫檢測(cè)困難的路面圖像進(jìn)行自動(dòng)識(shí)別。哈爾濱國(guó)暢智能交通技術(shù)有限公司與哈爾濱工業(yè)大學(xué)聯(lián)合研制出了道路路面檢測(cè)車“哈工大國(guó)暢”[4],能夠在較高的行駛速度下采集到質(zhì)量較高的路面圖片,進(jìn)行路面的快速識(shí)別。
在路面裂縫識(shí)別和圖像處理的相關(guān)算法方面,高建貞等[5]使用傳統(tǒng)圖像處理的方法對(duì)裂縫進(jìn)行自動(dòng)檢測(cè),該方法使用灰度差來校正圖像灰度,并進(jìn)行圖像增強(qiáng),能夠解決圖像光照不均勻的問題。陳利利[6]提出了一種基于多尺度圖像分析的路面病害研究方法,該方法能夠有效地去除圖像中的噪聲,并保持圖像的邊緣和細(xì)節(jié),抑制邊界移動(dòng)。CEYLAN等[7]介紹了神經(jīng)網(wǎng)絡(luò)在道路工程中的最新應(yīng)用。ELDIN等[8]提出了一種用于評(píng)估公路路面狀況的人工神經(jīng)網(wǎng)絡(luò)模型。ROBERTS 等[9]使用不同類型的人工神經(jīng)網(wǎng)絡(luò)對(duì)路面性能進(jìn)行了預(yù)測(cè),而KIRBA?等[10]將人工神經(jīng)網(wǎng)絡(luò)與回歸分析和多自適應(yīng)回歸等方法進(jìn)行了比較,提出了一種路面性能的評(píng)價(jià)模型。ATTOH-OKINE[11]采用人工神經(jīng)網(wǎng)絡(luò)模型對(duì)不同相關(guān)路面條件變量的窘迫路面條件進(jìn)行了評(píng)估,SAM[12]提出了一種預(yù)測(cè)裂縫演變的程序。PLATI等[13]用神經(jīng)網(wǎng)絡(luò)對(duì)FWD數(shù)據(jù)進(jìn)行分析,評(píng)估了路面結(jié)構(gòu)狀況。TORRE 等[14]通過神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)公路路面的粗糙度,也可用于裂縫識(shí)別[15]。
以上方法為傳統(tǒng)學(xué)習(xí)方法,與傳統(tǒng)學(xué)習(xí)方法不同的是,深度學(xué)習(xí)方法不需要人工進(jìn)行特征提取就能夠自動(dòng)根據(jù)原始圖像的特征進(jìn)行抽象表達(dá)和分析,并且深度學(xué)習(xí)的識(shí)別精度遠(yuǎn)遠(yuǎn)高于傳統(tǒng)的機(jī)器學(xué)習(xí)圖像識(shí)別算法的精度,為道路裂縫的自動(dòng)檢測(cè)提供了新途徑。
ZHANG[16]首次將深度學(xué)習(xí)算法和卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的方法應(yīng)用于道路裂縫的檢測(cè)中,結(jié)果表明,深度卷積神經(jīng)網(wǎng)絡(luò)在很強(qiáng)的噪聲環(huán)境下仍然能夠很好地識(shí)別裂縫。CHA 等[17]設(shè)計(jì)了一個(gè)用來檢測(cè)隧道中混凝土裂縫的深度學(xué)習(xí)網(wǎng)絡(luò),并使用CNN 對(duì)結(jié)構(gòu)中的多種視覺損傷類型進(jìn)行檢測(cè),結(jié)果表明,與傳統(tǒng)的檢測(cè)算法相比,CNN具有更好的穩(wěn)定性。XIE等[18]通過手機(jī)收集的500 張分辨率為3 264×2 448 的圖像數(shù)據(jù)集上應(yīng)用卷積層,證明了基于深度學(xué)習(xí)的路面裂縫檢測(cè)具有很大潛力。FENG等[19]使用深度殘留網(wǎng)絡(luò)訓(xùn)練帶有缺陷標(biāo)簽的圖像,可以顯著減少分析前標(biāo)記所有樣品所涉及的時(shí)間和資源,但準(zhǔn)確率并不高。
在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)成為深度學(xué)習(xí)領(lǐng)域最具代表性的人工神經(jīng)網(wǎng)絡(luò)[20]。CNN 特別適用于圖像識(shí)別、分類領(lǐng)域,無需人工對(duì)圖像進(jìn)行預(yù)處理和額外的特征抽取等復(fù)雜操作,操作簡(jiǎn)單、識(shí)別率高,目前廣泛應(yīng)用于各視覺領(lǐng)域。在路面裂縫的識(shí)別中,傳統(tǒng)的裂縫識(shí)別算法采用圖像處理的方法,先對(duì)裂縫圖像進(jìn)行灰度化、二值化等操作,然后基于裂縫二值化圖像進(jìn)行裂縫邊緣檢測(cè),常用Canny 和Roberts 等邊緣檢測(cè)算子進(jìn)行裂縫的定位與分類,其中包括大量的圖像處理過程,耗時(shí)多并且識(shí)別準(zhǔn)確率不高。但是采用CNN 網(wǎng)絡(luò)模型,不需要進(jìn)行大量的圖像處理過程,一般只需要進(jìn)行裂縫圖像的灰度化即可,灰度圖像可以直接作為輸入進(jìn)行訓(xùn)練,CNN 能夠自動(dòng)學(xué)習(xí)不同裂縫病害的像素差異,從而完成分類目標(biāo),不需要復(fù)雜的圖像處理過程,并且能快速地獲得準(zhǔn)確的分類。
綜上,本文作者基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)模型,按照經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行設(shè)計(jì),收集4種路面裂縫圖像,通過建立數(shù)據(jù)集和驗(yàn)證集,測(cè)試訓(xùn)練模型的準(zhǔn)確率,基于高精度的卷積神經(jīng)網(wǎng)絡(luò)識(shí)別算法,實(shí)現(xiàn)正確識(shí)別路面裂縫類型的目標(biāo),并在識(shí)別裂縫類型的基礎(chǔ)上,進(jìn)行路面裂縫的長(zhǎng)度、寬度以及面積的計(jì)算,為養(yǎng)護(hù)評(píng)價(jià)奠定基礎(chǔ)。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種受生物自然視覺認(rèn)知機(jī)制啟發(fā)而來的多層感知器[21]。20世紀(jì)90年代,LECUN 等[22]確立了卷積神經(jīng)網(wǎng)絡(luò)。近些年,卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別領(lǐng)域得到廣泛應(yīng)用。在路面裂縫圖像的識(shí)別上,CNN 比使用傳統(tǒng)特征進(jìn)行分類結(jié)果更優(yōu)[23]。圖1所示為神經(jīng)網(wǎng)絡(luò)模型,包含輸入層、隱藏層和輸出層。其中,x1~xn為輸入層的輸入?yún)?shù)值,y1~yn為輸出層對(duì)應(yīng)于輸入層的預(yù)測(cè)值。
圖1 神經(jīng)網(wǎng)絡(luò)模型Fig.1 Neural network model
卷積神經(jīng)網(wǎng)絡(luò)是包含卷積層、池化層和全連接層的神經(jīng)網(wǎng)絡(luò)。卷積層作用就是通過卷積,將圖像中的特征進(jìn)行提取出來,然后交給高層的神經(jīng)元進(jìn)行處理。一層的卷積學(xué)到的東西往往是局部的,通過添加卷積層的層數(shù),逐漸到全局進(jìn)行掌握,實(shí)際中卷積層往往有多層[24]。通過加入池化層,能夠降低圖像大小,對(duì)特征壓縮,對(duì)數(shù)據(jù)降維,提取主要特征,同時(shí)降低過擬合的風(fēng)險(xiǎn)。全連接層的作用是將經(jīng)過卷積、池化后的結(jié)果進(jìn)行全連接起來,即將變厚的圖像連接起來,其輸入必須是一維的,因此,必須將上層輸入的多維向量變成一維的并連接起來,一個(gè)神經(jīng)網(wǎng)絡(luò)可以有多個(gè)全連接層。
輸入值在經(jīng)過神經(jīng)元后,還要經(jīng)過激活函數(shù)才能進(jìn)行輸出。激活函數(shù)存在的主要目的是增加非線性因素。若不存在激活函數(shù),則輸入和輸出只能是簡(jiǎn)單的線性關(guān)系。常用的激活函數(shù)有Sigmoid,Tanh和Relu等。激活函數(shù)工作原理如圖2所示,輸入層輸入?yún)?shù)x,經(jīng)過突觸權(quán)值wk相乘后,與偏置bk進(jìn)行累加求和,通過激活函數(shù)Φ,得到激活值yk。
圖2 激活函數(shù)Fig.2 Activation function
Sigmoid 函數(shù)值的范圍在0~1 之間,當(dāng)輸入值大于5 或者小于-5,該函數(shù)就已經(jīng)趨于1 和0,映射的范圍太小,非常容易飽和,訓(xùn)練效果明顯降低,會(huì)產(chǎn)生欠擬合,分類效果會(huì)很差。Tanh 函數(shù)值范圍在-1~1,當(dāng)輸入值是比較大的正數(shù)時(shí),將被映射成1,當(dāng)輸入值為較小的負(fù)數(shù)時(shí),被映射成-1,均值為0。Tanh 函數(shù)避免了Sigmoid 函數(shù)可能會(huì)導(dǎo)致的梯度下降產(chǎn)生鋸齒狀波動(dòng)的問題,但當(dāng)輸入值過大或過小時(shí),梯度為0,同樣會(huì)存在欠擬合的問題。Relu函數(shù)不存在這個(gè)問題,Relu函數(shù)的數(shù)學(xué)形式為:f(x)=max(0,x),如圖3所示。
圖3 Relu函數(shù)Fig.3 Relu function
Relu函數(shù)非常簡(jiǎn)單,當(dāng)輸入值大于0時(shí),直接輸出該值,當(dāng)輸入值小于0 時(shí),輸出0。只需要設(shè)置一個(gè)閾值便可以進(jìn)行計(jì)算,相比前兩種激活函數(shù)需要復(fù)雜的指數(shù)計(jì)算,Relu 函數(shù)計(jì)算速度更加快速。反向傳播的過程就是不斷更新參數(shù)的過程,Relu 函數(shù)相比Sigmoid 和Tanh,導(dǎo)數(shù)更容易計(jì)算,可以使網(wǎng)絡(luò)訓(xùn)練地更快,而且Relu 可以防止梯度消失,因此本文采用Relu激活函數(shù)。
為了更好地訓(xùn)練模型,減小訓(xùn)練時(shí)間,提高訓(xùn)練效率,必須選擇合適的優(yōu)化器,常用的優(yōu)化器主要分為3 類:梯度下降算法和動(dòng)量?jī)?yōu)化算法、自適應(yīng)學(xué)習(xí)率優(yōu)化算法,本文選擇自適應(yīng)學(xué)習(xí)優(yōu)化算法。由于學(xué)習(xí)率對(duì)模型有著顯著的影響,需要采取一些方法來更新學(xué)習(xí)率,從而提高訓(xùn)練速度。目前,自適應(yīng)學(xué)習(xí)率優(yōu)化算法主要有:Adagrad 算 法、RMSprop 算 法、Adam 算 法 和AdaDelta算法,通過比較分析,本文選擇RMSprop算法。
為設(shè)計(jì)出一種能夠?qū)β访媪芽p圖像進(jìn)行分類識(shí)別和對(duì)路面基本特征信息進(jìn)行提取和計(jì)算的方法,采用多層感知機(jī)和深度卷積神經(jīng)網(wǎng)絡(luò)2種模型對(duì)路面裂縫數(shù)據(jù)進(jìn)行學(xué)習(xí),算法設(shè)計(jì)主要借助Python 語言,使用比較便捷的Keras 作為開發(fā)框架。首先,采集大量路面裂縫圖像并進(jìn)行灰度化、標(biāo)簽化和尺寸歸一化處理,形成足夠的訓(xùn)練集。然后,使用訓(xùn)練后的模型對(duì)測(cè)試集數(shù)據(jù)進(jìn)行裂縫有無判斷和裂縫種類預(yù)測(cè),并將2個(gè)模型的效果進(jìn)行對(duì)比。對(duì)于判斷結(jié)果為橫向裂縫和縱向裂縫的數(shù)據(jù),為了進(jìn)一步獲取裂縫寬度信息,將其進(jìn)行一系列圖像處理,使裂縫突出并減少背景中的噪聲。最后,對(duì)處理后裂縫圖像的寬度和長(zhǎng)度信息進(jìn)行提取,為路面狀況評(píng)價(jià)提供數(shù)據(jù)。
2.1.1 原始數(shù)據(jù)收集
使用機(jī)器學(xué)習(xí)進(jìn)行圖像識(shí)別需要大量的數(shù)據(jù)集訓(xùn)練模型。一般來說,訓(xùn)練神經(jīng)網(wǎng)絡(luò)所需要的數(shù)據(jù)量至少在500以上,但相比其他復(fù)雜的圖像如人臉,裂縫圖像比較簡(jiǎn)單,特征較少,識(shí)別相對(duì)簡(jiǎn)單。實(shí)驗(yàn)結(jié)果證明,500左右的數(shù)據(jù)量基本可以滿足訓(xùn)練模型的要求。本文設(shè)計(jì)訓(xùn)練的模型主要對(duì)橫向裂縫、縱向裂縫、龜裂、無裂縫等4類路面裂縫圖像進(jìn)行分類識(shí)別,每類裂縫均采集600張圖像用于訓(xùn)練。
裂縫圖像數(shù)據(jù)通過手機(jī)進(jìn)行采集,并嚴(yán)格控制圖像質(zhì)量:路面不存在影響裂縫觀察的污跡,比如輪胎印記或者車道線;拍攝時(shí)光照均勻;路面裂縫處不存在積水等。
2.1.2 數(shù)據(jù)預(yù)處理
收集到的各類裂縫圖像不能直接用來訓(xùn)練模型,必須進(jìn)行處理后生成具有標(biāo)簽的數(shù)據(jù)集后才能使用。為了減少計(jì)算量,加快卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度,需要對(duì)數(shù)據(jù)進(jìn)行尺寸歸一化和灰度化處理。
1)圖像尺寸歸一化。由于手機(jī)所采集的數(shù)據(jù)圖像分辨率不同,而卷積神經(jīng)網(wǎng)絡(luò)的輸入層需要大小一致的數(shù)據(jù),必須進(jìn)行歸一化處理。為減少訓(xùn)練時(shí)間,提高模型訓(xùn)練速度,將裂縫圖像進(jìn)行縮放[25],尺寸歸一化為80×80。分辨率降低后,不會(huì)影響圖像中灰度相對(duì)低的像素點(diǎn)群的分布特征,以及是否存在裂縫與裂縫類型的判定,滿足訓(xùn)練要求。
2)灰度化。收集路面裂縫圖像是彩色圖片,訓(xùn)練時(shí)收斂速度較慢。為了加快神經(jīng)網(wǎng)絡(luò)模型的收斂,查閱文獻(xiàn)[26],裂縫圖像的灰度化對(duì)裂縫識(shí)別準(zhǔn)確率的影響很小。觀察處理后的裂縫圖像并讀取灰度發(fā)現(xiàn),處理后裂縫的特征和分布狀態(tài)并沒有較大改變,結(jié)果如表1所示,因此,對(duì)原始路面裂縫均進(jìn)行灰度化處理。
表1 原始圖像和經(jīng)過預(yù)處理后的樣本對(duì)比Table 1 Comparison of original image and sample after preprocessing
3)標(biāo)簽化。采集到的數(shù)據(jù)并不能夠直接用于訓(xùn)練,必須對(duì)每類裂縫打上各自類別的標(biāo)簽,才能將訓(xùn)練結(jié)果與真實(shí)的分類結(jié)果進(jìn)行比對(duì),并不斷更新參數(shù)。使用windows自帶的批處理程序?qū)D像進(jìn)行打標(biāo)簽。對(duì)橫向裂縫圖像重命名為1_x.jpg,前綴名的第一位表示裂縫類型,x為序號(hào),表明同一類裂縫的數(shù)目。使用同樣的方法,縱向裂縫圖像、龜裂圖像、無裂縫圖像的重命名格式分別為2_x.jpg,3_x.jpg和4_x.jpg,如圖4所示。
圖4 裂縫標(biāo)簽化Fig.4 Crack label
4)生成數(shù)據(jù)集。經(jīng)過標(biāo)簽化的圖像為jpg圖像格式,需要對(duì)圖像中的點(diǎn)陣數(shù)據(jù)進(jìn)行讀取。使用OpenCV提供的接口,對(duì)圖像數(shù)據(jù)進(jìn)行讀取,將圖像的標(biāo)簽與圖像數(shù)據(jù)信息對(duì)應(yīng)起來,寫入一個(gè)csv文件,當(dāng)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)時(shí),可直接讀取該csv文件。
多層感知機(jī)(multilayer perceptron,MLP)是至少含有一個(gè)隱層的由全連接層組成的神經(jīng)網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)中,每一個(gè)節(jié)點(diǎn)都是一個(gè)人工神經(jīng)元,一個(gè)人工神經(jīng)元的輸出可以作為另一個(gè)人工神經(jīng)元的輸入,且每個(gè)隱層神經(jīng)元的輸出通過激活函數(shù)進(jìn)行變換。MLP 的一個(gè)顯著特點(diǎn)是,在網(wǎng)絡(luò)足夠大的情況下,模型能夠表示任意數(shù)學(xué)函數(shù)。
2.2.1 模型參數(shù)
多層感知機(jī)結(jié)構(gòu)有輸入層、隱層和輸出層,層與層之間都通過全連接的方式,前一層的輸出值即為后一層的輸入值。選擇隱層共3層的多層感知機(jī):輸入層輸入尺寸為80×80×1 的二維灰度圖片,將其展開變成一維張量后傳入隱層;各隱層中神經(jīng)元個(gè)數(shù)分別是256,512 和256 個(gè),輸出層輸出4個(gè)分類結(jié)果。
2.2.2 訓(xùn)練結(jié)果
將訓(xùn)練集數(shù)據(jù)隨機(jī)抽取固定個(gè)數(shù),作為一個(gè)批次(batch)進(jìn)行訓(xùn)練,每個(gè)batch 訓(xùn)練后都將模型參數(shù)進(jìn)行一次更新,直到所有的數(shù)據(jù)都進(jìn)行參數(shù)更新,這一過程稱為一輪訓(xùn)練(epoch)。batch 的尺寸定為32 個(gè)數(shù)據(jù),進(jìn)行3 000 個(gè)epoch 后結(jié)束訓(xùn)練和參數(shù)更新,訓(xùn)練結(jié)果如圖5所示。
從圖5可知:隨著訓(xùn)練的進(jìn)行,訓(xùn)練集的損失值越來越小,而準(zhǔn)確率基本穩(wěn)步上升。但是模型在驗(yàn)證集上的損失值和準(zhǔn)確率波動(dòng)較大。訓(xùn)練最初的準(zhǔn)確率最低,為32.31%,損失值為1.603 4;訓(xùn)練過程中準(zhǔn)確率起伏很大;訓(xùn)練結(jié)束時(shí),模型在驗(yàn)證集上的準(zhǔn)確率達(dá)到86.32%,損失值為0.457 1。
圖5 多層感知機(jī)訓(xùn)練集和驗(yàn)證集損失值和訓(xùn)練準(zhǔn)確率隨訓(xùn)練次數(shù)的變化折線圖Fig.5 Line chart of loss value and training accuracy of training set and verification set of multilayer perceptron with epoch
一般來說,卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)越多,對(duì)數(shù)據(jù)擬合的效果越好,但計(jì)算時(shí)間越長(zhǎng),而且出現(xiàn)過擬合現(xiàn)象的概率也越大,對(duì)于小批量的數(shù)據(jù),層數(shù)不需要過高。本文選擇5層網(wǎng)絡(luò)結(jié)構(gòu)模型用于訓(xùn)練。
2.3.1 具體網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
建立5層卷積神經(jīng)網(wǎng)絡(luò),各層的參數(shù)如表2所示,其中前三層是卷積層(Conv 層),用于提取裂縫圖像特征,每一個(gè)卷積層后連一個(gè)池化層;后兩層為全連接層(Fc 層),在全連接層后連一個(gè)SoftMax分類器,實(shí)現(xiàn)圖像分類。為防止訓(xùn)練出現(xiàn)過擬合,在每一個(gè)池化層后接一個(gè)dropout 層,使部分神經(jīng)元隨機(jī)失活,以保證測(cè)試集的良好結(jié)果。
表2 神經(jīng)網(wǎng)絡(luò)模型參數(shù)Table 2 Parameters of neural network model
輸入數(shù)據(jù)在經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)各層后的維度變化如圖6所示。
圖6 各層維度變化示意圖Fig.6 Schematic diagram of dimension change of each layer
2.3.2 神經(jīng)網(wǎng)絡(luò)訓(xùn)練
經(jīng)過處理4 類裂縫圖像共2 400 張,作為模型訓(xùn)練的數(shù)據(jù)集,從中隨機(jī)選取20%的數(shù)據(jù)作為驗(yàn)證集,以提高模型的泛化能力。訓(xùn)練環(huán)境為:Windows10 操作系統(tǒng),i5-5200U 處理器,主頻2.2 GHz,內(nèi)存8 G,python3.0,Keras框架。
為選擇合適的優(yōu)化器,對(duì)不同的優(yōu)化器進(jìn)行測(cè)試,在統(tǒng)一的epoch和batch size下進(jìn)行測(cè)試,結(jié)果如表3所示。
從表3可以看出:使用RMSprop 優(yōu)化器的模型損失值最低,準(zhǔn)確率最高,因此,選用RMSprop 算法優(yōu)化神經(jīng)網(wǎng)絡(luò)模型。當(dāng)模型進(jìn)行訓(xùn)練時(shí),為防止模型出現(xiàn)過擬合,提高模型的泛化能力,在每個(gè)卷積層后面添加一個(gè)dropout 層,考慮dropout 的參數(shù)對(duì)模型訓(xùn)練結(jié)果的影響,進(jìn)行隨機(jī)失活參數(shù)(即總的數(shù)據(jù)集中不參與訓(xùn)練的占比)的確定,實(shí)驗(yàn)結(jié)果如表4所示。
表3 各類優(yōu)化器的訓(xùn)練效果Table 3 Training effects of various optimizers
表4 隨機(jī)失活參數(shù)確定Table 4 Determination of random deactivation parameters
從表4可以看出:隨機(jī)失活參數(shù)數(shù)量過大或過小,模型在驗(yàn)證集上表現(xiàn)均較差,故將隨時(shí)失活參數(shù)設(shè)置為0.2。
優(yōu)化器選擇為RMSprop,初始學(xué)習(xí)率設(shè)置為0.000 1,batch size 的大小為32,epoch 設(shè)置為50,得到的損失值和準(zhǔn)確率分別如圖7和圖8所示。
圖7 訓(xùn)練集和驗(yàn)證集的損失值隨訓(xùn)練次數(shù)的變化情況Fig.7 Change of loss value of training set and verification set with training times
圖8 訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率隨訓(xùn)練次數(shù)的變化情況Fig.8 Change of accuracy of training set and verification set with training times
通過50個(gè)epoch的訓(xùn)練,卷積神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練集的準(zhǔn)確率最高為97.5%,損失值不斷降低。雖然驗(yàn)證集的準(zhǔn)確率和損失值波動(dòng)較大,但整體趨勢(shì)和驗(yàn)證集的表現(xiàn)相同,具有較好的訓(xùn)練效果。
2.3.3 2種模型識(shí)別結(jié)果對(duì)比
為得到準(zhǔn)確率高的識(shí)別模型,對(duì)2種模型進(jìn)行實(shí)驗(yàn)驗(yàn)證。驗(yàn)證集隨機(jī)選取400 張裂縫圖像(其中橫向裂縫圖像數(shù)量為82 張,縱向裂縫圖像數(shù)量為105 張,龜裂圖像數(shù)量為106 張,無裂縫路面圖像數(shù)量為107張),使用模型對(duì)這400張裂縫圖像進(jìn)行預(yù)測(cè),將識(shí)別結(jié)果通過混淆矩陣?yán)L制出來,結(jié)果如圖9所示。
圖9 2種模型識(shí)別結(jié)果Fig.9 Recognition results of two models
多層感知機(jī)模型對(duì)于橫向裂縫圖像的預(yù)測(cè)正確率達(dá)到91.46%,對(duì)于縱向裂縫圖像的預(yù)測(cè)正確率為86.67%,對(duì)于龜裂圖像的預(yù)測(cè)正確率為95.28%,而對(duì)無裂縫路面的預(yù)測(cè)有99.07%的正確率。綜上,經(jīng)過訓(xùn)練后的多層感知機(jī)在測(cè)試集上,對(duì)于4類瀝青路面裂縫圖像的預(yù)測(cè)和分類準(zhǔn)確率平均為93.25%。
卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)于橫向裂縫、縱向裂縫以及龜裂的圖像預(yù)測(cè)全部正確;而對(duì)無裂縫路面的預(yù)測(cè)有99.07%的正確率,預(yù)測(cè)錯(cuò)誤的一例被模型判斷為縱向裂縫。經(jīng)過訓(xùn)練后的卷積神經(jīng)網(wǎng)絡(luò)在測(cè)試集上,對(duì)于4類瀝青路面圖像的預(yù)測(cè)和分類準(zhǔn)確率平均為99.75%。
經(jīng)過訓(xùn)練的多層感知機(jī)和卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)4類路面裂縫的分類和預(yù)測(cè)比較準(zhǔn)確,能夠很好地完成分類任務(wù),但卷積神經(jīng)網(wǎng)絡(luò)模型的性能優(yōu)于多層感知機(jī)模型的性能。
在完成路面裂縫分類后,需進(jìn)一步獲取裂縫的其他信息,如縱向和橫向裂縫的最大寬度、長(zhǎng)度、面積等,才能評(píng)估路面的破損程度。路面圖像包含了路面的絕大部分信息,使用圖像處理技術(shù)能夠?qū)D像中的有效信息進(jìn)行提取,一般操作方法包括灰度化、二值化、圖片降噪、圖像細(xì)化等。
提取裂縫特征信息對(duì)圖像質(zhì)量要求較高,為減少圖像處理過程中造成的裂縫信息損失,提高信息提取的準(zhǔn)確率,將圖片分辨率調(diào)整為3 500×3 500,進(jìn)行二值化、圖片降噪等處理。
3.1.1 二值化
二值化就是按照某種規(guī)則首先確定圖像的閾值,然后將原始圖像各像素處的灰度與該閾值對(duì)比,再按照某種規(guī)則對(duì)該灰度重新賦值。二值化處理后的圖像只有黑白2種顏色,每個(gè)像素點(diǎn)的灰度為0 或255,能夠比較好地突出裂縫特征。閾值的確定方法分為全局閾值二值化和局部閾值二值化。局部閾值法,是對(duì)圖像進(jìn)行分塊,按照某種規(guī)則計(jì)算出每一塊的閾值,對(duì)該塊內(nèi)的像素自動(dòng)進(jìn)行調(diào)節(jié),能夠比較好地處理圖像光照不均勻的情況。此次實(shí)驗(yàn)的對(duì)象均是在光照均勻環(huán)境下獲取的路面裂縫圖像,故不考慮使用局部閾值的處理方法。
全局閾值二值化是在整個(gè)圖像中統(tǒng)一為一個(gè)閾值,在該值下對(duì)像素進(jìn)行操作,閾值獲取方法分為指定閾值和手動(dòng)獲取閾值2 類。對(duì)于指定閾值,OpenCV中有5種常用的方法:
1)THRESH_BINARY 方法,對(duì)高于閾值的灰度設(shè)為最大值,低于像素的灰度設(shè)為0;
2)THRESH_BINARY_INV 方法,正好相反,將高于閾值的灰度設(shè)為0,低于閾值的灰度設(shè)為最大值;
3)THRESH_TRUNC 方法,將超過閾值的灰度設(shè)為閾值,而對(duì)低于閾值的灰度不變;
4)THRESH_TOZERO 方法,將超過閾值的灰度保持不變,其他的灰度變?yōu)?;
5)THRESH_TOZERO_INV方法,將超過閾值的灰度變?yōu)?,其他灰度不變。指定閾值設(shè)為127,使用以上5種方法處理后結(jié)果如圖10所示。
從圖10可以看出:使用THRESH_BINARY和THRESH_BINARY_INV 方法處理后,裂縫特征比較明顯,因此選擇這2個(gè)方法對(duì)裂縫圖像進(jìn)行二值化處理。
圖10 二值化方法處理結(jié)果Fig.10 Processing results of binarization method
3.1.2 路面圖像降噪
由于瀝青路面中瀝青與集料性質(zhì)不同,會(huì)出現(xiàn)較多離散分布的噪聲,即圖像中孤立的像素點(diǎn)或者像素塊。它們不屬于裂縫,但對(duì)于裂縫寬度、長(zhǎng)度和面積的計(jì)算會(huì)產(chǎn)生影響,因此在計(jì)算裂縫的幾何特性之前,需要去除其中的噪聲。
1)高斯濾波。高斯濾波是通過一個(gè)卷積核對(duì)圖像進(jìn)行卷積,該卷積核的權(quán)重服從高斯函數(shù)的二維分布,其中心是高斯函數(shù)的原點(diǎn)。對(duì)卷積核進(jìn)行歸一化處理,保證卷積核的和為1。高斯濾波適合處理噪聲分布為高斯分布的白噪聲,能夠保留比較多的細(xì)節(jié)。高斯濾波對(duì)圖像的處理效果與高斯卷積核有關(guān),不同卷積核處理后的結(jié)果如圖11所示。
從圖11可以看出:隨著卷積核的增大,裂縫細(xì)節(jié)不斷被模糊,為了達(dá)到良好的去噪效果,選取的高斯內(nèi)核大小為5×5。
圖11 高斯卷積核確定Fig.11 Determination of Gaussian convolution kernel
2)形態(tài)學(xué)濾波。形態(tài)學(xué)濾波是基于形態(tài)學(xué)對(duì)圖像處理的算法,使用特殊領(lǐng)域運(yùn)算形式:結(jié)構(gòu)元素,在每個(gè)像素位置上與二值圖像對(duì)應(yīng)的區(qū)域進(jìn)行特定的邏輯運(yùn)算。使用形態(tài)學(xué)濾波算法對(duì)圖像進(jìn)行處理的難點(diǎn)是:設(shè)計(jì)結(jié)構(gòu)元素的大小、結(jié)構(gòu)元素的形態(tài)和運(yùn)算的性質(zhì)。最常用的形態(tài)學(xué)濾波算法有腐蝕和膨脹,這2種算法相互組合還可以進(jìn)行開運(yùn)算和閉運(yùn)算。
腐蝕是通過結(jié)構(gòu)元素在圖像上平移,若該結(jié)構(gòu)元素包含于圖像,則該結(jié)構(gòu)元素的中心點(diǎn)會(huì)被修改。膨脹與腐蝕相反,結(jié)構(gòu)元素在圖像上平移,若結(jié)構(gòu)元素集中于圖像,則結(jié)構(gòu)元素所在的中心會(huì)被修改。
先腐蝕后膨脹操作稱之為開運(yùn)算,與開運(yùn)算相反,閉運(yùn)算先膨脹再腐蝕,閉運(yùn)算能夠連接圖像中那些緊緊相鄰卻又沒有連接的區(qū)域,2種運(yùn)算處理的結(jié)果如圖12所示。
圖12 形態(tài)學(xué)濾波處理結(jié)果Fig.12 Morphological filtering results
通過以上實(shí)驗(yàn)發(fā)現(xiàn),閉運(yùn)算處理后的圖片有很多孤立點(diǎn),而開運(yùn)算能夠有效去除圖像中的孤立噪聲,而且圖像的位置和形態(tài)不會(huì)改變,在處理噪聲方面效果較好,以此選取開運(yùn)算來進(jìn)行濾波處理。
3)算法設(shè)計(jì)。本文設(shè)計(jì)2種濾波算法對(duì)圖像進(jìn)行降噪處理:第一種算法是使用高斯濾波結(jié)合二值化進(jìn)行迭代,高斯內(nèi)核為5×5;第二種算法是形態(tài)學(xué)濾波開運(yùn)算結(jié)合中值濾波算法,對(duì)圖像進(jìn)行降噪。2種算法處理后的結(jié)果如圖13所示。
從圖13可以看出:第一種算法不僅不能對(duì)圖像完成降噪處理,反而使得圖像中的噪聲越來越多,裂縫的特征逐漸消失。而第二種方法,在進(jìn)行100 次迭代后,圖像中的噪聲明顯降低。因此,采用中值濾波結(jié)合開運(yùn)算,進(jìn)行路面裂縫的圖像處理來計(jì)算裂縫的幾何特征。
圖13 高斯濾波迭代及中值濾波迭代計(jì)算對(duì)比Fig.13 Comparison of Gauss filter iteration and median filter iteration
經(jīng)過圖像處理以后,噪聲得到有效去除,裂縫特征已非常明顯,近似認(rèn)為圖片中灰度大于0的像素點(diǎn)均屬于裂縫,統(tǒng)計(jì)分析這些白色的像素點(diǎn)便可計(jì)算裂縫的幾何信息。通過對(duì)實(shí)際拍攝路面的測(cè)量和圖片大小的比例換算,可以得到每個(gè)像素的實(shí)際長(zhǎng)度和每個(gè)像素點(diǎn)的實(shí)際面積,通過比例尺可以計(jì)算裂縫的寬度、面積和長(zhǎng)度等信息。
路面裂縫特征信息計(jì)算需要對(duì)圖像進(jìn)行標(biāo)定,以保證后面程序的準(zhǔn)確可靠,因此需要固定采集的設(shè)備的高度、角度,此次實(shí)驗(yàn)數(shù)據(jù)采集時(shí),固定相機(jī)高度為30 cm,角度為垂直拍攝,照片長(zhǎng)寬比調(diào)整為1:1,分辨率為3 500×3 500,現(xiàn)場(chǎng)采集如圖14所示。
經(jīng)測(cè)量,圖14中實(shí)際路面裂縫長(zhǎng)度為20.5 cm,照片中的長(zhǎng)度為3 500個(gè)像素長(zhǎng)度,換算成單個(gè)像素對(duì)應(yīng)的實(shí)際長(zhǎng)度為0.058 6 mm。本文是以手機(jī)拍攝的路面裂縫圖像進(jìn)行標(biāo)定的,也可以采用道路檢測(cè)車采集的照片進(jìn)行標(biāo)定,只需要保證標(biāo)定后采用的圖像都是相同的數(shù)據(jù)來源。
圖14 測(cè)量照片對(duì)應(yīng)的實(shí)際路面尺寸Fig.14 Actual pavement dimensions corresponding to measured photos
3.2.1 裂縫寬度和面積計(jì)算
在進(jìn)行裂縫寬度計(jì)算時(shí),需要對(duì)裂縫形態(tài)進(jìn)行確認(rèn),以區(qū)分縱、橫向裂縫??v、橫向裂縫在卷積神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)時(shí)已經(jīng)得到分類結(jié)果,完成裂縫形態(tài)的分類。本文在2.1節(jié)處對(duì)于縱、橫向裂縫進(jìn)行了不同的命名標(biāo)記,通過讀取帶標(biāo)簽的裂縫圖像的像素,批處理生成橫縱向裂縫像素的CSV 文件,該文件保存了橫縱向裂縫的像素排列的矩陣。將此像素?cái)?shù)據(jù)輸入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),從而能夠進(jìn)行縱、橫向裂縫的分類。
在完成了線性裂縫(縱、橫向裂縫)的分類后,進(jìn)行裂縫的寬度和面積信息的獲取。對(duì)于縱向裂縫,統(tǒng)計(jì)每一行的灰度為255的像素點(diǎn)信息,記錄裂縫最大寬度,并計(jì)算裂縫的平均寬度;對(duì)于橫向裂縫,則是統(tǒng)計(jì)每列的像素信息。計(jì)算路面裂縫面積時(shí),只需統(tǒng)計(jì)圖像中灰度為255的像素點(diǎn)數(shù)目(即白像素點(diǎn)數(shù)目),在得到像素信息后乘以相應(yīng)的比例,便可以得到實(shí)際的路面裂縫寬度和面積。
3.2.2 裂縫長(zhǎng)度計(jì)算
計(jì)算裂縫長(zhǎng)度需要對(duì)圖像進(jìn)行細(xì)化,即將裂縫細(xì)化成一條單位像素的骨架,然后統(tǒng)計(jì)圖像中像素的數(shù)目,再乘以相應(yīng)的比例得到實(shí)際的裂縫長(zhǎng)度。
1)尋找最大輪廓。裂縫長(zhǎng)度計(jì)算需要去除所有的噪聲,只保留裂縫區(qū)域。OpenCV提供了搜索連通區(qū)域的接口,統(tǒng)計(jì)處理后的裂縫圖像連通區(qū)域,對(duì)于僅有單個(gè)裂縫的圖像,搜索記錄圖像中的所有連通區(qū)域,去除其中的孤立點(diǎn),處理效果如圖15所示。
圖15 裂縫填充處理Fig.15 Crack filling treatment
2)提取裂縫骨架。提取裂縫骨架就是對(duì)裂縫進(jìn)行細(xì)化操作,不斷進(jìn)行腐蝕的過程,最終將裂縫細(xì)化成一條連續(xù)寬度為1 個(gè)像素的線。采用Hilditch 算法對(duì)裂縫進(jìn)行細(xì)化,對(duì)于一條直線,它的骨架就是本身,而對(duì)于一個(gè)具有寬度的線,它的骨架就是它的中軸線。對(duì)于圓,骨架是它的圓心,對(duì)于孤立的點(diǎn)來說,本身就是骨架。
細(xì)化是從原來的圖中去掉一些點(diǎn),但仍要保持原來的形狀,實(shí)際上是保持原圖的骨架。判斷一個(gè)點(diǎn)是否能去掉,以8個(gè)相鄰點(diǎn)(八連通)的情況作為判據(jù):內(nèi)部點(diǎn)則不能刪除,刪除后會(huì)出現(xiàn)孔洞;孤立點(diǎn)不能刪除;直線端點(diǎn)不能刪除;若存在邊界點(diǎn),去掉該邊界點(diǎn)后,連通分量不增加,則該邊界點(diǎn)可刪除。使用上面方法,分別對(duì)橫向裂縫和縱向裂縫進(jìn)行細(xì)化,細(xì)化結(jié)果如圖16所示。
圖16 線性裂縫細(xì)化Fig.16 Linear crack refinement
細(xì)化操作后,裂縫變?yōu)閷挾葹? 個(gè)像素的線條,統(tǒng)計(jì)其中灰度為255像素的數(shù)目便可得到裂縫長(zhǎng)度。
對(duì)于圖像中含有多個(gè)裂縫的情況,處理步驟與單個(gè)裂縫相同,同樣需要進(jìn)行圖像預(yù)處理,將裂縫的特征表現(xiàn)出來。所不同的是,在進(jìn)行裂縫特征計(jì)算時(shí),需要對(duì)每個(gè)裂縫獨(dú)自進(jìn)行處理,并對(duì)預(yù)處理后的圖片進(jìn)行連通區(qū)域查找,本文將連通區(qū)域面積大于圖像面積1%的視為裂縫,其他連通區(qū)域則為噪聲。單獨(dú)對(duì)每個(gè)連通區(qū)域進(jìn)行提取,分別計(jì)算幾何特性。雙裂縫圖像處理如圖17所示。從圖17可知:對(duì)2條縱向裂縫進(jìn)行分離和識(shí)別,2條裂縫編號(hào)為裂縫1和裂縫2,然后分別單獨(dú)處理,將裂縫特征提取后乘以比例得到的具體裂縫幾何數(shù)據(jù)如表5所示。
圖17 雙裂縫圖像處理Fig.17 Image processing of double cracks
表5 裂縫的幾何特性Table 5 Crack geometry characteristic information
基于上面的提取方法,能夠進(jìn)行多裂縫的幾何特性提取。在此研究的基礎(chǔ)上,可以將此處理思路結(jié)合道路檢測(cè)車進(jìn)行檢測(cè)使用,達(dá)到批處理提取路面裂縫圖像幾何特性的目的。
1)搭建了包含3層卷積層和2層全連接層的卷積神經(jīng)網(wǎng)絡(luò)模型,并與多層感知機(jī)模型進(jìn)行對(duì)比分析。卷積神經(jīng)網(wǎng)絡(luò)模型和多層感知機(jī)模型對(duì)4類瀝青路面圖像的預(yù)測(cè)和分類準(zhǔn)確率分別為99.75%和93.25%,因此,搭建的該卷積神經(jīng)網(wǎng)絡(luò)模型能很好地識(shí)別路面裂縫類型。
2)THRESH_BINARY 和THRESH_BINARY_INV算法能夠?qū)⒙访媪芽p特征明顯表現(xiàn)出來。進(jìn)一步提出了高斯濾波結(jié)合二值化迭代算法和開運(yùn)算結(jié)合中值濾波算法,分別進(jìn)行路面圖像降噪,對(duì)比分析后得出,開運(yùn)算結(jié)合中值濾波算法能夠很好地處理路面裂縫,并突出裂縫的幾何特性。
3)經(jīng)過濾波處理到了比較理想的二值化圖片,進(jìn)行路面裂縫幾何特征信息提取計(jì)算,提出了將多條線性裂縫分離為單個(gè)裂縫進(jìn)行處理,最后累加計(jì)算單個(gè)裂縫信息的方法,結(jié)合路面雙裂縫實(shí)例進(jìn)行了驗(yàn)證,能夠統(tǒng)計(jì)多條裂縫的信息,效果良好。