共计 1944 个字符,预计需要花费 5 分钟才能阅读完成。
开篇:CCPD 数据集标注的三大痛点
在车牌识别领域,CCPD 数据集因其丰富的场景覆盖成为重要基准数据,但在实际标注过程中常遇到以下问题:

- 标注格式混乱:原始数据包含 VOC、COCO、YOLO 等多种格式混用,导致后续模型训练时需要额外转换
- 车牌角度多样:俯拍、侧拍、倾斜等拍摄角度导致矩形框标注困难(尤其 15°以上倾斜样本占比 37.2%)
- 小目标检测难题:远距离拍摄的车牌在 1920×1080 分辨率下仅占 50×20 像素区域,人工标注易出现 1 - 2 像素偏差
技术方案实现
图像预处理:OpenCV 实战
通过旋转校正和亮度均衡提升标注一致性,关键代码如下:
import cv2
import numpy as np
def auto_rotate(img):
# 灰度化与边缘检测
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
# 霍夫变换检测直线
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=100, maxLineGap=10)
angles = []
for line in lines:
x1, y1, x2, y2 = line[0]
angles.append(np.arctan2(y2-y1, x2-x1)*180/np.pi)
# 取中值角度旋转
median_angle = np.median(angles)
if abs(median_angle) > 5: # 仅处理显著倾斜
h, w = img.shape[:2]
M = cv2.getRotationMatrix2D((w/2,h/2), median_angle, 1)
return cv2.warpAffine(img, M, (w,h))
return img
LabelImg 高级配置
- 预设模板配置 :修改
data/predefined_classes.txt添加车牌专属类别 - 快捷键优化:
W:快速新建标注框(原快捷键需要鼠标操作)Ctrl+ 方向键:微调标注框位置(1 像素步长)- 自动保存策略 :修改
libs/labelFile.py中的save函数,增加版本号后缀
自定义校验工具开发
基于 PyQt5 的校验工具核心功能:
class Validator(QMainWindow):
def __init__(self):
super().__init__()
# 异常检测算法
self.detector = AnomalyDetector()
def check_annotations(self, xml_path):
tree = ET.parse(xml_path)
root = tree.getroot()
# 规则 1:标注框宽高比校验(车牌标准比例为 3.14:1)for obj in root.findall('object'):
bndbox = obj.find('bndbox')
xmin = int(bndbox.find('xmin').text)
xmax = int(bndbox.find('xmax').text)
ymin = int(bndbox.find('ymin').text)
ymax = int(bndbox.find('ymax').text)
ratio = (xmax-xmin)/(ymax-ymin)
if not 2.5 < ratio < 4.0: # 允许±20% 误差
self.highlight_bbox(xml_path, obj)
性能优化对比
| 标注方式 | 平均耗时 / 图 | 准确率 |
|---|---|---|
| 纯手工标注 | 45s | 92.3% |
| 半自动(本文) | 18s | 97.1% |
| 全自动(实验) | 3s | 85.7% |
生产环境避坑指南
多分辨率处理策略
- 对 >2000px 宽度的图像先缩放到 1920 宽度(保持长宽比)
- 标注时记录原始分辨率到 XML 注释字段
- 训练前统一 resize 到 800×800
倾斜车牌标注规范
- 始终沿车牌长边方向绘制矩形框
- 对于 >30°倾斜样本:
- 标注两个矩形框(最小外接矩形 + 实际区域)
- 在属性中添加
angle=31类似标记
版本管理方案
data/
├── v1.0_raw/ # 初始标注
├── v1.1_cleaned/ # 清洗后
└── v2.0_augmented/ # 数据增强版
延伸思考
- 主动学习流程设计:
- 用初始模型预测未标注数据
- 选择预测置信度 50%-70% 的样本优先标注
-
每轮迭代后更新选择策略
-
模糊车牌补偿方案:
- 对运动模糊样本使用 DeblurGAN 预处理
- 标注时参考相邻帧信息(视频数据集)
- 添加
blur_level=1标签分级
结语
通过这套方案,我们在实际项目中将 CCPD 的标注效率提升 2.4 倍,模型 mAP 提升 6.8 个百分点。关键点在于预处理标准化和自动化校验的结合,既保证质量又提升速度。后续可探索更多半自动标注工具的集成,如 SAM 等分割模型辅助标注。
正文完
发表至: 未分类
近两天内
