目录
[七、YOLO v5环境搭建](#七、YOLO v5环境搭建)
[(一)检测 + 识别流程](#(一)检测 + 识别流程)
一、前言
车牌目标检测是工业视觉与智能交通系统中非常经典的应用场景之一,它的目标非常明确:
在图像中定位出车牌所在位置(Bounding Box)
相比普通目标检测任务,车牌检测具有一些典型特点:
-
目标尺寸较小
-
受光照影响大
-
存在倾斜、模糊、遮挡
-
背景复杂(城市道路)
因此,YOLO v5成为工业界最常用的解决方案之一。
本文将完整讲解:
如何基于YOLO v5实现车牌目标检测
涵盖从数据准备到模型训练,再到推理部署的全流程。
二、任务目标拆解
(一)任务本质
车牌检测属于:
单类别目标检测(Single-class Object Detection)
输出为:
-
车牌位置(x, y, w, h)
-
置信度(confidence)
(二)系统目标
构建一个完整系统:
输入:车辆图像
输出:车牌框位置
(三)后续扩展
车牌检测通常是整个系统第一步:
车牌检测 → 车牌识别(OCR)
三、整体流程架构
YOLO v5车牌检测完整流程如下:
数据采集
↓
数据标注
↓
数据划分
↓
YOLOv5环境搭建
↓
模型训练
↓
模型验证
↓
模型推理
↓
模型部署
四、数据采集
(一)数据来源
工业车牌数据通常来自:
-
监控摄像头
-
高速卡口
-
行车记录仪
-
公共数据集
(二)常用公开数据集
-
CCPD(Chinese City Parking Dataset)
-
AOLP(台湾车牌数据集)
-
OpenALPR Dataset
(三)数据特点
车牌数据具有:
小目标 + 高密度 + 多角度
五、数据标注
(一)标注工具
常用工具:
-
LabelImg
-
CVAT
-
LabelMe
(二)标注内容
YOLO格式:
class x_center y_center width height
(三)示例
0 0.52 0.48 0.18 0.06
说明:
类别0:车牌
六、数据预处理
(一)数据划分
推荐比例:
train : val : test = 8 : 1 : 1
(二)图像预处理
-
Resize(640×640)
-
Normalize
-
Letterbox填充
(三)数据增强
YOLO v5常用增强:
-
Mosaic增强
-
HSV颜色抖动
-
随机翻转
-
随机缩放
七、YOLO v5环境搭建
(一)克隆项目
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
(二)依赖环境
-
Python ≥ 3.8
-
PyTorch ≥ 1.7
-
CUDA(推荐GPU)
八、数据配置文件
(一)data.yaml
train: ./data/train/images
val: ./data/val/images
nc: 1
names: ['license_plate']
(二)说明
nc = 类别数
车牌检测通常:
nc = 1
九、模型选择
YOLO v5提供多个版本:
| 版本 | 特点 |
|---|---|
| v5s | 最快 |
| v5m | 平衡 |
| v5l | 精度高 |
| v5x | 最强 |
工业推荐:
v5m 或 v5l
十、模型训练
(一)训练命令
python train.py \
--img 640 \
--batch 16 \
--epochs 100 \
--data data.yaml \
--weights yolov5s.pt
(二)关键参数
-
img:输入尺寸
-
batch:批大小
-
epochs:训练轮数
-
weights:预训练模型
(三)训练过程
输入图像
↓
YOLOv5模型
↓
预测框
↓
计算Loss
↓
反向传播
十一、损失函数组成
YOLO v5损失包括:
(一)分类损失
BCE Loss
(二)回归损失
CIoU Loss
(三)置信度损失
Objectness Loss
十二、模型验证
(一)验证命令
python val.py \
--weights runs/train/exp/weights/best.pt \
--data data.yaml
(二)评估指标
-
Precision
-
Recall
-
mAP@0.5
十三、推理测试
(一)图片推理
python detect.py \
--weights best.pt \
--source test.jpg
(二)视频推理
python detect.py \
--weights best.pt \
--source test.mp4
(三)实时摄像头
python detect.py --weights best.pt --source 0
十四、推理流程解析
输入图像
↓
YOLOv5前向传播
↓
输出候选框
↓
置信度筛选
↓
NMS去重
↓
最终车牌框
十五、模型优化方法
(一)提升小目标检测
车牌属于小目标:
优化方法:
-
提高输入分辨率(640→1280)
-
使用更大模型(v5l/v5x)
-
增加小目标样本
(二)数据增强优化
-
Mosaic增强(关键)
-
Copy-Paste
-
Random Perspective
(三)Anchor优化
YOLO v5支持:
AutoAnchor
自动适配数据集。
十六、工业部署流程
(一)模型导出
ONNX格式
python export.py --weights best.pt --include onnx
(二)TensorRT加速
适用于GPU推理:
-
提升速度
-
降低延迟
(三)边缘设备部署
-
Jetson Nano
-
RK3588
-
ARM设备
十七、车牌检测系统扩展
(一)检测 + 识别流程
车牌检测(YOLOv5)
↓
车牌裁剪
↓
OCR识别(CRNN / LPRNet)
↓
输出车牌号码
(二)完整系统
摄像头
↓
YOLOv5检测
↓
车牌ROI
↓
OCR识别
↓
数据库存储
十八、工业应用场景
(一)停车场管理
-
自动识别车牌
-
自动计费
(二)高速收费系统
-
无感支付
-
车辆识别
(三)城市交通管理
-
违章检测
-
车流统计
(四)安防系统
- 黑名单车辆识别
十九、常见问题分析
(一)检测不到车牌
原因:
-
数据不足
-
小目标太小
-
光照问题
(二)误检
原因:
-
背景复杂
-
类似矩形结构干扰
(三)重复框
解决:
- 调整NMS阈值
二十、总结
基于YOLO v5实现车牌检测是一个典型的工业级目标检测应用,它涵盖了数据工程、模型训练、优化部署等完整流程。
本文系统讲解了:
1、任务定义与目标;
2、数据采集与标注;
3、YOLO v5环境搭建;
4、训练与验证流程;
5、损失函数结构;
6、推理与NMS后处理;
7、模型优化方法;
8、工业部署方案;
9、完整车牌识别系统架构。
可以将整个流程理解为:
"一个以YOLO v5为核心,通过数据驱动训练,实现车牌从图像到结构化信息输出的工业级视觉系统。"
掌握该流程,就具备了构建完整工业视觉检测系统的能力。