# CCPD_SPE_GEN — 特殊车牌数据集生成工具 基于 CCPD 真实车辆照片,将普通蓝牌替换为 9 种特殊车牌(警车/军车/港澳/使馆/领馆/教练/新能源)。 --- ## 目录结构 ``` CCPD_SPE_GEN/ ├── README.md │ ├── cv_pipeline/ # 传统 CV 管线(无需 GPU/训练) │ ├── plate_swap.py # 主体:车牌替换全流程 │ ├── extract_real_plates.py # 从 CCPD 提取真实车牌 ROI │ └── gen_pure_plates.py # 生成纯合成车牌(无背景) │ ├── gan_pipeline/ # GAN 管线(CUT 纹理迁移) │ ├── dataset.py # L 通道 DataLoader + 推理封装 │ ├── models.py # Generator + PatchGAN + PatchNCE Loss │ ├── train.py # 训练脚本 │ └── requirements.txt # PyTorch 依赖 │ └── scripts/ # 一键运行脚本 ├── quick_test.sh # 快速测试 20 张警车牌 ├── preview_all.sh # 预览全部 9 种类型 └── gan_data_prep.sh # GAN 训练数据准备 ``` ## 两套算法 ### CV 管线 (`cv_pipeline/`) **经典计算机视觉,零训练成本,即开即用。** 流程:CCPD 原图 → 解析文件名角点 → 生成特殊车牌 → Lab 色彩对齐 → 透视回贴 → 距离变换羽化 → 噪声/模糊匹配 → JPEG 退化模拟 → 输出 ```bash cd ICE_Dataset python CCPD_SPE_GEN/cv_pipeline/plate_swap.py \ --ccpd-dir ./CCPD/CCPD2019/ccpd_base \ --plate-type police \ --num 500 \ --output ./output/police_dataset ``` ### GAN 管线 (`gan_pipeline/`) **基于 CUT (Contrastive Unpaired Translation),需 PyTorch + GPU 训练。** 仅对车牌 L (亮度) 通道做纹理迁移,保留 AB 颜色通道不变。训练后将 GAN 推理接入 CV 管线,替换硬编码的退化模拟步骤。 ```bash # 训练 cd CCPD_SPE_GEN/gan_pipeline python train.py \ --domain-a ../../gan_data/domain_A_synthetic/police \ --domain-b ../../gan_data/domain_B_real \ --epochs 100 --batch 4 \ --output ../../output/cut_police # 推理 (在 CV 管线中调用) # from CCPD_SPE_GEN.gan_pipeline.dataset import LChannelInference ``` ## 依赖 | 管线 | 依赖 | |------|------| | CV | `numpy`, `opencv-python`, `tqdm`, `chinese_license_plate_generator/` | | GAN | 以上 + `torch>=1.12`, `torchvision`, `tensorboard` | ## 支持的特殊车牌类型 | 类型 | 底板 | 说明 | |------|------|------| | `police` | 白底 | 警用车牌 (末位"警"红字) | | `army` | 白底 | 军车/武警 | | `gangao` | 黑底 | 港澳入出境 | | `shiguan_old` | 黑底 | 使馆旧版 ("使"红字) | | `shiguan_new` | 黑底 | 使馆新版 (白字) | | `lingguan_old` | 黑底 | 领馆旧版 ("领"红字) | | `lingguan_new` | 黑底 | 领馆新版 (白字) | | `coach` | 黄底 | 教练车 (末位"学") | | `new_energy` | 黄绿双拼 | 大型新能源 (8 位) |