姚明海,隆學斌
(浙江工業(yè)大學 信息工程學院, 杭州 310023)
道路井蓋是現(xiàn)代城市建設和交通管理的必需設備,井蓋的缺失和損壞會造成嚴重的交通事故和經(jīng)濟損失。所以道路井蓋的管理變得愈發(fā)重要。然而,道路井蓋妥善的管理必須建立在精確的井蓋缺陷檢測的基礎上。人工排查丟失或者有破損的井蓋會產(chǎn)生諸如效率低、耗時多、精確度不足等問題,而且由于城市道路整改多,人工檢查車道以及草叢內(nèi)等地方的井蓋非常不安全,因此人工排查顯然不是一個好的井蓋缺陷檢測選擇,實現(xiàn)對井蓋狀態(tài)的自動檢測具有重要意義。為了克服人工檢測帶來的這些問題以達到更安全、更快速、更精確地進行井蓋缺陷檢測的目的,一些研究人員在傳感器和圖像處理方法上做出了一些研究。比如,文獻[1]提出了 基于無線傳輸、電機驅(qū)動井蓋鎖結(jié)構(gòu)技術(shù)來實現(xiàn)對丟失井蓋的動態(tài)檢測的方法;文獻[2]通過提取井蓋的顏色、邊緣輪廓等特征,并使用改進的霍夫變換方法,計算窨井蓋的區(qū)域范圍,進而判斷是否有破損或丟失的情況。通過分析這些文獻,可以發(fā)現(xiàn),基于傳感器和圖像處理的方法雖然能實現(xiàn)井蓋的監(jiān)測,但算法的性能不夠好,計算量較大,對破損且有安全隱患的井蓋無法實現(xiàn)自動檢測,難以應用到實際檢測當中。由于深度學習在特征提取上有顯著的優(yōu)勢,基于傳感器和圖像處理的井蓋缺陷識別方法慢慢被卷積神經(jīng)網(wǎng)絡所取代。文獻[3]提出了基于Faster R-CNN[4]的卷積神經(jīng)網(wǎng)絡模型對井蓋進行檢測的方法。該方法證明,卷積神經(jīng)網(wǎng)絡跟之前基于傳感器和圖像處理的方法相比,在準確率和檢測效率上確實取得了飛躍性的進步,但如果在改進激活函數(shù)和網(wǎng)絡結(jié)構(gòu)上做進一步改進的話,性能會更好,這也就是本文的主要研究內(nèi)容。
在激活函數(shù)角度上,目前使用最多的是ReLu激活函數(shù)。一方面,在一定程度上克服了sigmoid和tanh激活函數(shù)的梯度彌散的缺點,為訓練后的網(wǎng)絡帶來了適度的稀疏特性,而且由于ReLu表達式中沒有除法和指數(shù)運算,因此計算速度更快。但是,另一方面,ReLu激活函數(shù)也沒有真正解決輸入小于零時輸出也為零的缺點,同樣也在一定程度上導致了神經(jīng)元信息的丟失,特別是當輸入很多為負值時。因此,本文提出一種基于ReLu改進的激活函數(shù)MReLu和BReLu,其克服了ReLu的信息丟失的缺點,保留更多的輸入為負值的信息并且能夠傳輸更多信息到下一個網(wǎng)絡層。在網(wǎng)絡結(jié)構(gòu)角度上,之前的神經(jīng)網(wǎng)絡多數(shù)是只用一個激活函數(shù),不能最大限度地表達神經(jīng)元的非線性特性。因此,本文運用兩個激活函數(shù)對卷積神經(jīng)網(wǎng)絡模型進行優(yōu)化。實驗表明,本文提出的方法跟現(xiàn)有方法相比,不僅具有更高的識別準確率,而且同時提高了收斂速度和魯棒性,并且可以應用于各種深度神經(jīng)網(wǎng)絡體系結(jié)構(gòu)中。
改進的卷積神經(jīng)網(wǎng)絡是專門用于道路井蓋缺陷檢測的卷積神經(jīng)網(wǎng)絡模型(manhole cover detection convolutional neural network,MCCNN)。如圖1所示,本網(wǎng)絡結(jié)構(gòu)由3個卷積層,兩個最大池化層以及一個全連接層加上softmax層組成。從圖可知,第一個網(wǎng)絡層接收輸入井蓋圖片,然后網(wǎng)絡層1和2執(zhí)行卷積操作,并經(jīng)過激活函數(shù)將神經(jīng)元特征激活,然后再通過最大池化層降低參數(shù)數(shù)量;最后將經(jīng)過只有卷積操作的網(wǎng)絡層3輸出進行全連接,綜合前幾層采集到的井蓋特征,經(jīng)過softmax層將全連接層的輸出映射成概率分布,用于井蓋識別的分類。本文以非線性激活函數(shù)為唯一變量,來研究不同激活函數(shù)對井蓋識別快速性和準確率的影響。
圖1 神經(jīng)網(wǎng)絡模型MCCN結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)[5]提供了一種端到端的學習模型,模型中的參數(shù)可以通過反向傳播中的梯度下降算法進行反復訓練以使輸出結(jié)果接近真實值。經(jīng)過訓練的卷積神經(jīng)網(wǎng)絡能夠?qū)W習到圖像中的特征,比如紋理特征、顏色特征、形狀特征和空間特征等,并完成對圖像特征的提取和分類。作為深度學習的一個重要研究分支,卷積神經(jīng)網(wǎng)絡的特點在于每一層的特征都由上一層部分區(qū)域通過權(quán)值共享的卷積核以及激活函數(shù)激勵得到。這一特點使卷積神經(jīng)網(wǎng)絡在圖像缺陷識別[6]的應用上更優(yōu)于其他神經(jīng)網(wǎng)絡方法。隨著卷積神經(jīng)網(wǎng)絡的流行,一些改進算法也不斷出現(xiàn),如有基于自適應學習率的研究[7],有將DroutOut層運用于池化階段的方法[8],有致力于預訓練與隨機初始化模型[9],這些方法都在一定程度上提高了卷積神經(jīng)網(wǎng)絡的表達能力。本文主要研究在道路井蓋缺陷識別問題上,激活函數(shù)的優(yōu)化對提高分類準確率和降低損失率的影響。激活函數(shù)主要作用是提供網(wǎng)絡的非線性建模能力,如果網(wǎng)絡中只包含線性卷積和全連接運算,即使網(wǎng)絡層數(shù)再多也僅能表達線性映射,難以有效解決實際環(huán)境中的非線性分布的數(shù)據(jù)。當激活函數(shù)應用于卷積神經(jīng)網(wǎng)絡時,主要在前向轉(zhuǎn)播和反向傳播兩個過程中對網(wǎng)絡參數(shù)的訓練產(chǎn)生影響和作用。
因為曾經(jīng)一度被廣泛使用的經(jīng)典激活函數(shù)Sigmoid和Tanh都具有致命的梯度彌散的缺點,所以當前在神經(jīng)網(wǎng)絡模型中激活函數(shù)使用的趨勢就是非飽和修正線性函數(shù)ReLu。修正線性單元(rectified linear unit,ReLu)是這樣一種激活函數(shù),如果輸入的值小于或者等于零,那么輸出就為零;如果輸入大于零,那么就會保持原值不變,原樣輸出。其用數(shù)學表達式定義為:y(x)=max(0,x),如圖2所示。ReLu這種直接地強制某些數(shù)據(jù)為0的做法,在一定程度上,為訓練后的網(wǎng)絡帶來了適度的稀疏特性。它不但減少了參數(shù)之間的相互依存關系,而且緩解了過擬合問題的發(fā)生。相比較傳統(tǒng)的S型激活函數(shù),ReLu不含除法和指數(shù)運算,計算速度更快。但是,經(jīng)過卷積操作的輸出值多數(shù)都會產(chǎn)生大量的負值,如果所有的負值在經(jīng)過修正線性單元后都被取代為零的話,就會丟失大量的輸入信息,對特征提取將產(chǎn)生很大的不良影響,最后導致識別準確率下降。
圖2 ReLu函數(shù)
在近期的卷積神經(jīng)網(wǎng)絡的研究中,多種基于ReLu的激活函數(shù)不斷涌現(xiàn)。其中,雙邊修正線性單元(Bilateral ReLU)就是一個典型的代表,該激活函數(shù)被應用于DehazeNet網(wǎng)絡模型[10],用來增強模糊的原始圖片。
在本文的研究中,我們將基于改進的修正線性單元和改進的雙邊修正線性單元來改善卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)MCCNN性能。
改進的修正線性單元激活函(Modified ReLu,MReLu)的數(shù)學表達式(1)如下:
f(y)=max(tmin,y)
(1)
其中:y表示輸入值,f(y)表示輸出,tmin在MReLu激活函數(shù)中是常量。MReLu激活函數(shù)的如圖3所示。由圖可知,當輸入f(y)>=0時,輸出保留輸入的值不變;當輸入tmin 圖3 MReLu激活函數(shù) 神經(jīng)網(wǎng)絡模型MCCNN在網(wǎng)絡層2的卷積操作后使用MReLu作為其激活函數(shù)示意圖如圖4所示。 圖4 使用MReLu激活函數(shù)的網(wǎng)絡結(jié)構(gòu)圖 雙邊修正線性單元(Bilateral Rectified ReLu,BReLu)可以用下面的數(shù)學等式(2)來描述: f(y)= min(tmaxmax(tminy)) (2) 其中:y表示圖片輸入,f(y)表示輸出,tmin和tmax是BReLu激活函數(shù)的邊緣常量值。BReLu激活函數(shù)如圖5所示。由圖可知,當tmin=0且tmax不存在時,就可以退化成修正線性單元ReLu;在BReLu激活函數(shù)中,tmin和tmax都是常量,且相應地,tmin<0,tmax>1。 圖5 BReLu激活函數(shù)圖 相應地,神經(jīng)網(wǎng)絡模型MCCNN在網(wǎng)絡層2的卷積操作后使用BReLu作為其激活函數(shù)示意圖如圖6所示。 圖6 使用BReLu激活函數(shù)的網(wǎng)絡結(jié)構(gòu)圖 本文中,我們有兩類不同的實驗。一個是在不同數(shù)據(jù)集上對提出的改進的激活函數(shù)的對比驗證;另一個是利用第一個實驗的驗證結(jié)果,將改進的激活函數(shù)放到本研究所要解決的道路井蓋識別的具體應用上。兩個實驗都是基于主流框架TensorFlow[11],實驗設備是一臺基于Tesla K40C的服務器,具體設備參數(shù)如表1所示。并且訓練時使用Xavier初始化網(wǎng)絡參數(shù),將AdamOptimizer[12]作為優(yōu)化器的優(yōu)化算法,softmax[13]交叉熵損失函數(shù)作為損失函數(shù),網(wǎng)絡訓練的其他參數(shù)還有:批處理大小(batch size)為32,輸入井蓋尺寸為208*208,最大迭代次數(shù)為1 000次,學習率為0.000 1,每經(jīng)過5 000次迭代衰減50%。表1為實驗硬件參數(shù)。 表1 硬件參數(shù) 本實驗中,我們將基于1.1所述的MCCNN的神經(jīng)網(wǎng)絡模型,以激活函數(shù)為唯一變量來在兩個典型的數(shù)(其中tmin取-0.25,tmax取2.0)據(jù)集MNIST,CIFAR-10上做對比實驗。 3.1.1 MNIST數(shù)據(jù)集 采用的MNIST數(shù)據(jù)集[14]是由美國中學生手寫阿拉伯數(shù)據(jù)集,共有60 000個28×28維的0-9的灰度手寫數(shù)字圖片,其中50 000個樣本作為訓練集,10 000個樣本作為測試集。在該數(shù)據(jù)集上,應用圖1所示的MCCNN神經(jīng)網(wǎng)絡作為訓練模型,以ReLu,MReLu,BReLu分別作為第雙層網(wǎng)絡的激活函數(shù)來驗證不同激活函數(shù)的性能。為了觀察采用不同激活函數(shù)的網(wǎng)絡表現(xiàn)出的性能,對每次實驗中的測試精度和損失函數(shù)進行表統(tǒng)計。表2~3分別代表激活函數(shù)與迭代次數(shù)對應的損失函數(shù)與精度統(tǒng)計。之所以要對損失函數(shù)進行統(tǒng)計是因為損失函數(shù)是衡量數(shù)據(jù)屬于某個類別的概率,損失函數(shù)越小說明網(wǎng)絡收斂越快,而測試精度則是直觀反映網(wǎng)絡性能的量。 表2 MNIST數(shù)據(jù)集上激活函數(shù)與迭代次數(shù)對應的損失函數(shù)值(Loss) 表3 MNIST數(shù)據(jù)集上激活函數(shù)與迭代次數(shù)對應的損失函數(shù)值(Accuracy/%) 從表看3出,采用MReLu激活函數(shù)的網(wǎng)絡取得了最高的準確率0.985 5,BReLu次之,為0.982 5,而ReLu為0.975 4。說明改進的激活函數(shù)不僅解決了梯度消失問題,還大大提高了網(wǎng)絡的識別率。同時,從表2中可以發(fā)現(xiàn),MReLu不僅是精度最高的,而且是收斂速度最快的,這是因為MReLu的輸出更接近0均值,SGD更接近Natural gradient。因此可知,我們改進的激活函數(shù)有更高的精度和更少的損失,呈現(xiàn)出更好的性能。 3.1.2 CIFAR-10數(shù)據(jù)集 作為本實驗的第二個數(shù)據(jù)集,我們考慮使用CIFAR-10數(shù)據(jù)集[15]。它是由CIFAR(Candian Institute For Advanced Research)收集整理的一個用于機器學習和圖像識別的數(shù)據(jù)集。該數(shù)據(jù)集包含60 000個32*32的彩色圖像,共有10類。其中50 000個訓練圖像和10 000個測試圖像。實驗采用的參數(shù)與網(wǎng)絡模型與MNIST數(shù)據(jù)集一樣。同理,為了觀察采用不同激活函數(shù)的網(wǎng)絡表現(xiàn)出的性能,對每次實驗中的測試精度和損失函數(shù)進行表統(tǒng)計,并且作圖以直觀顯示。表4~5分表代表激活函數(shù)與迭代次數(shù)對應的損失函數(shù)與精度統(tǒng)計。 從表5看出,采用,MReLu激活函數(shù)的網(wǎng)絡取得了最高的準確率0.988 5,BReLu次之,為0.986 5。這兩者與準確率為0.975 4的ReLu激活函數(shù)相比,有了比較明顯的提升。說明改進的激活函數(shù)不僅解決了梯度消失問題,還大大提高了網(wǎng)絡的識別準確率。同時,從表4中可以發(fā)現(xiàn),BReLu與MReLu的收斂速度差不多一樣快,比ReLu激活函數(shù)快一些。因此可知,我們改進的激活函數(shù)有更高的精度和更少的損失,呈現(xiàn)出更好的性能。 經(jīng)過上面兩種公共數(shù)據(jù)集的驗證,我們發(fā)現(xiàn)改進的激活函數(shù)確實有更好的性能。因此,為了進一步證明本結(jié)論,我們將其應用到本文要解決的井蓋識別問題的應用上。 3.2.1 實驗數(shù)據(jù) 本文訓練的樣本來源于定期從城市視頻監(jiān)控抓取的視頻流集,共有1 500路視頻,將視頻分解成幀圖片并經(jīng)過篩選后,采集其中的5 000張圖片,包含有完整井蓋、破損井蓋和井蓋丟失3種圖片?,F(xiàn)將其中4 000張圖片作為訓練集,剩下1 000張作為測試集,分類結(jié)果分為A、B、C三類,分別代表完整井蓋、破損井蓋和丟失井蓋。圖片像素作為輸入進入MCCNN神經(jīng)網(wǎng)絡后統(tǒng)一尺寸為208*208。如圖7所示。 3.2.2 訓練和識別過程 將訓練集中的實驗數(shù)據(jù)取出,然后進行人工標注,分為完整井蓋,井蓋缺失,井蓋破損三類。然后將標注好的尺寸為208*208的訓練集數(shù)據(jù)輸入到本文中以MReLu、MReLu和BReLu作為唯一變量的MCNN神經(jīng)網(wǎng)絡,然后經(jīng)過5 000次正向傳播和反向傳播的反復迭代來進行網(wǎng)絡參數(shù)訓練,最后得出分類結(jié)果。其中,正向傳播的作用是提取井蓋特征,反向傳播的作用是通過梯度下降的優(yōu)化算法來減少損失函數(shù),進而讓分類的結(jié)果接近真實值。 表4 CIFAR-10數(shù)據(jù)集上激活函數(shù)與迭代次數(shù)對應的損失函數(shù)值(Loss) 表5 CIFAR-10數(shù)據(jù)集上激活函數(shù)與迭代次數(shù)對應的損失函數(shù)值(Acurracy/%) 圖7 數(shù)據(jù)集內(nèi)樣本分類 3.2.3 實驗結(jié)果分析 將井蓋圖片進行訓練后,3種不同井蓋類別的識別結(jié)果如表6所示,整體井蓋識別結(jié)果如表7所示,包括識別準確率和損失率。 表6 不同井蓋類型識別結(jié)果 整體識別精度與損失由表7統(tǒng)計如下: 表7 井蓋識別結(jié)果 根據(jù)表6第二、四、六列的第四、五行數(shù)據(jù),可以看出該城市中井蓋出現(xiàn)破損比井蓋丟失的情況更多;由表7激活函數(shù)ReLu、MReLu、BReLu對識別結(jié)果的準確率和損失率可知,利用改進的激活函數(shù)檢測到的井蓋丟失或者破損的精度會比ReLu激活函數(shù)更高,且收斂速度更快。由于井蓋丟失時特征比較明顯,很容易提取,比如出現(xiàn)大面積空洞,而井蓋破損程度各異,大多數(shù)沒有明顯的共同特征,所以檢測效果在ReLu、MReLu以及BReLu作為激活函數(shù)都會相比井蓋丟失情況效果稍差;完整井蓋的檢測精度是這3個識別類別中精度最高的,特別是應用改進的激活函數(shù),其中BReLu達到98.56%,MReLu達到98.28%,比ReLu的96.56%高出許多。由此可見,改進的激活函數(shù)改善了井蓋缺陷檢測的精度與性能。 本文研究中,提出了在道路井蓋缺陷識別的應用中,通過用改進的激活函數(shù)MReLu和BReLu來替代修正單元ReLu來作為非線性激活函數(shù)。實驗證明,改進的激活函數(shù)不僅能夠提高井蓋缺陷識別的精度,而且還能加快收斂速度。但算法仍有不足之處,例如檢測過程中出現(xiàn)的漏檢、誤檢,仍不可避免;如何改進樣本質(zhì)量,改變網(wǎng)絡參數(shù)tmin和tmax以再提高檢測精度;此外,此算法還有一個限制,就是在網(wǎng)絡層1和網(wǎng)絡層2的激活函數(shù)不能同時使用MReLu或者BReLu,因為第二、雙層的卷積操作輸出值包含大量不同的特征信息。在未來的研究中,將進一步尋找解決這些問題的方法,以到達改善道路井蓋識別的性能。2.2 雙邊修正線性單元
3 實驗結(jié)果與分析
3.1 不同公共數(shù)據(jù)集上的驗證
3.2 井蓋數(shù)據(jù)集上的驗證
4 結(jié)束語