姚明海,隆學斌
(浙江工業大學 信息工程學院, 杭州 310023)
道路井蓋是現代城市建設和交通管理的必需設備,井蓋的缺失和損壞會造成嚴重的交通事故和經濟損失。所以道路井蓋的管理變得愈發重要。然而,道路井蓋妥善的管理必須建立在精確的井蓋缺陷檢測的基礎上。人工排查丟失或者有破損的井蓋會產生諸如效率低、耗時多、精確度不足等問題,而且由于城市道路整改多,人工檢查車道以及草叢內等地方的井蓋非常不安全,因此人工排查顯然不是一個好的井蓋缺陷檢測選擇,實現對井蓋狀態的自動檢測具有重要意義。為了克服人工檢測帶來的這些問題以達到更安全、更快速、更精確地進行井蓋缺陷檢測的目的,一些研究人員在傳感器和圖像處理方法上做出了一些研究。比如,文獻[1]提出了 基于無線傳輸、電機驅動井蓋鎖結構技術來實現對丟失井蓋的動態檢測的方法;文獻[2]通過提取井蓋的顏色、邊緣輪廓等特征,并使用改進的霍夫變換方法,計算窨井蓋的區域范圍,進而判斷是否有破損或丟失的情況。通過分析這些文獻,可以發現,基于傳感器和圖像處理的方法雖然能實現井蓋的監測,但算法的性能不夠好,計算量較大,對破損且有安全隱患的井蓋無法實現自動檢測,難以應用到實際檢測當中。由于深度學習在特征提取上有顯著的優勢,基于傳感器和圖像處理的井蓋缺陷識別方法慢慢被卷積神經網絡所取代。文獻[3]提出了基于Faster R-CNN[4]的卷積神經網絡模型對井蓋進行檢測的方法。該方法證明,卷積神經網絡跟之前基于傳感器和圖像處理的方法相比,在準確率和檢測效率上確實取得了飛躍性的進步,但如果在改進激活函數和網絡結構上做進一步改進的話,性能會更好,這也就是本文的主要研究內容。
在激活函數角度上,目前使用最多的是ReLu激活函數。一方面,在一定程度上克服了sigmoid和tanh激活函數的梯度彌散的缺點,為訓練后的網絡帶來了適度的稀疏特性,而且由于ReLu表達式中沒有除法和指數運算,因此計算速度更快。但是,另一方面,ReLu激活函數也沒有真正解決輸入小于零時輸出也為零的缺點,同樣也在一定程度上導致了神經元信息的丟失,特別是當輸入很多為負值時。因此,本文提出一種基于ReLu改進的激活函數MReLu和BReLu,其克服了ReLu的信息丟失的缺點,保留更多的輸入為負值的信息并且能夠傳輸更多信息到下一個網絡層。在網絡結構角度上,之前的神經網絡多數是只用一個激活函數,不能最大限度地表達神經元的非線性特性。因此,本文運用兩個激活函數對卷積神經網絡模型進行優化。實驗表明,本文提出的方法跟現有方法相比,不僅具有更高的識別準確率,而且同時提高了收斂速度和魯棒性,并且可以應用于各種深度神經網絡體系結構中。
改進的卷積神經網絡是專門用于道路井蓋缺陷檢測的卷積神經網絡模型(manhole cover detection convolutional neural network,MCCNN)。如圖1所示,本網絡結構由3個卷積層,兩個最大池化層以及一個全連接層加上softmax層組成。從圖可知,第一個網絡層接收輸入井蓋圖片,然后網絡層1和2執行卷積操作,并經過激活函數將神經元特征激活,然后再通過最大池化層降低參數數量;最后將經過只有卷積操作的網絡層3輸出進行全連接,綜合前幾層采集到的井蓋特征,經過softmax層將全連接層的輸出映射成概率分布,用于井蓋識別的分類。本文以非線性激活函數為唯一變量,來研究不同激活函數對井蓋識別快速性和準確率的影響。

圖1 神經網絡模型MCCN結構圖
卷積神經網絡(convolutional neural network,CNN)[5]提供了一種端到端的學習模型,模型中的參數可以通過反向傳播中的梯度下降算法進行反復訓練以使輸出結果接近真實值。經過訓練的卷積神經網絡能夠學習到圖像中的特征,比如紋理特征、顏色特征、形狀特征和空間特征等,并完成對圖像特征的提取和分類。作為深度學習的一個重要研究分支,卷積神經網絡的特點在于每一層的特征都由上一層部分區域通過權值共享的卷積核以及激活函數激勵得到。這一特點使卷積神經網絡在圖像缺陷識別[6]的應用上更優于其他神經網絡方法。隨著卷積神經網絡的流行,一些改進算法也不斷出現,如有基于自適應學習率的研究[7],有將DroutOut層運用于池化階段的方法[8],有致力于預訓練與隨機初始化模型[9],這些方法都在一定程度上提高了卷積神經網絡的表達能力。本文主要研究在道路井蓋缺陷識別問題上,激活函數的優化對提高分類準確率和降低損失率的影響。激活函數主要作用是提供網絡的非線性建模能力,如果網絡中只包含線性卷積和全連接運算,即使網絡層數再多也僅能表達線性映射,難以有效解決實際環境中的非線性分布的數據。當激活函數應用于卷積神經網絡時,主要在前向轉播和反向傳播兩個過程中對網絡參數的訓練產生影響和作用。
因為曾經一度被廣泛使用的經典激活函數Sigmoid和Tanh都具有致命的梯度彌散的缺點,所以當前在神經網絡模型中激活函數使用的趨勢就是非飽和修正線性函數ReLu。修正線性單元(rectified linear unit,ReLu)是這樣一種激活函數,如果輸入的值小于或者等于零,那么輸出就為零;如果輸入大于零,那么就會保持原值不變,原樣輸出。其用數學表達式定義為:y(x)=max(0,x),如圖2所示。ReLu這種直接地強制某些數據為0的做法,在一定程度上,為訓練后的網絡帶來了適度的稀疏特性。它不但減少了參數之間的相互依存關系,而且緩解了過擬合問題的發生。相比較傳統的S型激活函數,ReLu不含除法和指數運算,計算速度更快。但是,經過卷積操作的輸出值多數都會產生大量的負值,如果所有的負值在經過修正線性單元后都被取代為零的話,就會丟失大量的輸入信息,對特征提取將產生很大的不良影響,最后導致識別準確率下降。

圖2 ReLu函數
在近期的卷積神經網絡的研究中,多種基于ReLu的激活函數不斷涌現。其中,雙邊修正線性單元(Bilateral ReLU)就是一個典型的代表,該激活函數被應用于DehazeNet網絡模型[10],用來增強模糊的原始圖片。
在本文的研究中,我們將基于改進的修正線性單元和改進的雙邊修正線性單元來改善卷積神經網絡結構MCCNN性能。
改進的修正線性單元激活函(Modified ReLu,MReLu)的數學表達式(1)如下:
f(y)=max(tmin,y)
(1)
其中:y表示輸入值,f(y)表示輸出,tmin在MReLu激活函數中是常量。MReLu激活函數的如圖3所示。由圖可知,當輸入f(y)>=0時,輸出保留輸入的值不變;當輸入tmin 圖3 MReLu激活函數 神經網絡模型MCCNN在網絡層2的卷積操作后使用MReLu作為其激活函數示意圖如圖4所示。 圖4 使用MReLu激活函數的網絡結構圖 雙邊修正線性單元(Bilateral Rectified ReLu,BReLu)可以用下面的數學等式(2)來描述: f(y)= min(tmaxmax(tminy)) (2) 其中:y表示圖片輸入,f(y)表示輸出,tmin和tmax是BReLu激活函數的邊緣常量值。BReLu激活函數如圖5所示。由圖可知,當tmin=0且tmax不存在時,就可以退化成修正線性單元ReLu;在BReLu激活函數中,tmin和tmax都是常量,且相應地,tmin<0,tmax>1。 圖5 BReLu激活函數圖 相應地,神經網絡模型MCCNN在網絡層2的卷積操作后使用BReLu作為其激活函數示意圖如圖6所示。 圖6 使用BReLu激活函數的網絡結構圖 本文中,我們有兩類不同的實驗。一個是在不同數據集上對提出的改進的激活函數的對比驗證;另一個是利用第一個實驗的驗證結果,將改進的激活函數放到本研究所要解決的道路井蓋識別的具體應用上。兩個實驗都是基于主流框架TensorFlow[11],實驗設備是一臺基于Tesla K40C的服務器,具體設備參數如表1所示。并且訓練時使用Xavier初始化網絡參數,將AdamOptimizer[12]作為優化器的優化算法,softmax[13]交叉熵損失函數作為損失函數,網絡訓練的其他參數還有:批處理大小(batch size)為32,輸入井蓋尺寸為208*208,最大迭代次數為1 000次,學習率為0.000 1,每經過5 000次迭代衰減50%。表1為實驗硬件參數。 表1 硬件參數 本實驗中,我們將基于1.1所述的MCCNN的神經網絡模型,以激活函數為唯一變量來在兩個典型的數(其中tmin取-0.25,tmax取2.0)據集MNIST,CIFAR-10上做對比實驗。 3.1.1 MNIST數據集 采用的MNIST數據集[14]是由美國中學生手寫阿拉伯數據集,共有60 000個28×28維的0-9的灰度手寫數字圖片,其中50 000個樣本作為訓練集,10 000個樣本作為測試集。在該數據集上,應用圖1所示的MCCNN神經網絡作為訓練模型,以ReLu,MReLu,BReLu分別作為第雙層網絡的激活函數來驗證不同激活函數的性能。為了觀察采用不同激活函數的網絡表現出的性能,對每次實驗中的測試精度和損失函數進行表統計。表2~3分別代表激活函數與迭代次數對應的損失函數與精度統計。之所以要對損失函數進行統計是因為損失函數是衡量數據屬于某個類別的概率,損失函數越小說明網絡收斂越快,而測試精度則是直觀反映網絡性能的量。 表2 MNIST數據集上激活函數與迭代次數對應的損失函數值(Loss) 表3 MNIST數據集上激活函數與迭代次數對應的損失函數值(Accuracy/%) 從表看3出,采用MReLu激活函數的網絡取得了最高的準確率0.985 5,BReLu次之,為0.982 5,而ReLu為0.975 4。說明改進的激活函數不僅解決了梯度消失問題,還大大提高了網絡的識別率。同時,從表2中可以發現,MReLu不僅是精度最高的,而且是收斂速度最快的,這是因為MReLu的輸出更接近0均值,SGD更接近Natural gradient。因此可知,我們改進的激活函數有更高的精度和更少的損失,呈現出更好的性能。 3.1.2 CIFAR-10數據集 作為本實驗的第二個數據集,我們考慮使用CIFAR-10數據集[15]。它是由CIFAR(Candian Institute For Advanced Research)收集整理的一個用于機器學習和圖像識別的數據集。該數據集包含60 000個32*32的彩色圖像,共有10類。其中50 000個訓練圖像和10 000個測試圖像。實驗采用的參數與網絡模型與MNIST數據集一樣。同理,為了觀察采用不同激活函數的網絡表現出的性能,對每次實驗中的測試精度和損失函數進行表統計,并且作圖以直觀顯示。表4~5分表代表激活函數與迭代次數對應的損失函數與精度統計。 從表5看出,采用,MReLu激活函數的網絡取得了最高的準確率0.988 5,BReLu次之,為0.986 5。這兩者與準確率為0.975 4的ReLu激活函數相比,有了比較明顯的提升。說明改進的激活函數不僅解決了梯度消失問題,還大大提高了網絡的識別準確率。同時,從表4中可以發現,BReLu與MReLu的收斂速度差不多一樣快,比ReLu激活函數快一些。因此可知,我們改進的激活函數有更高的精度和更少的損失,呈現出更好的性能。 經過上面兩種公共數據集的驗證,我們發現改進的激活函數確實有更好的性能。因此,為了進一步證明本結論,我們將其應用到本文要解決的井蓋識別問題的應用上。 3.2.1 實驗數據 本文訓練的樣本來源于定期從城市視頻監控抓取的視頻流集,共有1 500路視頻,將視頻分解成幀圖片并經過篩選后,采集其中的5 000張圖片,包含有完整井蓋、破損井蓋和井蓋丟失3種圖片。現將其中4 000張圖片作為訓練集,剩下1 000張作為測試集,分類結果分為A、B、C三類,分別代表完整井蓋、破損井蓋和丟失井蓋。圖片像素作為輸入進入MCCNN神經網絡后統一尺寸為208*208。如圖7所示。 3.2.2 訓練和識別過程 將訓練集中的實驗數據取出,然后進行人工標注,分為完整井蓋,井蓋缺失,井蓋破損三類。然后將標注好的尺寸為208*208的訓練集數據輸入到本文中以MReLu、MReLu和BReLu作為唯一變量的MCNN神經網絡,然后經過5 000次正向傳播和反向傳播的反復迭代來進行網絡參數訓練,最后得出分類結果。其中,正向傳播的作用是提取井蓋特征,反向傳播的作用是通過梯度下降的優化算法來減少損失函數,進而讓分類的結果接近真實值。 表4 CIFAR-10數據集上激活函數與迭代次數對應的損失函數值(Loss) 表5 CIFAR-10數據集上激活函數與迭代次數對應的損失函數值(Acurracy/%) 圖7 數據集內樣本分類 3.2.3 實驗結果分析 將井蓋圖片進行訓練后,3種不同井蓋類別的識別結果如表6所示,整體井蓋識別結果如表7所示,包括識別準確率和損失率。 表6 不同井蓋類型識別結果 整體識別精度與損失由表7統計如下: 表7 井蓋識別結果 根據表6第二、四、六列的第四、五行數據,可以看出該城市中井蓋出現破損比井蓋丟失的情況更多;由表7激活函數ReLu、MReLu、BReLu對識別結果的準確率和損失率可知,利用改進的激活函數檢測到的井蓋丟失或者破損的精度會比ReLu激活函數更高,且收斂速度更快。由于井蓋丟失時特征比較明顯,很容易提取,比如出現大面積空洞,而井蓋破損程度各異,大多數沒有明顯的共同特征,所以檢測效果在ReLu、MReLu以及BReLu作為激活函數都會相比井蓋丟失情況效果稍差;完整井蓋的檢測精度是這3個識別類別中精度最高的,特別是應用改進的激活函數,其中BReLu達到98.56%,MReLu達到98.28%,比ReLu的96.56%高出許多。由此可見,改進的激活函數改善了井蓋缺陷檢測的精度與性能。 本文研究中,提出了在道路井蓋缺陷識別的應用中,通過用改進的激活函數MReLu和BReLu來替代修正單元ReLu來作為非線性激活函數。實驗證明,改進的激活函數不僅能夠提高井蓋缺陷識別的精度,而且還能加快收斂速度。但算法仍有不足之處,例如檢測過程中出現的漏檢、誤檢,仍不可避免;如何改進樣本質量,改變網絡參數tmin和tmax以再提高檢測精度;此外,此算法還有一個限制,就是在網絡層1和網絡層2的激活函數不能同時使用MReLu或者BReLu,因為第二、雙層的卷積操作輸出值包含大量不同的特征信息。在未來的研究中,將進一步尋找解決這些問題的方法,以到達改善道路井蓋識別的性能。

2.2 雙邊修正線性單元


3 實驗結果與分析

3.1 不同公共數據集上的驗證


3.2 井蓋數據集上的驗證





4 結束語