許煒婷
(廣東工業(yè)大學,廣東 廣州 510006)
改革開放以來,經(jīng)過一代又一代公路建設人員的不懈奮斗,中國公路網(wǎng)絡基本形成。2021年,我國公路養(yǎng)護里程525.16 萬公里,占公路總里程的99.4%,接近100%。公路養(yǎng)護已由傳統(tǒng)的“搶修時代”過渡到“全面養(yǎng)護時代”,高效又智能的公路養(yǎng)護方式成為新時代提升道路服務水平的關鍵。
根據(jù)實地調(diào)研,目前公路破損的檢測方法仍以人工查看方式為主,即養(yǎng)護隊伍駕駛養(yǎng)護車輛行駛在管養(yǎng)路段,通過養(yǎng)護人員的眼睛和經(jīng)驗判斷路況是否良好。該傳統(tǒng)方法相對落后,人工檢測整體覆蓋率小、精度差、誤差率高,容易受養(yǎng)護隊伍的工作認真程度、精神狀態(tài)和專業(yè)養(yǎng)護經(jīng)驗的影響。在新時代大趨勢下,若能用路面破損智能檢測方法代替人工查看,在裂縫形成初期就及時被發(fā)現(xiàn)并進行養(yǎng)護處理,將大大提高公路養(yǎng)護成本和效率。基于卷積神經(jīng)網(wǎng)絡的路面裂縫研究方法應運而生,該方法可大大提高養(yǎng)護效率,降低人工成本。本文從卷積神經(jīng)網(wǎng)絡的基本概念出發(fā),對五種不同的卷積神經(jīng)網(wǎng)絡模型和兩種卷積神經(jīng)網(wǎng)絡框架進行分析,最后探討4 種基于卷積神經(jīng)網(wǎng)絡的瀝青路面裂縫識別模型。
神經(jīng)元即神經(jīng)元細胞,它分為細胞體和突起,是神經(jīng)系統(tǒng)最基本的結構,突起分為樹突和軸突,神經(jīng)元A的樹突接受神經(jīng)元B 的軸突傳來的沖動,并傳給神經(jīng)元A的細胞體,可以看出樹突有信息傳遞的功能。
神經(jīng)網(wǎng)絡從生物學的神經(jīng)元獲得靈感,將多個神經(jīng)元組合起來就構成了神經(jīng)網(wǎng)絡,圖1(f 為激活函數(shù))是一個前饋神經(jīng)網(wǎng)絡。前饋神經(jīng)網(wǎng)絡指的是信息數(shù)據(jù)從輸入層開始輸入,每一層都是接收上一層的輸出作為輸入,并將輸出結果作為下一層的輸入,整個網(wǎng)絡沒有循環(huán)。卷積神經(jīng)網(wǎng)絡是一個前饋神經(jīng)網(wǎng)絡。
圖1 神經(jīng)網(wǎng)絡模型
卷積神經(jīng)網(wǎng)絡在1994 年被學者研究發(fā)現(xiàn),它推動了深度學習的發(fā)展。原始數(shù)據(jù)通過不同的濾波器進行卷積,得到C1卷積層的三個特征映射圖。C1層得到的特征映射圖經(jīng)過加權值,加偏執(zhí)和激活函數(shù)(sigmoid)得到S2 層的特征映射圖,以此類推,得到S4 層。最終將S4 得到的像素值光柵化,輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡,得到輸出,具體過程如圖2所示。
圖2 卷積神經(jīng)網(wǎng)絡結構
深度指網(wǎng)絡層次數(shù)量,寬度指神經(jīng)元數(shù)量,提升卷積神經(jīng)網(wǎng)絡性能最直接的辦法是增加網(wǎng)絡深度和寬度,但需要把握好度,原因是網(wǎng)絡層數(shù)越多,梯度越來越彌散;網(wǎng)絡越大(神經(jīng)元數(shù)量越多),參數(shù)越多,計算難度大,會出現(xiàn)過擬合現(xiàn)象。針對過擬合現(xiàn)象,可以采用最大池采樣方法來解決。最大池化指的是取某個小區(qū)域中數(shù)值最大的點。最大池采樣可以降維,使降維后的圖像特征更容易分類。
卷積神經(jīng)網(wǎng)絡模型一般由輸入層、隱藏層和輸出層構成,隱藏層包括卷積層、池化層、全連接層等。卷積層進行卷積運算,類似濾波器,作用是提取特征;池化層用最大值或者平均值的方式對圖像進行池化,作用是降低維數(shù),減少計算量,使模型有抗噪能力;全連接層作用是對卷積層提取到的圖像特征進行分類。
LeNet 網(wǎng)絡模型可以算是卷積神經(jīng)網(wǎng)絡的開端,LeNet-5和LeNet有一點差別,LeNet-5把tanh激活函數(shù)換成了ReLU。LeNet 網(wǎng)絡模型一共有6 層,3 層卷積層,2 層池化層,1 層全連接層,經(jīng)典的卷積神經(jīng)網(wǎng)絡LeNet結構如圖3所示。
圖3 LeNet卷積神經(jīng)網(wǎng)絡結構模型圖
GoogLeNet 卷積神經(jīng)網(wǎng)絡模型的創(chuàng)新點有:一是將全連接變成稀疏連接,作用是可以減少參數(shù)。二是加入了Inception 結構,與其他卷積神經(jīng)網(wǎng)絡結構中卷積層與卷積層、卷積層和池化層之間都是串聯(lián)不同,GoogLeNet卷積神經(jīng)網(wǎng)絡中的卷積層和池化層是并聯(lián)。
AlexNet 網(wǎng)絡模型[1]一共有8 層,前5 層是卷積層,后3 層是全連接層,如圖4 所示。AlexNet 網(wǎng)絡模型用兩塊GPU 來運算,可以提高運算的效率。AlexNet網(wǎng)絡模型的創(chuàng)新點大致有四個:一是用線性整流函數(shù)(RELU)激活函數(shù)取代傳統(tǒng)激活函數(shù),解決梯度發(fā)散的問題,可以減少計算量;二是局部響應歸一化(Local Response Normalization),因為ReLU激活函數(shù)得到的值域沒有區(qū)間,所以要對值域進行歸一化;三是在第二個全連接層和第三個全連接層設置dropout,可以防止出現(xiàn)過擬合的情況;四是數(shù)據(jù)擴張(data augmentation),通過對原始數(shù)據(jù)進行適當?shù)淖儞Q,得到差異更大的數(shù)據(jù),和dropout 一樣,數(shù)據(jù)擴張也是一種防止出現(xiàn)過擬合的方法。
圖4 AlexNet網(wǎng)絡結構模型圖
VGGNet 卷積神經(jīng)網(wǎng)絡模型[3]和AlexNet 網(wǎng)絡模型一樣,有5 個卷積層,3 個全連接層,如圖5 所示。文章里VGGNet 嘗試了6 種不同的模型結構,分別是VGG11、VGG11-LRN、VGG13、VGG16-1、VGG16-3 和VGG19(VGG11-LRN 表示第一層卷積采用了LRN,如圖6 中A-LRN 類所示;VGG16-1 表示后三組卷積塊中最后一層卷積采用卷積核尺寸為1 示后,如圖6 中C 類所示。因為大部分計算機硬件只能優(yōu)化密集矩陣計算,同時大量實驗證明:將稀疏矩陣聚類為較為密集的子矩陣可以提高計算性能,所以加入了Inception 結構即可以減少計算量又可以提高計算性能。三是使用大量1 用大的卷積核進行降維,修正relu 激活函數(shù),減少計算量,如圖7 所示。四是加入2 個輔助分類器,用于向前傳導梯度,減輕梯度消失現(xiàn)象。
圖6 VGGNet卷積神經(jīng)網(wǎng)絡模型分類
圖7 加入1入助的卷積核后的Inception結構模型圖
2015 年,ResNet 提出將輸入信息直接傳給輸出的思想,將直接學習目標值轉變?yōu)閷W習輸入值與輸出值的殘差。輸出h(x)=x+f(x),f(x)殘差=h(x)-f(x)??梢妼W習目標是f(x),f(x)相比h(x),更容易優(yōu)化。殘差單元由卷積層(Conv)、歸一化層(BN)、激活函數(shù)(ReLU)等組成。歸一化操作是將數(shù)據(jù)用某種算法處理后,一般對每一層網(wǎng)絡層都進行歸一化處理,使每一層網(wǎng)絡層數(shù)據(jù)更加獨立。使激活函數(shù)對特征進行非線性變換,使神經(jīng)網(wǎng)絡有更高的擬合性。殘差神經(jīng)網(wǎng)絡是由多個殘差單元組成,可以解決解決深度增加后,梯度消失或者是網(wǎng)絡退化的問題。殘差單元和殘差網(wǎng)絡的結構對網(wǎng)絡的學習能力和泛化能力影響很大。
表1 是常見的卷積神經(jīng)網(wǎng)絡模型的對比,模型相互之間有共同的地方,基本都有卷積層、池化層、全連接層,而深度殘差網(wǎng)絡(ResNet)則跳出原來的思維模式,將輸入信息直接傳給輸出,作為初始輸出結果,在實際應用時,應該根據(jù)實際問題選擇適合的網(wǎng)絡模型。
表1 卷積神經(jīng)網(wǎng)絡模型對比
Caffe 是快速特征嵌入的卷積結構,完全開源的Caffe 框架的核心語言是C++,適合二維圖像數(shù)據(jù)的特征提取。Caffe 的核心模塊有三個,分別是 Blobs、Layers 和Nets。Blobs 模塊可以對數(shù)據(jù)進行存儲、交互和處理,確定了數(shù)據(jù)內(nèi)存的接口。Layers 定義了許多層級結構,它將Blobs 視為輸入輸出。Nets 是一系列Layers的集合,將這些層結構形成一個網(wǎng)圖。
TensorFlow 支持很多平臺,如GPU、CPU 等絕大多數(shù)平臺都可以。TensorFlow 相對Caffe 工作流程簡單、開源、框架具有高度靈活性、自動求微分等優(yōu)點。
李楠[3]利用Caffe框架,對LeNet-5網(wǎng)絡模型進行輕微調(diào)整后對圖像進行裂縫有無識別,實驗結果顯示,將激活函數(shù)Sigmoid 換成Relu 的LeNet-5 網(wǎng)絡模型能較好的識別裂縫。該網(wǎng)絡由兩個卷積層,兩個池化層和兩個全連接層。李楠一共用900 張瀝青路面的圖像,其中750 張用于訓練(350 張有裂縫,400 張無裂縫),150 張用于測試(75 張有裂縫,75 張無裂縫)。作者首先對圖像進行歸一化和勻光處理,然后再采用lmdb 格式的Caffe 框架上對圖像進行歸一化均值處理。經(jīng)過超過500 次迭代后卷積神經(jīng)網(wǎng)絡已收斂,可以較好的對裂縫圖像和完好圖像進行分類,實驗結果準確率可達到0.92。
車艷麗[4]研究的是將AlexNet網(wǎng)絡模型改進后的卷積神經(jīng)網(wǎng)絡,改進后網(wǎng)絡層數(shù)更少、計算參數(shù)更少、模型訓練速度更快,識別精度更高。作者用20000 張圖像作為訓練集,10000 張作為測試集,這30000 張圖像可以分為裂縫圖像和無裂縫圖像。
首先她對圖像預處理,目的是降低圖像的噪聲,讓圖像的裂縫與圖像的背景形成比較強的對比度。她用到的方法有用Canny 算子檢測邊緣,用改進的Ostu 算法閾值分割,用高斯濾波平滑紋理獲取圖像背景,用改進后的亮度高程模型進行勻光處理。她采用的是Caffe平臺框架,因為需要先對瀝青裂縫圖像進行數(shù)據(jù)格式轉換,作者選擇用LMDB 數(shù)據(jù)格式,因為該數(shù)據(jù)格式精簡、高效和省內(nèi)存,如圖8 所示是作者改進后的卷積神經(jīng)網(wǎng)絡。
圖8 優(yōu)化后的AlexNet網(wǎng)絡結構
趙珊珊等[5]基于Caffe 框架,對3000 張大小為2400×3150像素的圖像進行研究。首先對圖像進行預處理,用的方法是強度歸一化(去除路面光照不均帶來的影響)和像素飽和化。然后對VGGNet網(wǎng)絡模型進行改進:一是把原始網(wǎng)絡convl_l,conv2_2,conv3_3,conv4_3直接與最后一個卷積層連接;二是去掉原始網(wǎng)絡的第5個卷積層、第5 個池化層和全連接層,因為作者認為第5 個卷積層、第5 個池化層會生成小又模糊的特征圖,影響結果;全連接層計算耗時長,去掉可以減少訓練時間。該方法對有明顯裂縫的路面圖像識別效果好,但對復雜的破損圖像難識別,該模型可用于簡單的裂縫識別。
王丹等[6]基于Tensorflow 框架,對1006 張圖像進行研究。首先對圖像采用旋轉、鏡像、隨機裁剪等方式進行數(shù)據(jù)增強,將原有的1006 張圖像增加到8048 張。然后對VGGNet網(wǎng)絡模型進行改進:一是將原有的三個全連接層全部替換成卷積層,變成全卷積神經(jīng)網(wǎng)絡(FCN);二是利用相對深層的網(wǎng)絡特征感受野大但容易丟失細節(jié),相對淺層的網(wǎng)絡特征感受野小但能突出細節(jié)的規(guī)律,作者將淺層網(wǎng)絡特征和深層網(wǎng)絡特征融合,這樣即能提高改進后的網(wǎng)絡模型對細節(jié)的提取能力。三是用空洞卷積代替池化層,保留圖像細節(jié),作者用的是改進后(三個并行通道)的多尺度空洞卷積。
綜上所述,卷積神經(jīng)網(wǎng)絡模型種類多,卷積神經(jīng)網(wǎng)絡框架各有優(yōu)缺點,可派生出多種瀝青路面裂縫識別模型。本文對這些模型分析后的結論是:應用基于卷積神經(jīng)網(wǎng)絡的瀝青路面裂縫識別模型時,在實際收集路面裂縫圖像過程中,容易受到標線、井蓋、路面垃圾等雜物的影響。如何去除雜物對裂縫圖像處理的影響,是未來的路面破損圖像處理的重要研究課題,也是提高路面裂縫檢測精度的關鍵。研究者需要選擇合適的算法、合適的網(wǎng)絡模型以及合適的網(wǎng)絡框架。隨著計算機技術的發(fā)展,希望能開發(fā)對全過程路面病害進行智能監(jiān)測和識別的一體機,實現(xiàn)智能檢測。