当前位置:首页|资讯|深度学习

【深度学习实践】基于深度学习的车牌识别(python,车牌检测+车牌识别)

作者:AI精品课程搬运工发布时间:2023-05-29

车牌识别具有广泛的应用前景,基于传统方法的车牌识别效果一般比较差,随着计算机视觉技术的快速发展,深度学习的方法能够更好的完成车牌识别任务。


 本文提供了车牌识别方案的部署链接,您可以在网页上体验该模型的效果:车牌识别方案在线体验


本文介绍了使用PaddleOCR完成车牌识别任务的方法,其检测效果如下图:


原图如下:

检测结果如下:

目录

一、概述 

二、使用

1、数据集准备

2、检测模型

3、识别模型

4、模型导出

5、联合推理

 三、总结

附录:

一、概述 

基于深度学习的车牌识别任务可以拆解为2个步骤:车牌检测-车牌识别。其中车牌检测的目的是确认图片中车牌的位置,根据检测到的车牌位置把图片中的ROI裁剪出来,车牌识别算法用于识别裁剪出的车牌图像中的具体内容。


本文使用PaddleOCR工具实现了车牌识别任务,首先使用PaddleOCR的检测算法DBNet检测出车牌位置,再将车牌位置裁剪送入文本识别算法CRNN来识别车牌的具体内容。


PaddleOCR github:https://github.com/PaddlePaddle/PaddleOCR.git

二、使用

1、数据集准备

本文选择的数据集为CCPD2020,下载链接为:CCPD2020(New energy plate) - 飞桨AI Studio


CPPD数据集的图片文件名具有特殊规则,具体规则如下:


例如: 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


每个名称可以分为七个字段,以-符号作为分割。这些字段解释如下。


025:车牌面积与整个图片区域的面积比。025 (25%)


95_113:水平倾斜程度和垂直倾斜度。水平 95度 垂直 113度


154&383_386&473:左上和右下顶点的坐标。左上(154,383) 右下(386,473)


386&473_177&454_154&383_363&402:整个图像中车牌的四个顶点的精确(x,y)坐标。这些坐标从右下角顶点开始。(386,473) (177,454) (154,383) (363,402)


0_0_22_27_27_33_16:CCPD中的每个图像只有一个车牌。每个车牌号码由一个汉字,一个字母和五个字母或数字组成。有效的中文车牌由七个字符组成:省(1个字符),字母(1个字符),字母+数字(5个字符)。“ 0_0_22_27_27_33_16”是每个字符的索引。这三个数组定义如下。每个数组的最后一个字符是字母O,而不是数字0。我们将O用作“无字符”的符号,因为中文车牌字符中没有O。因此以上车牌拼起来即为 皖AY339S


37:牌照区域的亮度。 37 (37%)


15:车牌区域的模糊度。15 (15%)


下载好了数据集,需要把数据集转换为PaddleOCR需要的标注格式,代码如下(修改图片的存储路径为自己的路径):

2、检测模型

准备好了数据集,首先需要训练车牌检测模型,这里我们使用PaddleOCR提供的文本检测预训练模型进行fine-tuning,这样可以减少训练时间,首先下载预训练检测模型(先进入PaddleOCR文件夹):

下载好了预训练模型,下面训练检测模型(其中的data_dir和label_file_list换成自己的数据集路径):

训练好了模型以后,可以使用下面的命令验证一下精度(此步可以跳过,也要更换data_dir和label_file_list路径):

可以使用如下命令来实现检测模型推理(路径修改为自己需要的路径):

3、识别模型

训练好了检测模型,再来训练识别模型,同样先下载预训练权重再fine-tuning,下载权重命令如下:

这个权重中包含不需要的内容(Teacher的权重),需要提取需要的权重:

开启训练(注意路径):

验证精度:

使用如下命令测试识别模型的效果(需要注意的是,识别模型的输入是车牌号图片,不是完整的图片,可以使用数据集处理时的PPOCR文件夹内生成的裁剪后的车牌图片):

4、模型导出

上面训练好的模型都是动态图模型,将他们导出为静态图模型来部署,可以加快速度,首先导出检测模型:

测试一下导出的检测模型推理效果(注意图片路径):

下面导出识别模型:

测试一下导出的识别模型推理效果(注意图片路径):

5、联合推理

训练好了检测和识别模型,下面就是联合推理,测试效果,命令如下(det_model_dir和rec_model_dir是上面导出的模型文件夹):

这是识别的结果:

三、总结

本文总结了PaddleOCR提供的车牌识别方案,并进行了简化,根据识别的结果来看可以很好地检测车牌图像。

为大家准备了OpenCV学习视频及配套课件代码!深度学习以及计算机视觉学习资料!

可添加VX公众号:咕泡AI,回复333免费领学习资料!

【1】人工智能学习课程及配套资料

【2】超详解人工智能学习路线图及学习大纲

【3】学人工智能必看优质书籍电子书汇总

【4】人工智能面试题库大全以及问题总结

【5】人工智能经典论文100篇+解读+复现教程

【6】计算机视觉技术教学课程+YOLO等项目教学

【7】人工智能最新行业报告 



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1