1. 项目背景与数据集价值
这个数据集专门针对中国新能源车辆特有的蓝牌和绿牌车牌检测任务而构建。在智能交通管理、停车场自动识别、违章抓拍等场景中,新能源车牌的准确识别一直存在特殊挑战——不同于传统蓝牌,绿牌采用渐变绿色底色且字符间距更大,常规车牌检测模型容易产生漏检。
数据集包含2200张高质量标注图片,覆盖各种光照条件(逆光/夜间)、天气状况(雨雪雾)、拍摄角度(俯视/侧视)等真实场景。我通过实地采集和开源数据清洗,确保样本多样性:其中60%为绿牌样本(含小型新能源车渐变绿牌和大型车黄绿双色牌),40%为传统蓝牌样本作为负样本。
关键价值:这是目前公开渠道能获取到的唯一同时标注新能源绿牌和传统蓝牌的中文车牌数据集,特别适合需要兼容新旧车牌的智慧交通项目。
2. 数据标注与格式详解
2.1 标注工具与规范
使用labelImg进行手工标注,所有车牌区域均采用矩形框精确标注,标注规范包括:
- 边界框紧贴车牌边缘(保留2-3像素缓冲)
- 倾斜车牌按最小外接矩形标注
- 遮挡超过30%的车牌不予标注
- 类别标签:
blue_plate/green_plate
2.2 数据格式说明
提供两种主流格式满足不同训练需求:
VOC格式
Annotations/ ├── 0001.xml ├── 0002.xml ... JPEGImages/ ├── 0001.jpg ├── 0002.jpg ...XML文件包含完整的PASCAL VOC标注信息,示例片段:
<object> <name>green_plate</name> <bndbox> <xmin>256</xmin> <ymin>112</ymin> <xmax>382</xmax> <ymax>148</ymax> </bndbox> </object>YOLO格式
labels/ ├── 0001.txt ├── 0002.txt ... images/ ├── 0001.jpg ├── 0002.jpg ...TXT文件采用归一化坐标(0-1范围),每行格式:
<class_id> <x_center> <y_center> <width> <height>例如:
1 0.512 0.325 0.168 0.048格式转换技巧:已提供转换脚本
voc2yolo.py,支持批量格式互转和COCO格式导出。
3. 数据增强与预处理方案
3.1 基础增强策略
针对车牌检测的特殊性,推荐使用以下增强组合(以Albumentations为例):
transform = A.Compose([ A.RandomBrightnessContrast(p=0.5), A.RandomFog(fog_coef_lower=0.1, fog_coef_upper=0.3, p=0.2), # 模拟雾天 A.RandomRain(p=0.1), # 雨滴效果 A.Rotate(limit=15, p=0.5), # 小角度旋转 A.Resize(640, 640) ], bbox_params=A.BboxParams(format='yolo'))3.2 针对新能源车牌的专项增强
由于绿牌存在色彩渐变特征,需特别注意:
- 禁用HSV色彩空间剧烈变换
- 对绿色通道单独进行有限度的对比度调整
- 添加模拟反光特效(使用光学滤镜模拟)
4. 模型训练实战(YOLOv8示例)
4.1 环境配置
conda create -n plate python=3.8 conda activate plate pip install ultralytics==8.0.0 pip install opencv-contrib-python==4.7.0.724.2 数据集配置
创建plate.yaml:
path: /datasets/plate train: images/train val: images/val test: images/test names: 0: blue_plate 1: green_plate4.3 训练命令与参数
yolo detect train data=plate.yaml model=yolov8n.pt epochs=100 imgsz=640 \ batch=16 optimizer="Adam" lr0=0.001 cos_lr=True \ hsv_h=0.2 hsv_s=0.7 hsv_v=0.4 \ translate=0.2 scale=0.5 flipud=0.5关键参数说明:
hsv_h调低:保护绿牌色彩特征translate/scale调高:增强小目标检测能力flipud=0.5:启用上下翻转(应对隧道摄像头倒装情况)
5. 性能优化与部署技巧
5.1 模型轻量化方案
在RK3588开发板上的优化策略:
from ultralytics import YOLO model = YOLO('yolov8n.pt') model.export(format='onnx', simplify=True, dynamic=False, opset=12)优化效果对比:
| 模型类型 | 参数量 | 推理速度(RK3588) | mAP@0.5 |
|---|---|---|---|
| YOLOv8n | 3.2M | 22ms | 0.891 |
| YOLOv8s | 11.4M | 38ms | 0.902 |
5.2 实际部署中的注意事项
- 后处理优化:采用加权NMS(wnms)处理密集车牌
from utils.general import non_max_suppression pred = non_max_suppression(pred, conf_thres=0.25, iou_thres=0.45, agnostic=False, max_det=100) - 针对夜间场景:建议添加红外图像分支(需额外标注数据)
6. 常见问题解决方案
6.1 典型错误案例
问题:绿牌检测召回率低
- 原因分析:传统数据增强破坏色彩特征
- 解决方案:
- 禁用ColorJitter增强
- 在损失函数中加入色彩敏感度权重
loss = criterion(pred, targets) loss += 0.3 * color_consistency_loss(pred, targets)
6.2 评估指标异常排查
当出现mAP高但实际效果差时:
- 检查验证集是否包含足够多的极端样本(如强反光车牌)
- 验证标注一致性:运行
python utils/annotations.py --check-labels - 测试单张图片推理效果:
yolo detect predict model=best.pt source=test.jpg
7. 数据集扩展建议
对于需要更高精度的场景,建议:
- 增加特殊角度样本(使用无人机采集俯视图)
- 补充极端天气数据(可通过GAN合成)
- 加入模糊车牌样本(动态模糊增强)
我已将数据集的困难样本(hard cases)单独打包,包含:
- 重度遮挡车牌(雪覆盖/货物遮挡)
- 变形车牌(事故车辆)
- 低照度车牌(隧道内拍摄)