- Add README.md to all 16 dataset directories with script references - Centralize generation scripts under scripts/ with full README - Update .gitignore to cover all data directories, keep only metadata - Remove redundant CCPD/.gitignore (parent covers same rules) - Remove stale scripts/test/ (254MB pipeline residue) - Fix label parser reference: scripts are authoritative source of truth
ICE_Dataset
ICE 车牌检测/识别项目的数据集仓库,涵盖 CCPD 原始数据、特殊车牌生成、YOLO 训练数据构建。
目录总览
ICE_Dataset/
├── chinese_license_plate_generator/ ← 车牌底板渲染引擎(核心依赖)
├── CCPD/ ← CCPD2019 & CCPD2020 原始街拍图片
├── CCPD_SPE_GEN/ ← 特殊车牌生成工具集
│ ├── cv_pipeline/ ← Python 原型管线(开发/调色/预览用)
│ ├── cpp_pipeline/ ← ★ C++ 生产引擎(~53张/秒,实际全量生成用)
│ ├── gan_pipeline/ ← GAN 纹理迁移实验(已废弃,未实际使用)
│ └── scripts/ ← 一键运行脚本
├── CCPD_SPE/ ← 特殊车牌数据集输出(C++ 管线全量生成)
├── ccpd_combined_5k5k_spe/ ← YOLO 训练用合并数据集
├── scripts/ ← 数据集构建/统计工具
├── LP_Standard.md ← GA36-2018 中国车牌标准参考
└── output/ ← 临时输出、调色预览
各部分说明
1. chinese_license_plate_generator/ — 车牌渲染引擎
第三方车牌图像生成器,提供 MultiPlateGenerator:
- 按 GA36-2018 标准渲染 9 种特殊车牌底板
- 输出纯车牌图像(无背景),作为后续管线的合成素材
- 管线实际依赖:被
cv_pipeline/plate_swap.py直接调用
2. CCPD/ — CCPD 原始数据集
| 子集 | 说明 |
|---|---|
CCPD2019/ccpd_base |
标准街拍(主力) |
CCPD2019/ccpd_tilt |
倾斜视角 |
CCPD2019/ccpd_rotate |
旋转视角 |
CCPD2019/ccpd_fn |
远/近景(Far/Near) |
CCPD2019/ccpd_weather |
恶劣天气 |
CCPD2019/ccpd_blur |
模糊 |
CCPD2019/ccpd_challenge |
挑战性样本 |
CCPD2020/ |
CCPD2020 扩展集 |
CCPD 文件名自带角点标注(4 个角点 x&y_x&y_x&y_x&y),管线不依赖 YOLO 检测,直接解析文件名即可获取车牌坐标。
3. CCPD_SPE_GEN/ — 特殊车牌生成工具
3.1 cv_pipeline/ ★ 主力管线(实际使用)
| 文件 | 功能 |
|---|---|
plate_swap.py |
核心:CCPD 原图 → 解析角点 → 生成特殊车牌 → Lab 色彩对齐 → 透视回贴 → 羽化 + 噪声匹配 → 输出 |
extract_real_plates.py |
从 CCPD 提取真实车牌 ROI(用于 GAN 训练数据准备,实际未用) |
gen_pure_plates.py |
生成纯合成车牌(无背景) |
color_tuner.py |
HSV 手动调色 GUI,保存参数到 plate_color_profile.py |
plate_color_profile.py |
底板色校正参数(由 color_tuner.py 生成,plate_swap.py 运行时读取) |
特点:零训练成本,纯 OpenCV + NumPy,即开即用。
3.2 cpp_pipeline/ — C++ 高性能版
| 文件 | 功能 |
|---|---|
plate_swap.cpp/.hpp |
C++ 复刻 CV 管线核心逻辑 |
main.cpp |
多线程入口(--workers 参数,默认自动检测全部 CPU 核心) |
gen_plate_pool.py |
预生成车牌池 .bin 供 C++ 读取 |
build.ps1 |
VS2022 + CMake 编译脚本 |
install/plate_swap.exe |
预编译可执行文件(Git LFS) |
当前状态:C++ 版是 CCPD_SPE 的实际生产引擎,当前生成 9000 张(9 类 × 1000 张,~53 张/秒,线程数按本机 CPU 核心自动分配),全量 35.5 万张预估 1.9 小时。
Python cv_pipeline 作为开发原型保留——用于初始验证、color_tuner.py 调色 GUI、以及单张预览/调试。
两套管线核心功能对齐(色温匹配、噪声匹配、退化模拟一致),羽化实现有差异:Python 用 distanceTransform 精确渐变,C++ 用 erode+GaussianBlur 近似(快 3 倍,肉眼几无区别)。
3.3 gan_pipeline/ — GAN 纹理迁移(已废弃)
| 文件 | 功能 |
|---|---|
models.py |
CUT (Contrastive Unpaired Translation) Generator + PatchGAN + PatchNCE Loss |
dataset.py |
L 通道车牌 DataLoader |
train.py |
训练脚本 |
当前状态:❌ 未实际使用。设计目标是用 GAN 将合成车牌的 L (亮度) 通道纹理迁移为真实风格,替代硬编码的 JPEG 退化模拟。但因以下原因废弃:
- CV 管线的 JPEG 降采样 + 模糊退化已能满足训练需要
- GAN 训练需要额外 GPU 时间,收益不明确
- YOLO 检测模型对退化模拟的敏感度不高
代码保留以供未来可能的实验。
3.4 scripts/ — 一键脚本
| 脚本 | 功能 |
|---|---|
quick_test.sh |
快速测试:生成 20 张警车牌 |
preview_all.sh |
预览全部 9 种类型(各 2 张 + 中间结果) |
gan_data_prep.sh |
GAN 训练数据准备(当前无实际用途) |
4. CCPD_SPE/ — 特殊车牌数据集(输出)
由 C++ 管线(cpp_pipeline/)生成,按 CCPD 子集 → 特殊车牌类型两级目录组织:
CCPD_SPE/
├── ccpd_base/
│ ├── police/ gangao/ coach/ new_energy/ ...
├── ccpd_tilt/
├── ccpd_weather/
...
文件命名:{CCPD原名}__{特殊车牌类型}__{车牌号拼音}.jpg
5. ccpd_combined_5k5k_spe/ — YOLO 训练数据集
由 scripts/build_ccpd_combined.py 构建,合并三部分:
- CCPD2019 原始蓝牌(5k 张采样)
- CCPD2020 原始蓝牌(5k 张采样)
- CCPD_SPE 特殊车牌(全量)
输出标准 YOLO 格式:images/ + labels/(单类 license_plate),直接用于训练 yolov5t。
6. 其他
| 路径 | 说明 |
|---|---|
LP_Standard.md |
GA36-2018 中国机动车号牌标准全文参考(颜色、尺寸、字符集) |
scripts/build_ccpd_combined.py |
YOLO 数据集构建脚本 |
output/ |
临时输出目录(调色预览、调试中间结果),已在 .gitignore 中排除 |
数据流(实际使用)
chinese_license_plate_generator/ CCPD/ (CCPD2019/CCPD2020)
│ │
▼ ▼
MultiPlateGenerator parse_ccpd_filename() 解析角点
│ │
▼ ▼
cpp_pipeline/plate_swap.cpp ─── 色温匹配 → 透视回贴 → 羽化 → 噪声 ──→ CCPD_SPE/
│ │
[预生成 .bin 池] │
│
CCPD (5k+5k 蓝牌) ─────────────────────────────────────────────────┤
▼
build_ccpd_combined.py
│
▼
ccpd_combined_5k5k_spe/
│
▼
ICE_NNv2/yolov5t/
技术说明
| 项目 | 说明 |
|---|---|
| 角点来源 | CCPD 文件名自带,无需 YOLO/ICE-COR 推理 |
| 色温匹配 | Lab 空间白参考提取,每通道 clamp ±15% |
| 羽化策略 | 纯内侧距离变换羽化,不做泊松融合(保护车牌本色) |
| 噪声匹配 | 从原车牌区域估计 σ + Laplacian 模糊度,仅车牌区域叠加 |
| 退化模拟 | JPEG Q=2 + 4×降采样→最近邻升采样 + GaussianBlur |
| GAN | 未实际使用,代码保留在 gan_pipeline/ |
| C++ 版 | ★ 生产引擎,CCPD_SPE 全量由此生成;Python 版为开发原型 |