锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

基于PaddleOCR最全车牌号识别实现(二)

时间:2023-07-23 10:07:00 300kg传感器accu

前言

上一章讲述了检测模型的实现,本章将实现识别模型,PaddleOCR提供6623个通用字符集,但车牌号不需要那么多。我们只需要识别这些车牌,如蓝色、黄色(单行)、绿色、大型新能源(黄绿色)、大使馆车牌、警牌、武警牌(单行)、军牌(单行)、港澳出入境车牌,只需提取少量字符,让我们继续实现代码。

一、实现银行卡识别模型

1、创建字符集

在ppocr/utils/在目录中创建一个只有数字的字符集ppocr_keys_car.txt,71个字符:

川、甘、赣、桂、沪、冀、晋、京、辽、蒙、闽、青琼、陕、皖、渝、粤、云、澳、港警使领 0123456789 ABCDEFGHJKLMNPQRSTUVWXYZ 

注意字母字符中不包含注意O这与车牌上的数字0有歧义。

2.导入数据集

数据集可在上一篇文章中下载,目前收集了3万张左右的数据集,为了保证数据集字符平衡,我们就需要合成一部分数据集,这3万张中一半是真实一半是合成的

上面是真实的,下面是合成的:

3.创建配置文件

复制一份yml文件

文件内容如下:

Global:   use_gpu: true   epoch_num: 500   log_smooth_window: 20   print_batch_step: 10   save_model_dir: ./output/rec_chinese_lite_v2.0_car   save_epoch_step: 50   # evaluation is run every 5000 iterations after the 4000th iteration #  eval_batch_step: [0, 2000]   eval_batch_step: 100   cal_metric_during_train: True #  pretrained_model: ./pretrained_models/ch_ppocr_mobile_v2.0_rec_pre/best_accuracy   pretrained_model:   checkpoints:   save_inference_dir: ./inference/rec_chinese_lite_v2.0_car   use_visualdl: False   infer_img: doc/imgs_words/ch/word_1.jpg   # for data or label process   character_dict_path: ppocr/utils/ppocr_keys_car.txt   character_type: ch   max_text_length: 25   infer_mode: False   use_space_char: False   save_res_path: ./output/rec/predicts_chinese_lite_v2.0.txt   Optimizer:   name: Adam   beta1: 0.9   beta2: 0.999   lr:     name: Cosine     learning_rate: 0.001   regularizer:     name: 'L2'     factor: 0.00001  Architecture:   model_type: rec   algorithm: CRNN   Transform:   Backbone:     name: MobileNetV3     scale: 0.5     model_name: small     small_stride: [1, 2, 2, 2]   Neck:     name: SequenceEncoder     encoder_type: rnn     hidden_size: 48   Head:     name: CTCHead     fc_decay: 0.00001  Loss:   name: CTCLoss  PostProcess:   name: CTCLabelDecode  Metric:   name: RecMetric   main_indicator: acc  Train:   dataset:     name: SimpleDataSet     data_dir: ./train_data/     label_file_list:       - "./train_data/car/car1/rec_gt_train.txt"       - "./train_data/car/car2/rec_gt_train.txt"       - "./train_data/car/car3/rec_gt_train.txt"     ratio_list: [1.0,1.0,0.3]     transforms:       - DecodeImage: # load image           img_mode: BGR           channel_first: False       - RecAug:        - CTCLabelEncode: # Class handling label       - RecResizeImg:           image_shape: [3, 32, 320]       - KeepKeys:           keep_keys: ['image', 'label', 'length'] # dataloader will return list in this order   loader:     shuffle: True     batch_size_per_card: 32     drop_last: True     num_workers: 8  Eval:   dataset:     name: SimpleDataSet     data_dir: ./train_data/     label_file_list:       - "./train_data/car/car1/rec_gt_test.txt"       - "./train_data/car/car2/rec_gt_test.txt"       - "./train_data/car/car3/rec_gt_test.txt"     ratio_list: [1.0,1.0,0.3]     transforms:       - DecodeImage: # load image           img_mode: BGR           channel_first: False       - CTCLabelEncode: # Class handling label       - RecResizeImg:           image_shape: [3, 32, 320]       - KeepKeys:           keep_keys: ['image', 'label', 'length'] # dataloader will return list in this order   loader:     shuffle: False     drop_last: False     batch_size_per_card: 32     num_workers: 8

4.执行命令GPU训练

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

注意显存问题,需要大于4G的显存,2G显存会溢出

5.显示操作图

visualdl --logdir=output/rec_chinese_lite_v2.0_car/vdl --port 8081

最高能达到识别模型效果:acc:0.99

6、导出模型

python tools/export_model.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0_car.yml  -o Global.pretrained_model="./output/rec_chinese_lite_v2.0_car/best_accuracy" Global.save _inference_dir="./output/rec_chinese_lite_v2.0_car/"

串联验证检测模型和识别模型:

python tools/infer/predict_system.py --det_algorithm="DB" --det_model_dir="./inference/ch_db_mv3_car/" --rec_model_dir=./inference/rec_chinese_lite_v2.0_car/ --image_dir="C:\Users\YY007\Desktop\car\1.jpg"--rec_char_dict_path="./ppocr/utils/ppocr_keys_car.txt" --use_gpu=True --use_angle_cls=False --det_db_unclip_ratio=1.8

7、验证模型

小结

到这一步,车牌号识别已经完成,通过PaddleOCR来完成车牌号识别功能,只需要改动很少的代码就可以完成识别功能,具体改动参考“基于PaddleOCR车牌号识别实现(一)”文本检测部分,大家可通过提升数据集数量或者使用别的分割网络来试试看效果,下方提供的模型开箱就可以使用。

识别模型下载地址:

车牌号识别模型

山月记分享​​​​​​​

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章