車牌識別的N種辦法——從OCR到深度學習
隨著科學技術(shù)的發(fā)展,人工智能技術(shù)在我們的生活中的應用越來越廣泛,人臉識別、車牌識別、目標識別等眾多場景已經(jīng)落地應用,給我們的生活品質(zhì)得到很大的提升,辦事效率大大提高,同時也節(jié)約了大量的勞動力。
今天我們來講一講車牌識別這個任務,車牌識別技術(shù)經(jīng)過多年的發(fā)展,技術(shù)路線也呈現(xiàn)多樣化,我們來介紹一下其中的兩種:
第一種,單個字符識別
首先,在地面上有傳感器感應區(qū)域,當有車輛經(jīng)過時自動進行拍照,然后對拍的照片進行預處理,變成灰度圖像,去除噪聲等,把一些干擾因素去掉,同時降低圖像的大小,便于后期進行邊緣提??;
其次,利用邊緣提取技術(shù),比如canny算子、sobel算子,把圖像輪廓提取出來,根據(jù)車牌長寬比大概為1:2.5左右把大部分不疑似的去掉;然后,再利用圖像灰度值在水平方向和豎直方向上的投影,將字符切割出來;
最后,利用模板匹配或者是已經(jīng)訓練好的深度學習模型進行識別,單獨把每個字符識別后進行串聯(lián)得到整張車牌號碼。
這種方法的瓶頸在于怎么樣把每一個字符準確地切割出來,這涉及到很多圖像處理技術(shù),比如高斯模糊、圖像銳化、圖像膨脹、伽馬變化、仿射變換等等,目前對于英文字符和數(shù)字的識別準確度在96%左右,漢字識別的準確度在95%左右。
第二種辦法,整張車牌識別
首先,與第一種車牌識別一樣,利用傳感器進行車輛感應,把整輛車進行拍照;
其次,利用訓練好的車牌檢測算法,比如YOLO算法或者其他的目標檢測算法把車牌檢測出來。為了提升車牌識別的準確度,可以利用圖像預處理技術(shù)對圖像進行處理,降低干擾項;
最后,利用已經(jīng)訓練好的深度學習模型對整張車牌進行識別。比如LPRNet、Darknet等
## 第一種方法 ——利用 pytesseract 進行識別
pytesseract是一個OCR識別工具,具體的 pytesseract 安裝可百度安裝,直接使用這個工具進行識別得到的準確度還有點低,達不到理想的效果,需要利用車牌數(shù)據(jù)進行訓練才可以使用。
## 第二種識別辦法——PaddleOCR
PaddleOCR 是百度paddlepaddle下的OCR模塊,可以用它來識別車牌,直接下載預訓練模型進行識別,對于數(shù)字和子母都得到不錯的準確率,但是針對中文識別的效果并不理想,需要自己的數(shù)據(jù)集進行再訓練。
要想利用這個模型進行訓練車牌識別,需要大量的車牌數(shù)據(jù),人工收集不僅耗費時間長,要涉及每個省份的車牌需要比較大的成本。
另外的辦法是利用圖像處理技術(shù)進行數(shù)據(jù)生成,加上圖像增強技術(shù)來制作數(shù)據(jù)集,這將在我們的第三章識別方法中講到。
將結(jié)果導出到Excel文件夾
## 第三種辦法 ——LPRNet算法
由于要收集滿足深度學習的數(shù)據(jù)需要花費大量的時間,有一種辦法是通過數(shù)據(jù)生成的辦法生成大量的模擬數(shù)據(jù)集。
緊接著,我們可以利用LPRNet算法進行車牌識別,從GitHub上下載有tensorflow、torch兩個版本。
第一步,生成藍色車牌數(shù)據(jù)集
第二步,根據(jù)算法模型要求將圖像名稱修改并放到指定的文件夾中
第三步,模型訓練和測試
## (1) 藍色車牌生成
需要生成多少張車牌數(shù)據(jù)可通過修改最后一行代碼的數(shù)字即可
## (2) 生產(chǎn)黃色車牌
生成車牌的步驟是把字符寫到純凈的背景圖片上,藍色的車牌是把白色的字寫到藍色底的車牌上,可以直接把字符寫到底牌上去,但是黃色底的車牌不能簡單把黑色字寫上去,寫上去的結(jié)果是字符被隱藏起來,需要特別處理。
正確的做法是:
第一步,構(gòu)造一張車牌大小的純黑色車牌,往上面寫白色字符
第二步,將黑白色進行反轉(zhuǎn),把這牌的字符和背景進行翻轉(zhuǎn)
第三步,將一張沒有字符的黃色底牌和反轉(zhuǎn)后的車牌進行結(jié)合,然后經(jīng)過高斯模糊、改變光線、旋轉(zhuǎn)角度等各種隨機組合模擬出于生活中拍攝處理的圖像。
字符和背景反轉(zhuǎn)
字符和底牌相結(jié)合,并進行畸變、模糊、旋轉(zhuǎn)等各種方法,構(gòu)造出多種多樣的車牌圖像。
## (3) 生產(chǎn)新能源車牌
新能源車牌的生成辦法與黃色車牌的生成辦法是一樣的,但是新能源車牌長度比藍牌、黃牌多一位,而且指定第三個字符為D或者F,但是我們我們在生成時不考慮,只是修改代碼讓程序生成同樣長度的車牌即可。
以上為車牌生成部分代碼,其他代碼參考之前的部分
(4) 重命名各種車牌名稱,使得它適合訓練便簽生成要求
(5) 統(tǒng)計各個省份的車牌數(shù)量
主要是確認中文字符數(shù)量均衡
(6) 把車牌移動到訓練和測試兩個文件夾中
(7) 模型訓練及測試
接下來進行模型訓練。。。 (略)
用第三種方法 LPRNet 來進行車牌識別這個項目是一個很不錯的,涉及到圖像處理,深度學習等各種圖像相關(guān)的知識,完成這個項目訓練后,項目工程能力得到較大提升,對于以后找工作和工作中遇到的問題處理都有比較大的幫助。
能認真看到這的小伙伴幫忙點個贊!