Files
ICE_Dataset/CCPD_SPE_GEN/README.md
T

3.0 KiB

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 退化模拟 → 输出

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 管线,替换硬编码的退化模拟步骤。

# 训练
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 位)