基于深度学习的车牌定位,核心思路并不复杂:先搞定数据集,再选一个成熟的目标检测模型把车牌框出来,最后按部署场景做工程优化。 如果你正准备从零开发一套车牌识别系统,请把主要精力放在数据管线和模型选型上,这两件事决定了整个项目的上限。

车牌定位和车牌识别是两件事,定位解决“车牌在哪”,识别解决“车牌号是什么”,本文只围绕前者展开,但所有实操步骤都考虑了后续识别模块的衔接。
车牌识别数据集去哪找,公开数据和自采怎么搭配
公开数据集的正确用法
CCPD是国内车牌方向最常用的开源数据集,样本覆盖蓝牌、黄牌、新能源绿牌,包含倾斜、模糊、雨天、夜间等多种困难样本,是很好的预训练起点,我不建议你直接拿它做最终模型,因为它采集自特定城市停车场,机位角度和光照条件跟你的真实场景一定有差异。
行业共识认为,数据集与部署环境越接近,模型效果越稳定,所以公开数据的定位应该是“预训练底座”,而不是最终答案。
自采数据的操作路径
现场自采没有想象中那么贵,用监控摄像头或手机拍摄即可,但要注意覆盖时段和天气,夜间、逆光、雨雾样本每类都留一批,标注工具用LabelImg或者X-AnyLabeling,类别只写plate一个,导出为YOLO格式的txt文件,目录划分大致按8:1:1即可。
训练命令不复杂,深度学习车牌识别入门阶段最常用的是:
python train.py --data plate.yaml --weights yolov8n.pt --epochs 100 --batch-size 16
业内专家指出,车牌定位模型的效果上限基本由数据决定,调参只能修正短板,补不了数据缺位,我在实际项目中体会很深:倾斜车牌和两张车并排停靠的样本,比单纯增加清晰样本更管用。
实在没有现场数据怎么办
可以用合成数据救急,把公开车牌素材通过透视变换贴到不同背景图上,加上亮度抖动和模糊噪声,生成一两千张“伪现场图”做热身训练,再用少量真实样本微调,这招做原型验证完全够用。
车牌识别用YOLO还是传统算法,从实测出发怎么选
| 方案 | 优势 | 劣势 |
|---|---|---|
| YOLOv8 | 训练快、精度高、部署生态成熟 | 低算力设备需要量化压缩 |
| SSD系列 | 卷积结构直观 | 工程工具链相对薄弱 |
| 传统图像处理 | 无需标注数据、响应快 | 光照变化时鲁棒性差 |
从我的实测经验看,传统边缘检测加形态学处理在光线固定的室内机位还能用,遇到停车场出入口这种光照剧烈变化的场景,漏检率直接失控,深度学习模型虽然前期要花时间准备数据,但换来的稳定性完全值得。

具体选哪个版本
工程界最常用的还是YOLOv8,按算力选n/s/m尺寸即可,车牌目标本身尺寸不小,但同一个画面里可能出现多辆车,所以推理帧率和显存占用要提前估算。
实操要点如下:
- 输入分辨率从640×640起步,如果摄像头画面里车牌占比小,可以上调到1280,显存占用会同步上涨。
- 类别只设一个
plate,不用把蓝牌、黄牌、绿牌拆成多类,检测模型只负责定位,颜色分类交给后续识别模块处理。 - 锚框用默认配置即可,车牌长宽比约2:1,YOLO默认锚框已经覆盖这个区间。
车牌定位模型精度不够怎么办,夜间和倾斜车牌怎么处理
夜间场景的破解思路
很多夜间漏检问题出在成像环节,而不是模型本身,画面里车牌一片死黑,什么模型都救不回来,先检查设备补光和相机增益,再把夜间模糊样本加入训练集,数据增强方面,随机亮度抖动、高斯噪声、运动模糊模拟都有帮助。
一个容易踩坑的点是验证集构成,白天样本多、夜间样本少,模型训练时会把夜间权重压低,最终指标好看但夜间实战崩掉,训练前单独留一份夜间验证集,每次迭代完都跑一遍,才能真实反映部署效果。
倾斜车牌的矫正方法
轻微倾斜模型能自适应,但超过45度就得做几何处理,检测到车牌区域后,用透视变换做预矫正,然后再送识别模块,这个前置步骤能显著降低后续字符识别的难度。
后处理参数调优建议
默认置信度阈值0.25和NMS阈值0.45对多数场景够用,如果误检多,把置信度调到0.35左右;如果漏检多,反而要下调,不要凭感觉改,用验证集结果说话。
自研车牌识别系统成本高吗,车载和道闸场景怎么部署
成本构成心里要有数
自研成本集中在三块:数据标注人力、GPU训练时长、推理设备采购,原型阶段用开源数据和免费算力就能跑通,不花钱;批量部署阶段,设备成本才是大头,相比商业SDK按路数收授权费,自研的长期边际成本反而更低,尤其在项目需要定制化优化的时候。
道闸和固定机位部署
国内停车场道闸和高速卡口属于固定机位,光照和角度相对可控,用普通x86工控机或Jetson Orin系列都能稳定运行,摄像机安装高度建议控制在1.5米到3米之间,俯视角过大会导致车牌严重透视形变,检测框偏移随之而来。

车载移动场景部署
移动巡检车辆上存在振动、快速变道、远近光交替干扰,模型输入尺寸和帧率要兼顾,建议用YOLOv8n量化版本,并把模型导出为ONNX后转成TensorRT引擎,推理速度能快不少。
转换路径是:
yolo export model=best.pt format=onnx
然后在Jetson设备上用TensorRT将ONNX转为engine文件,输入尺寸和batch尽量固定,减少转换报错。
说到底,基于深度学习的车牌定位没有想象中神秘,把公开数据集和少量现场数据混合训练,跑通YOLOv8的完整流程,再按目标设备做一次模型转换,你的车牌识别系统就能上线了,先跑通,再优化,是最稳的路径。
关于车牌识别模型开发的3个高频问题
车牌定位和车牌识别必须用两个模型吗?
不必,常规做法是两步分离:检测模型负责框出车牌区域,识别模型负责读出字符,调试方便,如果你的场景高度固定,也可以用端到端模型直接输出车牌字符串,但从工程维护角度看,两步分离更清晰,定位模型的输出还能用于取证截图等需求。
车牌识别模型部署到边缘设备用什么推理框架?
英伟达平台用TensorRT,瑞芯微平台用RKNN,树莓派场景可以在ONNX Runtime和NCNN之间实测对比,转换时固定输入尺寸和batch数能减少大多数报错,TensorRT官方示例工程自带YOLO系列转换脚本,照着跑一遍就能上手。
夜间车牌识别经常漏检怎么办?
先检查夜间图像里车牌是否肉眼可辨,画面本身偏暗就优先补光或调整相机增益,别急着改模型,在此基础上加入亮度抖动和混合增强策略做训练,最后用独立夜间验证集重新评估,成像问题不解决,模型能力再强也发挥不出来。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/536443.html