【深度學(xué)習(xí)實(shí)踐】基于深度學(xué)習(xí)的車牌識(shí)別(python,車牌檢測(cè)+車牌識(shí)別)
車牌識(shí)別具有廣泛的應(yīng)用前景,基于傳統(tǒng)方法的車牌識(shí)別效果一般比較差,隨著計(jì)算機(jī)視覺技術(shù)的快速發(fā)展,深度學(xué)習(xí)的方法能夠更好的完成車牌識(shí)別任務(wù)。
?本文提供了車牌識(shí)別方案的部署鏈接,您可以在網(wǎng)頁上體驗(yàn)該模型的效果:車牌識(shí)別方案在線體驗(yàn)
本文介紹了使用PaddleOCR完成車牌識(shí)別任務(wù)的方法,其檢測(cè)效果如下圖:
原圖如下:

檢測(cè)結(jié)果如下:

目錄
一、概述?
二、使用
1、數(shù)據(jù)集準(zhǔn)備
2、檢測(cè)模型
3、識(shí)別模型
4、模型導(dǎo)出
5、聯(lián)合推理
?三、總結(jié)
附錄:
一、概述?
基于深度學(xué)習(xí)的車牌識(shí)別任務(wù)可以拆解為2個(gè)步驟:車牌檢測(cè)-車牌識(shí)別。其中車牌檢測(cè)的目的是確認(rèn)圖片中車牌的位置,根據(jù)檢測(cè)到的車牌位置把圖片中的ROI裁剪出來,車牌識(shí)別算法用于識(shí)別裁剪出的車牌圖像中的具體內(nèi)容。
本文使用PaddleOCR工具實(shí)現(xiàn)了車牌識(shí)別任務(wù),首先使用PaddleOCR的檢測(cè)算法DBNet檢測(cè)出車牌位置,再將車牌位置裁剪送入文本識(shí)別算法CRNN來識(shí)別車牌的具體內(nèi)容。
PaddleOCR github:https://github.com/PaddlePaddle/PaddleOCR.git
二、使用
1、數(shù)據(jù)集準(zhǔn)備
本文選擇的數(shù)據(jù)集為CCPD2020,下載鏈接為:CCPD2020(New energy plate) - 飛槳AI Studio
CPPD數(shù)據(jù)集的圖片文件名具有特殊規(guī)則,具體規(guī)則如下:
例如: 025-95_113-154&383_386&473-386&473_177&454_154&383_363&402-0_0_22_27_27_33_16-37-15.jpg
每個(gè)名稱可以分為七個(gè)字段,以-符號(hào)作為分割。這些字段解釋如下。
025:車牌面積與整個(gè)圖片區(qū)域的面積比。025 (25%)
95_113:水平傾斜程度和垂直傾斜度。水平 95度 垂直 113度
154&383_386&473:左上和右下頂點(diǎn)的坐標(biāo)。左上(154,383) 右下(386,473)
386&473_177&454_154&383_363&402:整個(gè)圖像中車牌的四個(gè)頂點(diǎn)的精確(x,y)坐標(biāo)。這些坐標(biāo)從右下角頂點(diǎn)開始。(386,473) (177,454) (154,383) (363,402)
0_0_22_27_27_33_16:CCPD中的每個(gè)圖像只有一個(gè)車牌。每個(gè)車牌號(hào)碼由一個(gè)漢字,一個(gè)字母和五個(gè)字母或數(shù)字組成。有效的中文車牌由七個(gè)字符組成:省(1個(gè)字符),字母(1個(gè)字符),字母+數(shù)字(5個(gè)字符)。“ 0_0_22_27_27_33_16”是每個(gè)字符的索引。這三個(gè)數(shù)組定義如下。每個(gè)數(shù)組的最后一個(gè)字符是字母O,而不是數(shù)字0。我們將O用作“無字符”的符號(hào),因?yàn)橹形能嚺谱址袥]有O。因此以上車牌拼起來即為 皖A(yù)Y339S
37:牌照區(qū)域的亮度。 37 (37%)
15:車牌區(qū)域的模糊度。15 (15%)
下載好了數(shù)據(jù)集,需要把數(shù)據(jù)集轉(zhuǎn)換為PaddleOCR需要的標(biāo)注格式,代碼如下(修改圖片的存儲(chǔ)路徑為自己的路徑):
2、檢測(cè)模型
準(zhǔn)備好了數(shù)據(jù)集,首先需要訓(xùn)練車牌檢測(cè)模型,這里我們使用PaddleOCR提供的文本檢測(cè)預(yù)訓(xùn)練模型進(jìn)行fine-tuning,這樣可以減少訓(xùn)練時(shí)間,首先下載預(yù)訓(xùn)練檢測(cè)模型(先進(jìn)入PaddleOCR文件夾):
下載好了預(yù)訓(xùn)練模型,下面訓(xùn)練檢測(cè)模型(其中的data_dir和label_file_list換成自己的數(shù)據(jù)集路徑):
訓(xùn)練好了模型以后,可以使用下面的命令驗(yàn)證一下精度(此步可以跳過,也要更換data_dir和label_file_list路徑):
可以使用如下命令來實(shí)現(xiàn)檢測(cè)模型推理(路徑修改為自己需要的路徑):
3、識(shí)別模型
訓(xùn)練好了檢測(cè)模型,再來訓(xùn)練識(shí)別模型,同樣先下載預(yù)訓(xùn)練權(quán)重再fine-tuning,下載權(quán)重命令如下:
這個(gè)權(quán)重中包含不需要的內(nèi)容(Teacher的權(quán)重),需要提取需要的權(quán)重:
開啟訓(xùn)練(注意路徑):
驗(yàn)證精度:
使用如下命令測(cè)試識(shí)別模型的效果(需要注意的是,識(shí)別模型的輸入是車牌號(hào)圖片,不是完整的圖片,可以使用數(shù)據(jù)集處理時(shí)的PPOCR文件夾內(nèi)生成的裁剪后的車牌圖片):
4、模型導(dǎo)出
上面訓(xùn)練好的模型都是動(dòng)態(tài)圖模型,將他們導(dǎo)出為靜態(tài)圖模型來部署,可以加快速度,首先導(dǎo)出檢測(cè)模型:
測(cè)試一下導(dǎo)出的檢測(cè)模型推理效果(注意圖片路徑):
下面導(dǎo)出識(shí)別模型:
測(cè)試一下導(dǎo)出的識(shí)別模型推理效果(注意圖片路徑):
5、聯(lián)合推理
訓(xùn)練好了檢測(cè)和識(shí)別模型,下面就是聯(lián)合推理,測(cè)試效果,命令如下(det_model_dir和rec_model_dir是上面導(dǎo)出的模型文件夾):
這是識(shí)別的結(jié)果:

三、總結(jié)
本文總結(jié)了PaddleOCR提供的車牌識(shí)別方案,并進(jìn)行了簡(jiǎn)化,根據(jù)識(shí)別的結(jié)果來看可以很好地檢測(cè)車牌圖像。
為大家準(zhǔn)備了OpenCV學(xué)習(xí)視頻及配套課件代碼!深度學(xué)習(xí)以及計(jì)算機(jī)視覺學(xué)習(xí)資料!
可添加VX公眾號(hào):咕泡AI,回復(fù)333免費(fèi)領(lǐng)學(xué)習(xí)資料!
【1】人工智能學(xué)習(xí)課程及配套資料
【2】超詳解人工智能學(xué)習(xí)路線圖及學(xué)習(xí)大綱
【3】學(xué)人工智能必看優(yōu)質(zhì)書籍電子書匯總
【4】人工智能面試題庫大全以及問題總結(jié)
【5】人工智能經(jīng)典論文100篇+解讀+復(fù)現(xiàn)教程
【6】計(jì)算機(jī)視覺技術(shù)教學(xué)課程+YOLO等項(xiàng)目教學(xué)
【7】人工智能最新行業(yè)報(bào)告?