# 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 版为开发原型 |