前言

上一章讲了检测模型的实现,这一章将一下识别模型的实现,PaddleOCR提供的通用字符集有6623个,但是车牌号就不需要这么多,我们只需要识别这些车牌,蓝牌、黄牌(单行)、绿牌、大型新能源(黄绿)、领使馆车牌、警牌、武警牌(单行)、军牌(单行)、港澳出入境车牌,只用提取极少部分字符即可,下面我们来接着将代码如何实现的。

一、银行卡识别模型实现

1、创建字符集

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

川鄂甘赣贵桂黑沪吉冀晋津京辽鲁蒙闽宁青琼陕苏皖湘新渝豫粤云藏浙澳港警学使领
0123456789
ABCDEFGHJKLMNPQRSTUVWXYZ

注意字母字符中不包含“O”,这与数字0在车牌上显示有歧义。

2、导入数据集

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

数据集部分切图,上面是真实的,下面是合成的:

3、创建配置文件

复制一份yml文件

文件内容如下:

Global:use_gpu: trueepoch_num: 500log_smooth_window: 20print_batch_step: 10save_model_dir: ./output/rec_chinese_lite_v2.0_carsave_epoch_step: 50# evaluation is run every 5000 iterations after the 4000th iteration
#  eval_batch_step: [0, 2000]eval_batch_step: 100cal_metric_during_train: True
#  pretrained_model: ./pretrained_models/ch_ppocr_mobile_v2.0_rec_pre/best_accuracypretrained_model:checkpoints:save_inference_dir: ./inference/rec_chinese_lite_v2.0_caruse_visualdl: Falseinfer_img: doc/imgs_words/ch/word_1.jpg# for data or label processcharacter_dict_path: ppocr/utils/ppocr_keys_car.txtcharacter_type: chmax_text_length: 25infer_mode: Falseuse_space_char: Falsesave_res_path: ./output/rec/predicts_chinese_lite_v2.0.txtOptimizer:name: Adambeta1: 0.9beta2: 0.999lr:name: Cosinelearning_rate: 0.001regularizer:name: 'L2'factor: 0.00001Architecture:model_type: recalgorithm: CRNNTransform:Backbone:name: MobileNetV3scale: 0.5model_name: smallsmall_stride: [1, 2, 2, 2]Neck:name: SequenceEncoderencoder_type: rnnhidden_size: 48Head:name: CTCHeadfc_decay: 0.00001Loss:name: CTCLossPostProcess:name: CTCLabelDecodeMetric:name: RecMetricmain_indicator: accTrain:dataset:name: SimpleDataSetdata_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 imageimg_mode: BGRchannel_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 orderloader:shuffle: Truebatch_size_per_card: 32drop_last: Truenum_workers: 8Eval:dataset:name: SimpleDataSetdata_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 imageimg_mode: BGRchannel_first: False- CTCLabelEncode: # Class handling label- RecResizeImg:image_shape: [3, 32, 320]- KeepKeys:keep_keys: ['image', 'label', 'length'] # dataloader will return list in this orderloader:shuffle: Falsedrop_last: Falsebatch_size_per_card: 32num_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车牌号识别实现(一)”文本检测部分,大家可通过提升数据集数量或者使用别的分割网络来试试看效果,下方提供的模型开箱就可以使用。

识别模型下载地址:

车牌号识别模型

山月记分享

基于PaddleOCR史上最全车牌号识别实现(二)相关推荐

  1. dos命令窗口光标闪烁_史上最全的Vim命令(二)

    8. 排版 8.1 基本排版 << 向左缩进一个shiftwidth >> 向右缩进一个shiftwidth :ce(nter) 本行文字居中 :le(ft) 本行文字靠左 : ...

  2. 史上最全场景文字识别资源汇集(56篇重要论文 + 20 个开源代码 + 330 个实验结果 + 1882个统计信息)...

    点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:刘崇宇 转载自:CSIG文档图像分析与识别专委会 本 ...

  3. 史上最全交互设计原则(二)之菲茨定律和米勒定律

    上一篇文章主要是针对于希克法则进行了介绍,如果大家有兴趣的话可以自行查阅.本篇主要是介绍一下菲茨定律和米勒定律 一.菲茨定律 1.定义 菲茨定律是一种预测模型,由保罗·菲茨在1954年提出.预测点击一 ...

  4. 史上最全SQL优化方案(二)

    接上篇!! 4 基础优化 a 优化思路 定位问题点吮吸:硬件–>系统–>应用–>数据库–>架构(高可用.读写分离.分库分表). 处理方向:明确优化目标.性能和安全的折中.防患未 ...

  5. 史上最全ThreadLocal 详解(一)

    目录 一.ThreadLocal简介 二.ThreadLocal与Synchronized的区别 三.ThreadLocal的简单使用 四.ThreadLocal的原理 4.1 ThreadLocal ...

  6. 史上最全基于vue的图片裁剪vue-cropper使用

    史上最全基于vue的图片裁剪vue-cropper使用 基于vue的图片裁剪vue-cropper 新的需求 vue-cropper官网 代码拷贝 最后 基于vue的图片裁剪vue-cropper 最 ...

  7. 手把手教你配置linux下C++开发工具——vim+ycm(YouCompleteMe),支持基于语义的自动补全和第三方库补全(史上最简单、史上最透彻、史上最全的终极解决方案)

    截止到目前,vim稳定版本已经到了8.2+,ycm(YouCompleteMe的简称)最新版本与几年前的安装配置截然不同了.之前网上很多教程也教不得法,生搬硬套,没有讲透彻.所以,才下定决心写一篇自认 ...

  8. 分布式事务 (含面试题)- 图解 - 秒懂 - 史上最全

    文章很长,而且持续更新,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 免费赠送 经典图书 : 极致经典 + 社群大片好评 < Java 高 ...

  9. 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

    1.前言 本文接上篇<移动端IM开发者必读(一):通俗易懂,理解移动网络的"弱"和"慢">,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文 ...

  10. 史上最全第三代半导体产业发展介绍(附世界各国研究概况解析)

    转载自:http://www.sohu.com/a/119626002_464013 导读:第3代半导体是指以氮化镓(GaN).碳化硅(SiC).金刚石.氧化锌(ZnO)为代表的宽禁带半导体材料,各类 ...

最新文章

  1. 图上的对抗与攻击精选论文列表(​2021相关论文一览)
  2. CNN中,1X1卷积核到底有什么作用呢?
  3. linux误删视频恢复吗,linux 误删文件恢复
  4. spring配置数据源(加载properties文件)
  5. 目前微型计算机的内存储量一般是多大的,微型计算机内存容量的大小一般是指什么而言...
  6. linux学习-将seafile启动脚本设置为开机启动服务
  7. [转]解决IE下CSS背景图片闪烁的Bug
  8. Table被web编程弃用的原因
  9. android java标准时间_Android 时间 日期 相关
  10. 【报告分享】数实共生:未来经济白皮书2021-腾讯研究院.pdf(附下载链接)
  11. php mysql 高亮显示_PHP实现多关键字加亮功能
  12. 小米笔记本13.3(Intel+mx150独显双显卡)+deepin15.5+cuda9.0安装教程
  13. 韩国服务器搭建网站慢怎么办,如何提升韩国服务器访问速度?
  14. 会计分录、科目、账户
  15. java练习之输入一个字母,如果是小写,转换成大写并输出,如果是大写就不变化并输出。
  16. 论文笔记:Probabilistic Matrix Factorization
  17. 警猫眼Arduino源码分享,把闲置手机变成安防监控摄像头!
  18. UEFI应用与编程--SMM(一)
  19. mldonkey 的使用
  20. iOS基础UI瀑布流界面简单搭建

热门文章

  1. iir数字滤波器设计及matlab实现,终稿毕业论文:IIR数字滤波器设计及其MATLAB实现.docOK版(样例3)...
  2. 活动轮廓模型之Snake模型简介
  3. 转:用友华表Cell报表面面观
  4. 三相逆变器仿真matlab,在MATLAB中实现三相电压型逆变器仿真
  5. 模式识别、机器学习与深度学习
  6. bp神经网络优化算法对比,bp神经网络的优化算法
  7. 什么是网络操作系统?网络操作系统具有哪些基本功能?
  8. 网络安全(二)安全基础
  9. 行测题练习(7-29)【1】
  10. Google技巧:crack web sites