日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于PaddleOCR史上最全车牌号识别实现(一)

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于PaddleOCR史上最全车牌号识别实现(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

????????最近在做關于字符識別的項目,發現好多人在問關于車牌號識別方案,了解現在最火的文字識別PaddleOCR,發現只使用PaddleOCR就可以達到很好的效果,而且從頭到尾只需要動PaddOCR上少許代碼,就能達到很好的效果。

????????PaddleOCR分為三個模型檢測、方向分類和識別,車牌號識別只需用到檢測和識別模型即可,而且現在車牌號識別很少能覆蓋全部的車牌類型,今天我發布的這個模型將支持藍牌、黃牌(單行)、綠牌、大型新能源(黃綠)、領使館車牌、警牌、武警牌(單行)、軍牌(單行)、港澳出入境車牌,覆蓋極大部分類型的車牌。

準備工作

1、建議使用PyCharm進行開發,Download PyCharm: Python IDE for Professional Developers by JetBrains

社區版即可

2、在git上下載最新版的PaddleOCR版本,Download PyCharm: Python IDE for Professional Developers by JetBrains

3、導入Pycharm中如下界面:

切換到2.3目錄,執行下面的命令,安裝環境:

pip install -r requirements.txt

一、車牌號檢測模型實現

使用PaddleOCR自帶的文字檢測功能進行車牌號檢測訓練,可以不需要加載預訓練模型,我們要訓練一份只需要能檢測出車牌號的模型即可,文章結尾有數據集和檢測模型下載地址。

1、導入數據集

目前收集了1萬多張左右的真實圖片,其中有幾千張是手動標注的

?2、創建配置文件

復制一份yml文件,注:Eval.transforms.DetResizeForTest設置resize_long: 960

Global:use_gpu: trueepoch_num: 1200log_smooth_window: 20print_batch_step: 2save_model_dir: ./output/ch_db_mv3_car/save_epoch_step: 1200# evaluation is run every 5000 iterations after the 4000th iterationeval_batch_step: 1500cal_metric_during_train: Falsepretrained_model: ./pretrained_models/ch_ppocr_mobile_v2.0_det_train/best_accuracycheckpoints:save_inference_dir: ./inference/ch_db_mv3_caruse_visualdl: Falseinfer_img: doc/imgs_en/img_10.jpgsave_res_path: ./output/det_db/predicts_db.txtArchitecture:model_type: detalgorithm: DBTransform:Backbone:name: MobileNetV3scale: 0.5model_name: largedisable_se: TrueNeck:name: DBFPNout_channels: 96Head:name: DBHeadk: 50Loss:name: DBLossbalance_loss: truemain_loss_type: DiceLossalpha: 5beta: 10ohem_ratio: 3Optimizer:name: Adambeta1: 0.9beta2: 0.999lr:name: Cosinelearning_rate: 0.001warmup_epoch: 2regularizer:name: 'L2'factor: 0PostProcess:name: DBPostProcessthresh: 0.3box_thresh: 0.6max_candidates: 1000unclip_ratio: 1.5Metric:name: DetMetricmain_indicator: hmeanTrain:dataset:name: SimpleDataSetdata_dir: ./train_data/label_file_list:- "./train_data/car1/det_gt_train.txt"- "./train_data/car2/det_gt_train.txt"ratio_list: [ 1.0, 1.0 ]transforms:- DecodeImage: # load imageimg_mode: BGRchannel_first: False- DetLabelEncode: # Class handling label- IaaAugment:augmenter_args:- { 'type': Fliplr, 'args': { 'p': 0.5 } }- { 'type': Affine, 'args': { 'rotate': [ -30, 30 ] } }- { 'type': Resize, 'args': { 'size': [ 0.3, 3 ] } }- EastRandomCropData:size: [ 960, 960 ]max_tries: 50keep_ratio: true- MakeBorderMap:shrink_ratio: 0.4thresh_min: 0.3thresh_max: 0.7- MakeShrinkMap:shrink_ratio: 0.4min_text_size: 8- NormalizeImage:scale: 1./255.mean: [ 0.485, 0.456, 0.406 ]std: [ 0.229, 0.224, 0.225 ]order: 'hwc'- ToCHWImage:- KeepKeys:keep_keys: [ 'image', 'threshold_map', 'threshold_mask', 'shrink_map', 'shrink_mask' ] # the order of the dataloader listloader:shuffle: Truedrop_last: Falsebatch_size_per_card: 2num_workers: 4Eval:dataset:name: SimpleDataSetdata_dir: ./train_data/label_file_list:- "./train_data/car/car1/det_gt_test.txt"- "./train_data/car/car2/det_gt_test.txt"ratio_list: [ 1.0, 1.0 ]transforms:- DecodeImage: # load imageimg_mode: BGRchannel_first: False- DetLabelEncode: # Class handling label- DetResizeForTest:# image_shape: [736, 1280]resize_long: 960- NormalizeImage:scale: 1./255.mean: [ 0.485, 0.456, 0.406 ]std: [ 0.229, 0.224, 0.225 ]order: 'hwc'- ToCHWImage:- KeepKeys:keep_keys: [ 'image', 'shape', 'polys', 'ignore_tags' ]loader:shuffle: Falsedrop_last: Falsebatch_size_per_card: 1 # must be 1num_workers: 2use_shared_memory: False

3、執行命令進行GPU訓練

python -m paddle.distributed.launch --gpus 0 tools/train.py -o Global.use_visualdl=True -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_car.yml

注意顯存問題,需要大于4G的顯存,2G顯存會溢出

4、顯示運行圖

visualdl --logdir=output/ch_db_mv3_car/vdl --port 8081
檢測模型效果最高能到達:hmean:0.99

5、驗證模型

python tools/infer_det.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_car.yml -o Global.pretrained_model="./output/ch_db_mv3_car/best_accuracy" ?Global.inf er_img=C:\Users\YY007\Desktop\car\1.jpg PostProcess.unclip_ratio=1.8

效果如下,左邊原圖,右邊檢測效果圖:

? ??

6、導出模型

python tools/export_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_car.yml -o Global.pretrained_model="./output/ch_db_mv3_car/best_accuracy" Global.save _inference_dir="./inference/ch_db_mv3_car/"

導出模型驗證:

python tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="./inference/ch_db_mv3_car/" --image_dir="C:\Users\YY007\Desktop\car\1.jpg" --use_gpu=True --det_db_unclip_ratio=1.8

解決訓練模型與導出模型結果不一致問題?

導出模型進行預測需將這一行禁掉,否則會導致導出模型的預測結果與訓練模型的預測結果出現不一致的情況

詳細解釋在這里:

關于文字檢測訓練模型和導出模型效果不一樣的問題 · Issue #4371 · PaddlePaddle/PaddleOCR · GitHub

修改方案如下:

文件一:tools/infer/utility.py

添加參數如下參數:

?文件二:tools/infer/predict_det.py

?其他文件:修改部署預測文件,以hubserving部署為例:

deploy/hubserving/ocr_system/params.py

小結

到這一步,車牌號檢測模型就完成了,總體上講效果還可以,如果需要更好的檢測效果,可以更換更深的神經網絡,或者通過語義分割來實現,下一章我們講講車牌號識別【基于PaddleOCR車牌號識別實現(二)】模型訓練。

數據集下載地址:

文本檢測和識別的車牌號數據集

山月記分享

檢測模型下載地址:

車牌號檢測模型

山月記分享

總結

以上是生活随笔為你收集整理的基于PaddleOCR史上最全车牌号识别实现(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。