网站首页 > 技术文章 正文
车牌识别
概述
基于深度学习的车牌识别,其中,车辆检测网络直接使用YOLO侦测。而后,才是使用网络侦测车牌与识别车牌号。
车牌的侦测网络,采用的是resnet18,网络输出检测边框的仿射变换矩阵,可检测任意形状的四边形。
车牌号序列模型,采用Resnet18+transformer模型,直接输出车牌号序列。
数据集上,车牌检测使用CCPD 2019数据集,在训练检测模型的时候,会使用程序生成虚假的车牌,覆盖于数据集图片上,来加强检测的能力。
车牌号的序列识别,直接使用程序生成的车牌图片训练,并佐以适当的图像增强手段。模型的训练直接采用端到端的训练方式,输入图片,直接输出车牌号序列,损失采用CTCLoss。
一、网络模型
1、车牌的侦测网络模型:
网络代码定义如下:
该网络,相当于直接对图片划分cell,即在16X16的格子中,侦测车牌,输出的为该车牌边框的反射变换矩阵。
2、车牌号的序列识别网络:
车牌号序列识别的主干网络:采用的是ResNet18+transformer,其中有ResNet18完成对图片的编码工作,再由transformer解码为对应的字符。
网络代码定义如下:
其中的Block类的代码如下:
位置编码的代码如下:
Block类使用的自注意力代码如下:
二、数据加载
1、车牌号的数据加载
同过程序生成一组车牌号:
再通过数据增强,
主要包括:
三、训练
分别训练即可
其中,侦测网络的损失计算,如下:
侦测网络输出的反射变换矩阵,但对车牌位置的标签给的是四个角点的位置,所以需要响应转换后,做损失。其中,该cell是否有目标,使用CrossEntropyLoss,而对车牌位置损失,采用的则是L1Loss。
四、推理
1、侦测网络的推理
按照一般侦测网络,推理即可。只是,多了一步将反射变换矩阵转换为边框位置的计算。
另外,在YOLO侦测到得测量图片传入该级进行车牌检测的时候,会做一步操作。代码见下,将车辆检测框的图片扣出,然后resize到长宽均为16的整数倍。
2、序列检测网络的推理
对网络输出的序列,进行去重操作即可,如间隔标识符为“*”时:
完整代码
https://github.com/HibikiJie/LicensePlate
猜你喜欢
- 2025-01-29 AlphaGo Zero你也能造一个,PyTorch实现五脏俱全|附代码
- 2025-01-29 首个快速知识蒸馏的视觉框架:ResNet50 80.1%精度,训练加速30%
- 2025-01-29 PyTorch 2.0 推理速度测试:与 TensorRT 、ONNX Runtime 进行对比
- 2025-01-29 PyTorch学习笔记 5.torchvision库
- 2025-01-29 手把手带你快速上手香橙派AIpro(香橙派参数)
- 2025-01-29 探索AI世界,学习PyTorch,开启深度学习之旅!
- 2025-01-29 Python 卷积神经网络 ResNet的基本编写方法
- 2025-01-29 终于有人从零到精通开始教大模型开发了!基于PyTorch与ChatGLM
- 2025-01-29 PyTorch官方培训教程上线:从基本概念到实操,小白也能上手
- 2025-01-29 掌握深度学习框架PyTorch的十个步骤
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)