EasyPR--一個開源的中文車牌識別系統
我正在做一個開源的中文車牌識別系統,Git地址為:https://github.com/liuruoze/EasyPR。
我給它取的名字為EasyPR,也就是Easy to do Plate Recognition的意思。我開發這套系統的主要原因是因為我希望能夠鍛鍊我在這方面的能力,包括C++技術、計算機圖形學、機器學習等。我把這個專案開源的主要目的是:1.它基於開源的程式碼誕生,理應迴歸開源;2.我希望有人能夠一起協助強化這套系統,包括程式碼、訓練資料等,能夠讓這套系統的準確性更高,魯棒性更強等等。
相比於其他的車牌識別系統,EasyPR有如下特點:
- 它基於openCV這個開源庫,這意味著所有它的程式碼都可以輕易的獲取。
- 它能夠識別中文,例如車牌為蘇EUK722的圖片,它可以準確地輸出std:string型別的"蘇EUK722"的結果。
- 它的識別率較高。目前情況下,字元識別已經可以達到90%以上的精度。
系統還提供全套的訓練資料提供(包括車牌檢測的近500個車牌和字元識別的4000多個字元)。所有全部都可以在Github的專案地址上直接下載到。
那麼,EasyPR是如何產生的呢?我簡單介紹一下它的誕生過程:
首先,在5月份左右時我考慮要做一個車牌識別系統。這個車牌系統中所有的程式碼都應該是開源的,不能基於任何黑盒技術。這主要起源於我想鍛鍊自己的C++和計算機視覺的水平。
我在網上開始搜尋了資料。由於計算機視覺中很多的演算法我都是使用openCV,而且openCV發展非常良好,因此我查詢的專案必須得是基於OpenCV技術的。於是我在CSDN的部落格上找了一篇文章。
文章的作者taotao1233在這兩篇部落格中以半學習筆記半開發講解的方式說明了一個車牌識別系統的全部開發過程。非常感謝他的這些部落格,藉助於這些資料,我著手開始了開發。當時的想法非常樸素,就是想看看按照這些資料,能否真的實現一個車牌識別的系統。關於車牌照片資料的問題,幸運的很,我正在開發的一個專案中有大量的照片,因此資料不是問題。
令人高興的是,系統確實能夠工作,但是讓人沮喪的,似乎也就“僅僅”能夠工作而已。在車牌檢測這個環節中正確性已經慘不忍睹。
這個事情給了我一撥不小的冷水,本來我以為很快的開發進度看來是樂觀過頭了。於是我決定沉下心來,仔細研究他的系統實現的每一個過程,結合OpenCV的官網教程與API資料,我發現他的實現系統中有很多並不適合我目前在做的場景。
我手裡的資料大部分是高速上的影象抓拍資料,其中每個車牌都偏小,而且模糊度較差。直接使用他們的方法,正確率低到了可怕的地步。於是我開始嘗試利用openCv中的一些函式與功能,替代,增加,調優等等方法,不斷的優化。這個過程很漫長,但是也有很多的積累。我逐漸發現,並且瞭解他系統中每一個步驟的目的,原理以及如果修改可以進行優化的方法。
在最終實現的程式碼中,我的程式碼已經跟他的原始程式碼有很多的不一樣了,但是成功率大幅度上升,而且車牌的正確檢測率不斷被優化。在系列文章的後面,我會逐一分享這些優化的過程與心得。
最終我實現的系統與他的系統有以下幾點不同:
- 他的系統程式碼基本上完全參照了《Mastering OpenCV with Practical Computer Vision Projects》這本書的程式碼,而這本書的程式碼是專門為西班牙車牌所開發的,因此不適合中文的環境。
- 他的系統的程式碼大部分是原始程式碼的搬遷,並沒有做到優化與改進的地步。而我的系統中對原來的識別過程,做了很多優化步驟。
- 車牌識別中核心的機器學習演算法的模型,他直接使用了原書提供的,而我這兩個過程的模型是自己生成,而且模型也做了測試,作為開源系統的一部分也提供了出來。
儘管我和他的系統有這麼多的不同,但是我們在根本的系統結構上是一致的。應該說,我們都是參照了“Mastering OpenCV”這本數的處理結構。在這點上,我並沒有所“創新”,事實上,結果也證明了“Mastering OpenCV”上的車牌識別的處理邏輯,是一個實際有效的最佳處理流程。
“Mastering OpenCV”,包括我們的系統,都是把車牌識別劃分為了兩個過程:即車牌檢測(Plate Detection)和字元識別(Chars Recognition)兩個過程。可能有些書籍或論文上不是這樣叫的,但是我覺得,這樣的叫法更容易理解,也不容易搞混。
- 車牌檢測(Plate Detection):對一個包含車牌的影象進行分析,最終截取出只包含車牌的一個圖塊。這個步驟的主要目的是降低了在車牌識別過程中的計算量。如果直接對原始的影象進行車牌識別,會非常的慢,因此需要檢測的過程。在本系統中,我們使用SVM(支援向量機)這個機器學習演算法去判別擷取的圖塊是否是真的“車牌”。
- 字元識別(Chars Recognition):有的書上也叫Plate Recognition,我為了與整個系統的名稱做區分,所以改為此名字。這個步驟的主要目的就是從上一個車牌檢測步驟中獲取到的車牌影象,進行光學字元識別(OCR)這個過程。其中用到的機器學習演算法是著名的人工神經網路(ANN)中的多層感知機(MLP)模型。最近一段時間非常火的“深度學習”其實就是多隱層的人工神經網路,與其有非常緊密的聯絡。通過了解光學字元識別(OCR)這個過程,也可以知曉深度學習所基於的人工神經網路技術的一些內容。
下圖是一個完整的EasyPR的處理流程:
本開源專案的目標客戶群有三類:
- 需要開發一個車牌識別系統的(開發者)。
- 需要車牌系統去識別車牌的(使用者)。
- 需要做畢業設計的(學生)。
第一類客戶是本專案的主要使用者,因此專案特地被精心劃分為了6個模組,以供開發者按需選擇。
第二類客戶可能會有部分,EasyPR有一個同級專案EasyPR_Dll,可以DLL方式嵌入到其他的程式中,另外還有個一個同級專案EasyPR_Win,基於WTL開發的介面程式,可以簡化與幫助車牌識別的結果比對過程。
對於第三類客戶,最好在EasyPR的基礎上加上自己的創新與調整,這樣形成的設計才有價值,有見地,並且能夠有底氣通過設計會審。
推薦你使用EasyPR有以下幾點理由:
- 這裡面的程式碼都是作者親自優化過的,你可以在上面做修改,做優化,甚至一起協作開發,一些處理車牌的細節方法你應該是感興趣的。
- 如果你對程式碼不感興趣,那麼經過作者精心訓練的模型,包括SVM和ANN的模型,可以幫助你提升或驗證你程式的正確率。
- 如果你對模型也不感興趣,那麼成百上千經過作者親自挑選的訓練資料生成的檔案,你應該感興趣。作者花了大量的時間處理這些訓練資料與調整,現在直接提供給你,可以大幅度減輕很多人缺少資料的難題。
有興趣的同志可以留言或發Email:[email protected] 或者直接在Git上發起pull requet,都可以,未來我會在cnblogs上釋出更多的關於系統的介紹,包括編碼過程,訓練心得。
最後,祝大家國慶快樂,節日順利!
相關推薦
EasyPR--一個開源的中文車牌識別系統
我正在做一個開源的中文車牌識別系統,Git地址為:https://github.com/liuruoze/EasyPR。 我給它取的名字為EasyPR,也就是Easy to do Plate Recognition的意思。我開發這套系統的主要原因是因為我希望能夠鍛鍊我在這方面的能力,包括C++技術、計算
EasyPR--中文開源車牌識別系統 開發詳解(1)
在上篇文件中作者已經簡單的介紹了EasyPR,現在在本文件中詳細的介紹EasyPR的開發過程。 正如淘寶誕生於一個購買來的LAMP系統,EasyPR也有它誕生的原型,起源於CSDN的taotao1233的一個部落格,博主以讀書筆記的形式記述了通過閱讀“Mastering OpenCV”這本書完成的一
android的車牌識別系統EasyPR
上篇文章介紹了身份證識別,現在我們來說說關於車牌識別。 EasyPR有如下特點: 1. 它基於openCV這個開源庫,這意味著所有它的程式碼都可以輕易的獲取。 2. 它能夠識別中文。例如車
車牌識別系統的優點有哪些?
車牌識別系統,它是自動識別算法自動抓拍車輛照片並辨別車牌號碼,將車牌號碼、顏色、等車牌特征數據記錄,並把入場時間信息等傳記錄下來,車輛完全自動化的出入停車場,為車主提供了一種嶄新的服務模式。 1、相對固定車管理的“車牌識別”有以下優點: ◆有效解決“卡管理”時,一卡
私有雲車牌識別系統
毫秒級 lin per 客戶 sina 種類 target 一個 app 車牌雲識別即服務器版車牌識別軟件,是用OCR算法把車牌號識別出來,與脫機算法的不同之處是通過把車牌雲識別部署在客戶自有服務器中或者公有服務器中。 下面重點說私有雲車牌識別,車牌雲識別在部署完成後,A
在服務器端處理的車牌識別系統~
eap 均可 分享 雲識別 htm 快捷 系統 負載均衡 結構 車牌雲識別即服務器版車牌識別軟件,是用OCR算法把車牌號識別出來,與脫機算法的不同之處是通過把車牌雲識別部署在客戶自有服務器中或者公有服務器中。 下面重點說私有雲車牌識別,車牌雲識別在部署完成後,APP端、w
一套車牌識別系統需要哪些部分組成
一套完整的車牌識別系統主要由三大部分組成,包括前端路口采集識別控制部分、網絡傳輸部分和中線管理部分。 其前端路口控制系統包括采集單元、補光單元、觸發單元、識別控制單元等部分。當觸發單元檢測到車輛時,即發送信息給采集單元,其會隨即對車輛進行捕捉抓拍和辨識,並形成可上傳的識別信息,包括車輛牌照號
【multi-digit】街景識別代碼到中文車牌識別的遷移
dig num ger 組成 read png 位置 編碼的轉換 地址 背景論文: Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Network
核心技術解析:移動端車牌識別系統方案
ocr文字識別 攝像頭 inf 人員 c代碼 cnblogs 單機 研發 安裝 國內目前OCR車牌識別技術,主要細分為:1.識別車牌號碼、2.車牌顏色、3.車牌類型等車牌特征信息;算法采用清華TH-OCR技術,不僅融合了車牌定位、車牌字符切分、車牌字符識別等算法,而且系統具
基於OpenCV3.0的車牌識別系統設計(二)--車牌提取
寫在前面的話 上一篇開篇博文寫好之後找女朋友看了一下,希望她提一點建設性建議。結果她很委婉的告訴我,寫的還行就是太表面了,告訴我要注意細節的描述與具體的實現過程與原理等等。其實我只是想騙她看一下增加一下點選量,順便知道我寫的部落格新手能不能看懂而已。結果她告訴我,她那麼聰明當然能看懂,別人就
基於OpenCV3.0的車牌識別系統設計(一)--系統綜述
寫在前面的話 車牌識別是影象處理技術的實際生活中一個非常重要的應用場景,目前車牌識別系統已經非常完善,識別準確率高達99%以上。作為學生,在學習影象處理時,自己搭建車牌識別系統是非常有價值的,作為入門專案有助於快速入門。並且在識
手機端車牌識別系統(支援安卓、ios系統)
私家車的數量的急劇增長,既帶來了喜也同樣帶來悲。一方面給我們的生活帶來的了很多便利,另一方面也同樣帶來了交通擁堵、交通事故等問題。因為對於車輛的管理尤為重要! 比如說違章停車登記,傳統方法是:執法人員通過攜帶的數碼相機對違法停車的車輛拍照取證,然後手動輸入車牌號碼進行登記。 針對於這種違章停車的管理問題,
手機端車牌識別系統(支持安卓、ios系統)
技術分享 研發 手機端 -o 場景 分享圖片 號碼 blog 搜索 私家車的數量的急劇增長,既帶來了喜也同樣帶來悲。一方面給我們的生活帶來的了很多便利,另一方面也同樣帶來了交通擁堵、交通事故等問題。因為對於車輛的管理尤為重要! 比如說違章停車登記,傳統方法是:執法人員通過攜
智慧城市停車場管理車牌識別系統搭建
在智慧城市發展建設下,從居民的衣食住行都在加快實現智慧化。現代社會隨處可見智慧城市管理系統的影子。智慧停車場管理系統可以解決停車難,停車慢的車主痛點。尤其是電子支付深入人心的使用者習慣。無現金停車支付也成為了廣大車主的迫切需求。 智慧停車場管理系統的優勢: 1.停車場的出入識別系統都可以連線到同一個系統後
基於TensorFlow的車牌識別系統 (附程式碼)
1、簡介 過去幾周我一直在涉足深度學習領域,尤其是卷積神經網路模型。最近,谷歌圍繞街景多位數字識別技術釋出了一篇不錯的paper。該文章描述了一個用於提取街景門牌號的單個端到端神經網路系統。然後,作者闡述了基於同樣的網路結構如何來突破谷歌驗證碼識別系統的準確率
語音識別——基於深度學習的中文語音識別系統實現(程式碼詳解)
文章目錄 利用thchs30為例建立一個語音識別系統 1. 特徵提取 2. 模型搭建 搭建cnn+dnn+ctc的聲學模型 3. 訓練準備 下載資料
在樹莓派上建立一個最簡單手寫體識別系統(二)
首先得先把opencv安裝上。 在PC上我使用的是anaconda,直接輸入: conda install --channel https://conda.anaconda.org/menpo opencv3 測試程式碼: import cv2
從零使用OpenCV快速實現簡單車牌識別系統
不錯的計算機視覺部落格:http://blog.csdn.net/lee_cv/article/details/9180719 篇文章獻給所有第一次聽說車牌識別ANPR但需要短時間實現的苦逼同學們。 最近的小學期實訓做的是一個車牌識別系統,說實話真不知道學校怎麼想的,雖
EasyPR-Java新能源車牌識別
EasyPR中主要涉及到藍色底牌與黃色底牌的車牌識別,隨著新能源車輛的發展,目前已經出現綠色底牌的車牌,因此有必要增加綠色車牌的識別。 EasyPR中關於車牌的識別,已經比較完善,這裡主要涉及到三個地方的修改。 新增顏色 在自定義Color的列舉類
pc端車牌識別系統二次開發介面
車牌識別SDK是自主研發的車牌識別SDK,在智慧交通系統、出入口管理系統、公安圖幀系統、移動警務系統等多種行業都已實現成功運用。中科慧識車牌識別SDK採用OCR技術,融合了車牌定位、車牌字元切分、車牌字元識別等演算法,使該系統具有識別效率高、速度快、適應性強、使用方便等優勢,技術處於國際先進水平,在相關行業領