劉曉瑤,邱建林,吳湘君
(1.南通大學(xué) 電氣工程學(xué)院,江蘇 南通 226019; 2.南通大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南通 226019)
傳統(tǒng)的車牌定位方法包括邊緣檢測[1]、小波變換[2]、紋理特征提取[3]、顏色特征提取[4-6]、角點檢測[7]等。這些方法通過人工提取車牌特征來完成車牌的定位,提取的車牌特征單一,且受環(huán)境影響較大,在復(fù)雜環(huán)境下的定位效果并不理想。多特征融合的車牌定位算法[8,9]雖然能避免單一特征所帶來的環(huán)境適應(yīng)性差的問題,但在背景復(fù)雜的環(huán)境下,這些方法仍然有很高的誤檢測率。支持向量機(support vector machine,SVM)等機器學(xué)習(xí)算法的引入使背景中的噪聲能進一步被抑制[10,11],但由于傳統(tǒng)機器學(xué)習(xí)算法魯棒性較差,在復(fù)雜環(huán)境下的效果仍然不理想。羅斌等采用全卷積神經(jīng)網(wǎng)絡(luò)進行特征提取,通過對車牌進行角點回歸來完成車牌定位[12]。YOLO目標檢測卷積神經(jīng)網(wǎng)絡(luò)能夠通過回歸車牌的位置和大小來完成車牌定位[13]。這些算法都通過卷積神經(jīng)網(wǎng)絡(luò)對全圖進行特征提取,處理的對象較復(fù)雜,因此需要更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)才能完成任務(wù),檢測速度較慢。
針對已有車牌定位算法魯棒性差和檢測速度慢的問題,本文將顏色邊緣特征提取和卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,簡單提取車牌的顏色邊緣特征后分割出感興趣區(qū)域(region of interest,ROI),然后通過深度卷積神經(jīng)網(wǎng)絡(luò)提取ROI的深層特征,去除ROI中的偽車牌,標記出檢測到的車牌,大大降低了卷積神經(jīng)網(wǎng)絡(luò)的運算量,提升了車牌檢測算法在復(fù)雜環(huán)境下檢測的準確率和檢測速度。實驗結(jié)果表明,相較已有的車牌定位算法,該算法在復(fù)雜環(huán)境下具有更好的魯棒性,在保證檢測速度的同時仍然能夠達到很高的準確率。
本文提出一種結(jié)合顏色邊緣特征和卷積神經(jīng)網(wǎng)絡(luò)的車牌定位算法,該算法包括ROI的提取和ROI的識別兩部分。首先根據(jù)顏色邊緣特征從原圖中分割出ROI,再通過深度卷積神經(jīng)網(wǎng)絡(luò)對ROI進行識別分類,去除偽車牌并標記車牌區(qū)域。算法流程如圖1所示。
(1)將待檢測圖像從RGB顏色空間轉(zhuǎn)化到HSV顏色空間,根據(jù)車牌的顏色特征設(shè)置H、S、V這3個通道分量值的閾值范圍,分割出符合約束條件的圖像。
(2)對分割出的子區(qū)域進行高斯濾波去除噪聲,然后通過Sobel邊緣檢測提取邊緣特征并進行二值化,最后通過形態(tài)學(xué)操作獲取ROI。
(3)將獲得的ROI通過卷積神經(jīng)網(wǎng)絡(luò)來提取深層特征并進行分類,去除其中的偽車牌,同時將檢測出的車牌進行標記。
圖1 算法流程
我國的機動車牌在顏色和紋理上都具有明顯的特征,通過顏色分割和邊緣檢測能夠快速提取圖像中的ROI。對這些ROI進行深層特征提取,這樣既能保留高分辨率圖像中感興趣的特征,防止因為縮放圖像導(dǎo)致的細節(jié)丟失,又能提高車牌定位算法的檢測速度。
自然環(huán)境下,光線的明暗變化將導(dǎo)致車輛牌照顏色的變化,從數(shù)字攝像設(shè)備采集到的圖像為RGB顏色模型,但R、G、B這3個分量對光線的強弱較敏感,因此不適合用來對車牌圖像進行顏色的分割[6]。而HSV色彩空間采用色相(Hue)、飽和度(Saturation)和亮度(Value)來描述顏色,更符合人類的視覺特性,因此采用HSV色彩模型能夠更好的對車牌圖像進行顏色分割。RGB色彩模型和HSV色彩模型的轉(zhuǎn)換如式(1)~式(3)所示
v=max(r,g,b)
(1)
(2)
(3)
中國的車牌類型分為藍底白字、黃底黑字、白底黑字和黑底白字4種,本文以藍底白字車牌為研究對象,通過對不同環(huán)境和光照下藍底白字車牌的圖像進行顏色統(tǒng)計,發(fā)現(xiàn)車牌底色H值分布在87~125之間,S值分布在43~255之間,V值分布在32~255之間。
待檢測圖像如圖2(a)所示,f(x,y)(0≤x≤xmax,0≤y≤ymax)為待檢測圖像I位于坐標(x,y)的像素值。將待檢測圖像I轉(zhuǎn)換到HSV色彩空間進行閾值分割,生成一幅二值圖像IMASK如圖2(b)所示。g(x,y)(0≤x≤xmax,0≤y≤ymax)為圖像IMASK位于坐標(x,y)的像素值。如果圖像I在坐標(x,y)上3條通道的分量值都在指定的閾值范圍內(nèi),則令g(x,y)=255,否則令g(x,y)=0。集合C={f(x,y)|g(x,y)=255}表示顏色分割的結(jié)果。
圖2 顏色特征提取
部分車牌受車身顏色的影響,僅通過顏色特征很難將車牌從背景中分割出來。我國車牌區(qū)域由多個水平排列的字符構(gòu)成,并且字符顏色和車牌底色存在較大差異[6],呈現(xiàn)出明顯的邊緣特征,采用邊緣檢測算法能夠有效的對車牌的邊緣特征進行提取。鐘偉釗等對幾種常用于車牌檢測的邊緣檢測算子進行了分析和比較[14],綜合考慮各邊緣檢測算子的特性,本文采用Sobel算子提取車牌的邊緣特征。水平方向Sobel算子如式(4)所示,用來檢測圖像的垂直邊緣。垂直方向Sobel算子如式(5)所示,用來檢測圖像的水平邊緣
(4)
(5)
對顏色分割結(jié)果進行邊緣檢測之前需要進行灰度化處理,使Gray(x,y)=0.299R(x,y)+0.587G(x,y)+0.114B(x,y),其中R(x,y)、G(x,y)、B(x,y)分別表示集合C中元素在R、G、B通道的分量值,集合G={Gray(x,y)|g(x,y)=255}表示對集合C進行灰度化處理的結(jié)果。當g(x,y)=255時,令I(lǐng)MASK中g(shù)(x,y)=Gray(x,y),從而獲得灰度圖像IGRAY,完成對顏色分割結(jié)果的灰度化處理。對IGRAY采用高斯濾波去除噪聲,然后采用Sobel算子進行邊緣檢測并對結(jié)果進行二值化,獲得邊緣特征圖ISOBEL,用集合S={a(x,y)|a(x,y)=255}表示提取出的邊緣信息,a(x,y)是ISOBEL位于坐標(x,y)處的像素值,邊緣特征圖如圖3所示。
圖3 邊緣特征圖ISOBEL
對邊緣檢測結(jié)果ISOBEL采用數(shù)學(xué)形態(tài)學(xué)操作來獲取ROI。數(shù)學(xué)形態(tài)學(xué)操作是基于集合論基礎(chǔ)上形態(tài)學(xué)數(shù)學(xué)的一系列圖像處理操作的合集,主要包括4個操作:膨脹操作、腐蝕操作、開運算和閉運算。其中膨脹操作如式(6)所示,腐蝕操作如式(7)所示。B為形態(tài)學(xué)操作所需的結(jié)構(gòu)元素,集合S為需要被處理的對象,Ba表示結(jié)構(gòu)元素B平移a(x,y)后構(gòu)成的新的像素點集合
S⊕B={a|Ba∩S≠?}
(6)
SB={a|Ba?S}
(7)
首先對ISOBEL進行一次閉運算,這樣既有助于車牌區(qū)域的融合和連通域的形成,同時還能濾除一些較小的噪聲區(qū)域。閉運算需要先進行一次膨脹操作然后進行一次腐蝕操作,因此采用5×5的結(jié)構(gòu)元素對集合S進行一次膨脹操作和一次腐蝕操作。然后采用12×5的結(jié)構(gòu)元素對閉運算結(jié)果連續(xù)進行3次膨脹操作,獲得ROI的連通域,形態(tài)學(xué)處理結(jié)果如圖4所示。
圖4 形態(tài)學(xué)處理結(jié)果
對獲取的ROI連通域進行簡單的篩選,去除其中面積過大和過小的連通域,對篩選出的連通域求取最小外接矩形并在原圖I中進行標記,該最小外接矩形所標定的區(qū)域即為顏色邊緣特征提取所獲得的ROI,ROI提取結(jié)果如圖5所示。
圖5 感興趣區(qū)域
相對于傳統(tǒng)機器學(xué)習(xí)算法和BP神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)在車牌檢測中擁有更好的性能[15]。經(jīng)過顏色邊緣特征提取產(chǎn)生的ROI中存在部分與車牌特征相似的偽車牌,基于深度學(xué)習(xí)的車牌檢測方法的核心在于設(shè)計更有效的二元分類器來檢測ROI中的車牌。本文提出一種車牌檢測卷積神經(jīng)網(wǎng)絡(luò)(license plate recognition convolutional neural network),簡稱PR Net,能夠有效檢測ROI中的車牌。
PR Net輸入大小為96×32的圖像,經(jīng)過六層卷積層、三層下采樣層和兩層全連接層提取圖像的深層特征。第一層卷積層具有64個5×5的卷積核,第二層和第三層卷積層具有128個3×3的卷積核,第四層到第六層卷積層具有256個3×3的卷積核。在第一層、第三層和第六層卷積層后采用步長為2,大小為2×2的窗口進行最大值下采樣,最后采用兩層全連接層來輸出結(jié)果。網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 PR Net結(jié)構(gòu)
為了提高神經(jīng)網(wǎng)絡(luò)對模型的表達能力,需要在每層隱含層和輸出層后采用激活函數(shù)提升模型的非線性能力。PR Net采用ReLU函數(shù)作為隱含層的激活函數(shù),該激活函數(shù)在反向傳播求取誤差梯度時計算量較小,可以加快模型的訓(xùn)練速度,同時會使一部分神經(jīng)元的輸出為0,這樣就造成了網(wǎng)絡(luò)的稀疏性,緩解了過擬合問題的發(fā)生。輸出層采用Sigmoid激活函數(shù),用來預(yù)測該輸入可能為車牌的概率。
卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計完成后,需要采用訓(xùn)練集對網(wǎng)絡(luò)進行適當?shù)挠?xùn)練才能獲得有效的模型。通過對3000張在不同環(huán)境和天氣下采集的車輛圖像進行顏色邊緣特征提取,產(chǎn)生14 577張ROI圖像,其中包括5740張正樣本和8837張負樣本,將樣本進行人工標注,樣本的標簽為1時表示該樣本為車牌圖像,為0時表示該樣本為偽車牌圖像。對部分和車牌較相似的負樣本進行旋轉(zhuǎn)拉伸變換,將樣本擴展至16 000張并以此作為訓(xùn)練集,訓(xùn)練集中部分訓(xùn)練樣本如圖7所示,其中第一行為負樣本,第二行為正樣本訓(xùn)練過程分為前向傳播和反向傳播兩部分,PR Net在前向傳播初采用一組符合截斷正態(tài)分布的隨機數(shù)對權(quán)重進行初始化,之后對訓(xùn)練集中樣本的類別進行預(yù)測并計算誤差,然后在反向傳播過程中計算損失函數(shù)對每個權(quán)重的偏導(dǎo)數(shù)并通過優(yōu)化算法更新網(wǎng)絡(luò)中的權(quán)值。前向傳播過程中如果第l層為卷積層,則前向傳播過程中第l層的輸出為M個特征矩陣組成的三維張量,結(jié)果如式(8)所示,其中*表示卷積操作,M為卷積核的深度
圖7 訓(xùn)練集樣本
(8)
如果第l層是下采樣層,則前向傳播過程中下采樣結(jié)果如式(9)所示,其中pool表示采用保留區(qū)域內(nèi)最大特征值的方式對特征圖進行下采樣。如果第l層是全連接層,則前向傳播過程中第l層的第j節(jié)點的輸出如式(10)所示,其中M表示RP Net在第l-1層中節(jié)點的個數(shù)
al=pool(al-1)
(9)
(10)
前向傳播過程中經(jīng)過隱含層來提取圖像的深層特征,最終輸出z來預(yù)測該輸入可能為車牌的分數(shù)。通過Sigmoid激活函數(shù)將輸出z限定在0到1之間,以此來表示該輸入可能為車牌的概率p,Sigmoid激活函數(shù)如式(11)所示
(11)
當PR Net輸出的結(jié)果與我們的期望值不相符時,求出預(yù)測值與期望值的誤差,進行誤差的反向傳播,將樣本的標簽y作為模型的觀察值,采用交叉熵損失函數(shù)計算損失值。損失函數(shù)如式(12)所示,其中N為樣本數(shù),p為樣本的預(yù)測值,樣本標簽y采用One-hot編碼來表明概率分布
(12)
將獲取的誤差值J層層返回并計算出每一層的誤差,然后采用Adam優(yōu)化算法將J進行反向傳播,對PR Net中的權(quán)值進行更新。將PR Net在訓(xùn)練集上經(jīng)過多次迭代訓(xùn)練使模型趨于收斂,獲得有效的車牌檢測模型。
將圖5中的ROI圖像尺寸調(diào)整為PR Net模型的輸入尺寸,并依次將其輸入到PR Net中,通過前向傳播算法來預(yù)測ROI圖像可能為車牌的概率p,當p小于0.5時,判定該ROI為偽車牌,當p大于0.5時,判定該ROI為車牌,對其進行保存并且在原圖I中進行標記,車牌定位結(jié)果如圖8所示。
圖8 車牌定位結(jié)果
對500張車輛圖像進行顏色邊緣特征提取,產(chǎn)生2500張ROI圖像并將其作為測試集。在該測試集上將部分經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型以及文獻[15]提出的車牌分類模型和本設(shè)計提出的PR Net模型進行對比測試。其中Alex Net擁有5層卷積層,采用批量隨機梯度下降算法進行模型的訓(xùn)練,相對于傳統(tǒng)的機器學(xué)習(xí)分類算法而言具有不錯的表現(xiàn)。VGG Net擁有19層卷積層,相對于Alex Net模型中首層采用了尺寸為11×11的卷積核,VGG Net全采用大小為3×3的卷積核。文獻[15]所提出的車牌分類算法基于LeNet5卷積神經(jīng)網(wǎng)絡(luò),將圖像的輸入尺寸縮小到24×24并減少了一層全連接層,結(jié)構(gòu)較簡單。將各算法在測試集上進行性能測試,對比結(jié)果見表1。
表1 不同CNN模型的性能比較
通過各模型在測試集上的表現(xiàn)可以看出,文獻[15]所提出的網(wǎng)絡(luò)模型檢測速度最快,但由于模型結(jié)構(gòu)簡單,魯棒性較差,難以對傾斜、光照不均以及模糊或有污損的車牌進行有效的檢測,檢測準確率較低。Alex Net模型采用尺寸更大的卷積核進行卷積運算,導(dǎo)致運算量的增加,但網(wǎng)絡(luò)結(jié)構(gòu)較淺,實際應(yīng)用中檢測效果也一般。由于VGG Net具有更深的網(wǎng)絡(luò)結(jié)構(gòu),能夠提取車牌圖像更深層的特征,對傾斜和光照不均的車牌也能有效進行檢測,但更深的網(wǎng)絡(luò)結(jié)構(gòu)導(dǎo)致該算法的運算量較大,因此檢測速度較慢。相較于Alex Net模型,本文提出的PR Net模型擁有更深的網(wǎng)絡(luò)結(jié)構(gòu),首層采用尺寸為5×5的卷積核,比VGG Net擁有更大的感受視野,由于結(jié)構(gòu)比VGG Net更精簡,因此在保持較高的檢測準確率的同時,檢測速度更快。
實驗采用型號為i7-7700k,頻率為4.2 GHz的CPU,16 GB的內(nèi)存以及型號為GTX1070Ti的GPU進行測試。對比實驗在Pycharm2018集成開發(fā)環(huán)境下采用Python語言完成。神經(jīng)網(wǎng)絡(luò)模型在Google發(fā)行的神經(jīng)網(wǎng)絡(luò)開源框架Tensorflow上設(shè)計與實現(xiàn),并采用NVIDIA推出的通用并行計算架構(gòu)CUDA(compute unified device architecture)加速模型的訓(xùn)練。
實驗測試數(shù)據(jù)由測試集A和測試集B兩部分組成,其中測試集A包括1795張在不同環(huán)境下收集的車輛圖像。將圖像經(jīng)過顏色邊緣特征提取后,統(tǒng)計每張圖像中的ROI數(shù)量n,并將n作為衡量該圖像背景復(fù)雜度的指標。圖9(a)為測試集A中背景復(fù)雜度較低的樣本,圖9(b)為測試集A中背景復(fù)雜度較高的樣本。
圖9 測試集A樣本
根據(jù)n將測試集A分為6組,每組樣本中的樣本數(shù)以及平均ROI數(shù)量見表2,其中每組樣本中ROI的平均數(shù)量依次上升,用于測試算法在不同背景復(fù)雜度下的性能。測試集B由1189張在隨機環(huán)境下采集的車輛圖像構(gòu)成,用于測試算法在自然環(huán)境下的平均性能。
表2 測試集A
實驗首先基于測試集A,將本文提出的車牌定位算法分別與文獻[6]、文獻[11]和文獻[12]中的算法進行比較,以此來測試算法在不同背景復(fù)雜度下的性能。算法的準確率和響應(yīng)時間的對比結(jié)果分別如圖10和圖11所示。
圖10 算法準確率比較
實驗結(jié)果表明,在背景復(fù)雜度較低的環(huán)境中,所有算法都能取得較好的效果,這是由于背景中不包含或者包含較少與車牌特征相似的噪聲。隨著環(huán)境中背景復(fù)雜度的提升,文獻[6]和文獻[11]的算法準確度有明顯下降。由于采用神經(jīng)網(wǎng)絡(luò)提取深層特征,文獻[12]和本文的算法仍然能夠保持較好的效果。在運行速度方面,無論圖像背景復(fù)雜度如何,文獻[12]都采用對全圖進行卷積的方法來完成車牌檢測,因此運行速度較慢,而文獻[6]、文獻[11]和本文的算法都是對ROI進行操作,處理的圖像背景復(fù)雜度越低,算法的速度越快?;跍y試集B對全部算法進行比較,以此來反應(yīng)自然環(huán)境下各算法的平均性能,結(jié)果見表3,實驗結(jié)果表明,與傳統(tǒng)車牌定位算法相比,本文算法擁有更高的準確度,與文獻[12]所提算法相比,本文算法在保證算法準確度的同時,檢測速度大大提升。
表3 平均性能比較
在復(fù)雜環(huán)境下,特別是在車牌存在傾斜以及背景中包含和車牌具有相似特征的噪聲時,傳統(tǒng)車牌定位算法難以進行準確的定位,采用卷積神經(jīng)網(wǎng)絡(luò)直接對輸入圖像進行處理又導(dǎo)致計算量大大增加。針對以上問題,本文算法通過顏色邊緣特征進行ROI的提取,并設(shè)計了一種有效的車牌分類卷積神經(jīng)網(wǎng)絡(luò)模型來去除ROI中的偽車牌。實驗通過兩組測試集對模型進行測試,驗證該算法在復(fù)雜環(huán)境下性能明顯優(yōu)于其它的車牌定位方法,在保證檢測速度的同時能達到更高的準確率,算法擁有更好的魯棒性。