共计 1843 个字符,预计需要花费 5 分钟才能阅读完成。
1. CCPD 数据集背景与应用场景
CCPD(Chinese City Parking Dataset)是目前国内最大的公开车牌检测与识别数据集,包含超过 30 万张真实场景下的车牌图像。数据覆盖不同天气、光照条件及复杂背景,具有以下典型特征:

- 包含蓝牌、黄牌、新能源车牌等常见类型
- 每张图片附带车牌四个角点坐标及完整文本标注
- 提供车辆品牌、颜色等辅助信息
实际应用中,CCPD 常被用于:
- 智能交通系统中的车牌自动识别
- 停车场无感支付系统开发
- 城市安防监控的车辆追踪
2. 标注过程中的常见痛点
新手处理 CCPD 数据集时最常遇到这些难题:
- 标注格式混乱 :原始数据同时存在 txt/json 两种标注格式
- 数据噪声问题 :约 5% 的样本存在模糊、遮挡或标注错误
- 坐标系统不统一 :有的使用绝对坐标,有的使用相对坐标
- 类别缺失 :部分特殊车牌类型未单独分类
3. 数据清洗与预处理实战
3.1 环境准备
# 基础依赖库
import os
import json
import cv2
import numpy as np
from tqdm import tqdm # 进度条显示
3.2 格式标准化处理
def convert_to_coco_format(ccpd_path, output_dir):
"""将 CCPD 原始标注转换为 COCO 标准格式"""
annotations = []
for filename in tqdm(os.listdir(ccpd_path)):
if not filename.endswith('.json'):
continue
with open(os.path.join(ccpd_path, filename)) as f:
data = json.load(f)
# 提取四个角点坐标(示例只展示关键逻辑)points = np.array(data['vertices']).reshape(4, 2)
bbox = cv2.boundingRect(points.astype(np.float32))
annotations.append({'image_id': filename.split('.')[0],
'bbox': [bbox[0], bbox[1], bbox[2], bbox[3]],
'plate_number': data['plate_number']
})
# 保存转换结果
with open(os.path.join(output_dir, 'annotations.json'), 'w') as f:
json.dump(annotations, f)
3.3 数据增强策略
推荐使用 Albumentations 库进行实时增强:
import albumentations as A
transform = A.Compose([A.RandomBrightnessContrast(p=0.3),
A.RandomFog(p=0.1), # 模拟雾天效果
A.RandomRain(p=0.1), # 模拟雨天效果
A.CLAHE(p=0.5)
], bbox_params=A.BboxParams(format='pascal_voc'))
4. 标注工具选型建议
根据项目需求选择合适的工具:
- 轻量级方案 :LabelImg(适合快速验证)
- 专业级方案 :CVAT(支持视频标注和团队协作)
- 定制化方案 :使用 OpenCV+PyQt 自建工具(适合特殊需求)
工具使用技巧:
- 在 CVAT 中创建 ”plate” 和 ”character” 两级标签
- 设置快捷键加速标注过程(如 W 创建矩形框)
- 利用自动标注功能处理相似样本
5. 模型训练避坑指南
5.1 骨干网络选择
- 轻量级:MobileNetV3(参数量 <5M)
- 高精度:ConvNeXt(需 GPU 支持)
5.2 关键参数配置
training_params = {
'batch_size': 32, # 根据显存调整
'learning_rate': 3e-4,
'warmup_epochs': 2, # 避免初期震荡
'weight_decay': 1e-4 # 防止过拟合
}
常见问题处理:
- 遇到 NaN 损失:检查数据中是否存在无效标注
- 验证集准确率波动:增加数据多样性
- 小目标检测效果差:使用 FPN 结构
6. 性能优化建议
- 推理加速 :
- 使用 TensorRT 部署模型
-
对输入图像做等比例缩放(避免变形)
-
精度提升 :
- 增加夜间样本的采集比例
- 对新能源车牌单独建立字符字典
实践建议
建议按以下步骤进行实践:
- 从 CCPD-Green 子集开始(样本复杂度较低)
- 先完成 1000 张样本的完整流程验证
- 使用 wandb 等工具监控训练过程
期待大家在实践过程中发现更多优化点,欢迎在评论区分享你的调参经验!
正文完
