本發(fā)明涉及智能交通系統(tǒng)和數(shù)字安防領(lǐng)域,具體涉及一種基于深度學(xué)習(xí)模型的車牌字符整體識別方法。
背景技術(shù):
車牌識別是智能交通系統(tǒng)(its)領(lǐng)域的基礎(chǔ)部分和重要環(huán)節(jié),對智能交通系統(tǒng)的其他部分如車標(biāo)識別、車身顏色分析、車型分析、卡口檢測、電子警察,及其他交通事件相關(guān)模塊的處理好壞有著重要的影響。
傳統(tǒng)的車牌識別系統(tǒng),大致分為車牌檢測、車牌定位、字符分割及字符識別等幾個子模塊。其中車牌號碼識別環(huán)節(jié),字符分割部分嚴(yán)重依賴前面定位的結(jié)果,其所使用的二值化方法對于一些特殊情況如陰陽牌,車牌光線不均衡等效果不佳。字符識別則采用傳統(tǒng)淺層分類器的單個字符識別方式,雖在正常條件下還好,但是全天候的穩(wěn)定性及相似字符的可區(qū)分性難以保證。
因此,傳統(tǒng)的車牌識別系統(tǒng)存在以下問題:
1、傳統(tǒng)方法需要對車牌進行精確定位再分割,依賴性強,容易分割錯誤;
2、傳統(tǒng)方法在光線差、分辨率低、污損、傾斜大等情況的穩(wěn)定性不好;
3、單個模型難以保證較好的識別指標(biāo)。
技術(shù)實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)存在的問題,提出一種基于深度學(xué)習(xí)模型的車牌字符整體識別方法。
本發(fā)明的一種基于深度學(xué)習(xí)模型的車牌字符整體識別方法,包括如下步驟:
步驟a:進行車輛檢測,獲得目標(biāo)車輛,由目標(biāo)車輛確定整個車牌檢測區(qū)域;
步驟b:對所述整個車牌檢測區(qū)域進行檢測獲得車牌區(qū)域;
步驟c:通過深度神經(jīng)網(wǎng)絡(luò)模型對所述車牌區(qū)域的車牌號碼進行整體識別,所述深度神經(jīng)網(wǎng)絡(luò)模型包括依次連接的4個卷積層和2個全連接層,最后一個全連接層包含七個分支,各分支分別對應(yīng)車牌號碼上的漢字、字母、數(shù)字或標(biāo)識。
優(yōu)選地,所述深度神經(jīng)網(wǎng)絡(luò)模型的所述第一分支對應(yīng)漢字,具有58個輸出;所述第二分支對應(yīng)英文字母,具有26個輸出,所述第三至第六分支對應(yīng)數(shù)字和字母,分別具有36個輸出,第七分支對應(yīng)字母、數(shù)字和特殊牌標(biāo)識,具有41個輸出。
優(yōu)選地,所述每個分支的各輸出的結(jié)果為該輸出項的概率,每個分支的各輸出的概率之和為1。
優(yōu)選地,步驟c之后還包括步驟d,采用多個模型集成的方式,綜合得到識別結(jié)果:
步驟d1:統(tǒng)計相同車牌號碼識別結(jié)果的數(shù)目并計算其可信度平均值;
步驟d2:按照數(shù)目多少從大到小排序,如果不同車牌號碼的數(shù)目相同的,則按其可信度從高到低排序;
步驟d3:選擇可信度最高的車牌號碼為識別結(jié)果。
優(yōu)選地,步驟f中,采用3個模型集成的方式。
本發(fā)明具有如下有益效果:
1、本發(fā)明引入深度學(xué)習(xí)模型,提高車牌識別率;
2、本發(fā)明克服傳統(tǒng)車牌識別方法需要進行車牌字符分割所帶來的依賴性和結(jié)果不確定性所導(dǎo)致的誤識別問題;
3、本發(fā)明車牌識別在各種特殊情況下的魯棒性。
附圖說明
圖1為本發(fā)明的基于深度學(xué)習(xí)模型的車牌字符整體識別方法的流程示意圖。
圖2為本發(fā)明的車牌檢測5塊子區(qū)域劃分示意圖。
圖3為本發(fā)明的車牌檢測深度網(wǎng)絡(luò)結(jié)構(gòu)圖。
圖4為本發(fā)明的子塊車牌檢測結(jié)果示意圖。
圖5為本發(fā)明的車牌字符整體識別深度網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
圖6為本發(fā)明的車牌字符整體識別結(jié)果示意圖。
具體實施方式
下面通過實施例對本發(fā)明作進一步說明,其目的僅在于更好地理解本發(fā)明的研究內(nèi)容而非限制本發(fā)明的保護范圍。
參考圖1,本發(fā)明的一種基于深度學(xué)習(xí)、特別是卷積神經(jīng)網(wǎng)絡(luò)的車牌字符整體識別方法,包括如下步驟a~c。
步驟a:進行車輛檢測,獲得目標(biāo)車輛,由目標(biāo)車輛確定整個車牌檢測區(qū)域。
車輛檢測的目的是在整個相機視野領(lǐng)域檢測到真正的車輛區(qū)域,排除背景區(qū)域及干擾的部分,從而減少誤檢,提高車牌檢測的準(zhǔn)確率,并且降低后續(xù)處理的時間消耗。本發(fā)明使用現(xiàn)有的常規(guī)車輛檢測的方法,例如可以使用運動分析技術(shù),建立背景模型,提取前景,也可以使用車輛檢測器進行靜態(tài)檢測,并進行目標(biāo)關(guān)聯(lián)。或者兩者結(jié)合,得到真正感興趣的目標(biāo)車輛。
步驟b:對所述整個車牌檢測區(qū)域進行檢測獲得車牌區(qū)域,包括如下子步驟。
步驟b1:將所述車牌檢測區(qū)域劃分成n個小塊,各小塊之間部分重疊。
傳統(tǒng)車牌檢測技術(shù),采用滑動窗的方式,在車牌檢測區(qū)域內(nèi)遍歷各子窗口,尋找邊緣豐富、梯度能量變化較大,類似車牌特征的區(qū)域,作為車牌候選區(qū)域。這樣做的缺點是耗時多,檢測效率不高。本發(fā)明采用基于分塊的車牌區(qū)域回歸技術(shù)進行車牌檢測。具體做法是,將整個車牌檢測區(qū)域劃分成少數(shù)幾個小塊,一個較佳的實施例為5個小塊,小塊之間部分重疊。
具體地,車牌檢測區(qū)域r(w,h)可以由車輛檢測區(qū)域得到,或者來自人工或程序確定的感興趣區(qū)域,并將其劃分成若干小塊,分別并行地進行檢測,再將結(jié)果進行融合。本發(fā)明的分塊方案采用5塊(2×2+1)法,或者9宮格(3×3),更細顆粒度則沒有必要,尤以5塊法為主。5塊劃分如圖2所示,各子塊位置分別為:車牌檢測區(qū)域的左上、右上、左下、右下、中央即位于車牌檢測區(qū)域r的正中心,每子塊的寬高分別為w*2/3、h*2/3。子塊之間彼此重疊,是為了處理車牌目標(biāo)位于子塊邊界的情形。
步驟b2:對每個小塊使用深度學(xué)習(xí)模型擬合得到大致的車牌區(qū)域,同時獲得該區(qū)域是真車牌的可信度。
具體地,對每個子塊使用適當(dāng)?shù)纳疃葘W(xué)習(xí)模型,擬合得到大致的車牌區(qū)域,深度學(xué)習(xí)模型同時給出該區(qū)域是真車牌的可信度??尚哦鹊臄?shù)值范圍從0~1,0表示真車牌的可信度為0,1表示100%確信為真車牌。
綜合考慮效果和效率,本發(fā)明采用的深度神經(jīng)網(wǎng)絡(luò)模型是如圖3所示的卷積神經(jīng)網(wǎng)絡(luò)(cnn)。在該卷積神經(jīng)網(wǎng)絡(luò)中,包括依次連接的3個卷積層(conv)和3個全連接層(ip),最后一個全連接層包含兩個分支,一個分支為預(yù)測的車牌矩形的左上角和右下角坐標(biāo),使用l2損失,另一個分支為真假車牌的分類,使用softmaxloss損失。每個卷積層后跟一個池化層(maxpool)(圖3中未顯示池化層)。conv層和ip層的參數(shù)見圖3中所示,對于卷積層來說,數(shù)字表示featuremap(即輸入圖像)及卷積核的寬高、通道數(shù),對ip層來說,數(shù)字表示其神經(jīng)元數(shù)目。
如第一卷積層(如圖①→②)的五個參數(shù)(30,30,3,3,3),表示該層的輸入圖像的寬高都為30,并有3個通道(r、g、b),該層卷積操作核大小為3×3。第二卷積層(如圖②→③)中的三個參數(shù)(10,3,3),表示該層有10個通道(即前一層的featuremap輸出為10),該層卷積操作核的大小為3×3。第三卷積層(如圖③→④)中的三個參數(shù)(20,2,2),表示該層有20個通道,該層卷積操作核的大小為2×2,最后獲得通道數(shù)為40的層(如④所示)。⑤表示第一全連接層,神經(jīng)元數(shù)目為120,⑥表示第二全連接層,神經(jīng)元數(shù)目為60,⑦表示第三全連接層即最后一個連接層,具有兩個分支,一個分支的神經(jīng)元數(shù)目為4,另一個分支的為2。網(wǎng)絡(luò)中conv層stride(步長)為1,pool層核大小為2×2,stride為2。除最后一個ip層外,每個conv和ip層都使用relu激活函數(shù)。
如上所述,通過圖3所示的網(wǎng)絡(luò)即可實現(xiàn)車牌位置擬合和可信度計算功能,即輸入一個原圖,經(jīng)過該網(wǎng)絡(luò)(通過訓(xùn)練得到)計算,在最后的輸出層即可得到可信度值和車牌矩形區(qū)域左上、右下角坐標(biāo)。
步驟b3:根據(jù)所述車牌區(qū)域的位置與可信度的關(guān)系,融合得到最終的車牌區(qū)域。這樣一來,無論檢測區(qū)域大小是多少,無論尺度和橫縱比變化數(shù),由于分塊數(shù)是固定的,車牌檢測的時間復(fù)雜度是常數(shù),即o(1)。這里使用深度模型回歸車牌的目的,是為了利用深度學(xué)習(xí)的自我學(xué)習(xí)的優(yōu)勢,得到在各種情況下穩(wěn)定的深度特征。
上面提到的車牌檢測結(jié)果的融合,融合方法包括max,avg等策略。
具體地,本步驟進一步包括:
步驟b31:對結(jié)果按真車牌的可信度從大到小進行排序;
步驟b32:對排序結(jié)果做二值化操作,即可信度與選定的閾值進行比較,若高于閾值則認(rèn)為是真車牌,否則認(rèn)為是假車牌;
步驟b33:在真車牌集合中獲得車牌候選區(qū)域,如果真車牌集合為空則該目標(biāo)車輛區(qū)域判定為無車牌。其中,通過max策略在真車牌集合中,選擇可信度最高的檢測結(jié)果為車牌候選區(qū)域;或者通過avg策略在真車牌集合的車牌檢測位置根據(jù)其可信度進行加權(quán)平均獲得車牌候選區(qū)域。
在檢測到車牌候選區(qū)域后還可以進行車牌位置優(yōu)化步驟,采用深度學(xué)習(xí)模型對車牌區(qū)域進行優(yōu)化,獲得優(yōu)化后的車牌區(qū)域。優(yōu)化同樣采用深度學(xué)習(xí)模型,可使用一般簡單網(wǎng)絡(luò)即可,此處不特別說明。
通過上述方法對整個車牌檢測區(qū)域進行檢測可以獲得車牌候選區(qū)域,當(dāng)然本領(lǐng)域技術(shù)人員也可以用其他公知的方法獲得車牌候選區(qū)域,以提供給下一步的車牌字符整體識別。
下面介紹步驟c:通過深度網(wǎng)絡(luò)結(jié)構(gòu)對所述車牌區(qū)域的車牌號碼進行整體識別。
無論是傳統(tǒng)車牌識別技術(shù),還是當(dāng)前基于深度學(xué)習(xí)的一些車牌識別系統(tǒng),基本上都要對車牌字符進行分割之后再逐個字符識別,由于受到定位精確性和車牌表面成像質(zhì)量的影響,字符分割的效果往往難以令人滿意,從而大大降低了最終的車牌號碼識別率。
基于深度學(xué)習(xí)模型的整體字符識別技術(shù)已經(jīng)有一些實際應(yīng)用,如google的工程師應(yīng)用深度學(xué)習(xí)模型識別街景中的連續(xù)數(shù)字,牛津大學(xué)的研究者使用cnn網(wǎng)絡(luò)識別自然場景中的英文字符序列。本發(fā)明將深度學(xué)習(xí)模型的整體字符識別方法應(yīng)用于智能交通場景,可減輕其對傳統(tǒng)字符分割穩(wěn)定性要求大的特點,也可以利用深度學(xué)習(xí)強大的特征學(xué)習(xí)能力,提高包括特殊情形下的車牌號碼識別率和魯棒性。
本發(fā)明用于車牌號碼識別的深度網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示(類似于圖3),較佳的實施例包括依次連接的四個conv層和2個ip層。樣本輸入大小為64×64,3通道,這里的樣本即為上面的步驟獲得的車牌區(qū)域的圖像。conv1核大小5×5,featuremap輸出為64,conv2核大小5×5,featuremap輸出為128,conv3核大小3×3,featuremap輸出為256,conv4核大小3×3,featuremap輸出為512,所有conv層stride為1,使用relu激活,每個conv層后跟一個maxpool層,核大小2×2,stride為2。ip1的神經(jīng)元數(shù)目(或稱為輸出)為4096,使用relu激活,ip2層有7個分支,其神經(jīng)元數(shù)目分別為58,26,36,36,36,36,41,使用softmaxloss損失。
這里ip2采用7個分支,分別對應(yīng)車牌上的漢字、字母、數(shù)字和標(biāo)識等。例如,第一分支對應(yīng)漢字,包括滬、皖、贛等31個省份簡稱以及一些特殊牌“軍”、“空”、“?!钡裙?8個輸出,第二分支對應(yīng)英文字母,共26個輸出,第三~六分支對應(yīng)“數(shù)字+字母”,因此共36個輸出,第七分支對應(yīng)“字母+數(shù)字+特殊牌標(biāo)識”(特殊牌標(biāo)識包括掛車標(biāo)識等),共41個輸出。每個分支的各個輸出的結(jié)果均是該輸出項的概率,每個分支的各個輸出的概率之和為1,取概率最大的項作為該分支的最終輸出。例如,第一分支具有58個輸出項,例如“滬”的概率為98%,“皖”的概率為1%,“贛”的概率為1%,其他輸出項為0,那么這里最大概率為98%的“滬”,則該第一分支的輸出即為“滬”。通過將前述獲得的車牌區(qū)域圖像作為深度神經(jīng)網(wǎng)絡(luò)的輸入,通過計算,則可整體地識別獲得車牌號碼。
除了自定義的cnn,一些常用的網(wǎng)絡(luò)如googlenet、vggnet等也可以應(yīng)用于本發(fā)明方法。
同時,為了進一步提高識別率,本發(fā)明的上述步驟c之后還可以包括步驟d,采用多個模型集成的方式,綜合得到識別結(jié)果,較佳地,可以采用3個模型集成的方式,具體包括:
步驟d1:統(tǒng)計相同車牌號碼識別結(jié)果的數(shù)目并計算其可信度平均值;
步驟d2:按照數(shù)目多少從大到小排序,如果不同車牌號碼的數(shù)目相同的,則按其可信度從高到低排序;
步驟d3:選擇可信度最高的車牌號碼為識別結(jié)果。
例如有5個識別結(jié)果,滬a12345,滬a12345,滬a72345,滬a72345,滬a72344,可信度分別為0.998,0.996,0.945,0.941,0.9,則排序結(jié)果為:滬a12345,滬a72345,滬a72344,可信度值為:0.997,0.943,0.9,最后取滬a12345為預(yù)測結(jié)果。
顯然,本技術(shù)領(lǐng)域中的普通技術(shù)人員應(yīng)當(dāng)認(rèn)識到,以上的實施例僅是用來說明本發(fā)明,而并非用作為對本發(fā)明的限定,只要在本發(fā)明的實質(zhì)精神范圍內(nèi),對以上所述實施例的變化、變型都將落在本發(fā)明的權(quán)利要求書范。