---
title: china-license-plate-recognition
canonical_url: "https://www.modelscope.cn/models/zyazyz008/china-license-plate-recognition"
md_url: "https://www.modelscope.cn/models/zyazyz008/china-license-plate-recognition.md"
repository: zyazyz008/china-license-plate-recognition
chinese_name: "中国车牌识别（YOLO+CRNN+7类分类）"
last_updated: 2026-08-28
license: "Apache License 2.0"
pipeline_tag: license-plate-detection
tasks:
  - license-plate-detection
  - ocr-recognition
  - image-classification
library_name:
  - pytorch
frameworks:
  - pytorch
language:
  - zh
downloads: 22
stars: 7
tags:
  - "中国车牌"
  - "车牌识别"
  - YOLOv8
  - CRNN
  - CTC
  - "车牌分类"
  - OCR
---

# china-license-plate-recognition

> china-license-plate-recognition - zyazyz008 在 ModelScope 开源的模型。中国车牌识别三件套（YOLO + CRNN + 7类分类）

zyazyz008/china-license-plate-recognition 是 ModelScope 魔搭社区上的license-plate-detection、ocr-recognition、image-classification模型，采用 Apache License 2.0 许可。

- **Repository**: zyazyz008/china-license-plate-recognition
- **License**: Apache License 2.0
- **Tasks**: license-plate-detection, ocr-recognition, image-classification
- **Tags**: 中国车牌, 车牌识别, YOLOv8, CRNN, CTC, 车牌分类, OCR
- **Downloads**: 22
- **Stars**: 7
- **Last updated**: 2026-08-28

Source: https://www.modelscope.cn/models/zyazyz008/china-license-plate-recognition

---

# 中国车牌识别三件套（YOLO + CRNN + 7类分类）

基于 [CBLPRD-330k](https://www.modelscope.cn/datasets/sunlifev/China-Balanced-License-Plate-Recognition-Dataset-330k)（约 33 万张中国车牌）训练的端到端识别组合：**车牌定位 → 字符识别 → 号牌类型分类**。

| 文件 | 任务 | 说明 |
|------|------|------|
| `yolov8n-license-plate.pt` | 车牌区域检测 | YOLOv8n，单类 `license_plate` |
| `crnn_best.pt` | 车牌字符 OCR | CRNN + BiLSTM + CTC |
| `cls_best.pt` | 号牌类型分类 | YOLOv8n-cls，7 类 |
| `inference_example.py` | 示例脚本 | 一键跑通三件套 |
| `configuration.json` / `metrics.json` | 元数据 | 结构与指标摘要 |

推荐流水线：`整图/车辆 crop → 检测车牌框 → CRNN 读字 + CLS 判型`。

## 训练曲线总览

![Training Overview](assets/training_overview.png)

| 模块 | 最终结果 |
|------|----------|
| 车牌检测 | mAP50 **95.0%** · mAP50-95 **72.7%** · Precision **94.8%** · Recall **95.2%** |
| CRNN OCR | 字符级 val_acc **99.44%** |
| 7 类分类 | accuracy_top1 **100%**（第 4 epoch 起） |

---

## 快速使用

### 1. 安装依赖

```bash
pip install modelscope ultralytics torch opencv-python
```

### 2. 下载模型

```python
from modelscope import snapshot_download

model_dir = snapshot_download("zyazyz008/china-license-plate-recognition")
print(model_dir)
```

### 3. 最小推理（三件套）

将 `car.jpg` 换成你的图片，在模型目录下执行：

```bash
python inference_example.py --image car.jpg --model-dir .
```

或用 Python：

```python
from ultralytics import YOLO
from modelscope import snapshot_download

model_dir = snapshot_download("zyazyz008/china-license-plate-recognition")

# ① 车牌框检测
det = YOLO(f"{model_dir}/yolov8n-license-plate.pt")
results = det.predict("car.jpg", conf=0.5)
for r in results:
    for box in r.boxes:
        print("plate_box", box.xyxy[0].tolist(), float(box.conf[0]))

# ② 号牌类型（对车牌 crop）
cls = YOLO(f"{model_dir}/cls_best.pt")
# ③ OCR：见 inference_example.py（CRNN + CTC 解码）
```

建议阈值：检测 `conf≈0.5~0.6`；业务落地可再加 `min_confidence≈0.9` 与多帧确认。

---

## 训练过程

数据统一来自 **CBLPRD-330k**，按任务拆成三路：

```
CBLPRD-330k
 ├─ 车牌 bbox 标注 ──► YOLOv8n 检测（yolov8n-license-plate.pt）
 ├─ 车牌 crop + 字符串 ──► CRNN+CTC OCR（crnn_best.pt）
 └─ 车牌 crop + 7类标签 ──► YOLOv8n-cls（cls_best.pt）
```

### 1）车牌检测（YOLOv8n）

| 项 | 值 |
|----|-----|
| 基座 | `yolov8n.pt` |
| 类别 | 1 类：`license_plate` |
| 输入 | 640×640 |
| epochs | 50 |
| batch | 16 |
| 优化器 | auto（Ultralytics），`lr0=0.01`，`lrf=0.01` |
| AMP | True |
| 增强 | mosaic=1.0，hsv，fliplr=0.5，translate=0.1，scale=0.5；最后 10 epoch 关闭 mosaic |
| patience | 100 |

![Detection Training Curves](assets/det_training_curves.png)

要点：
- 前 10 epoch 指标波动较大（mAP 有短暂回落）；
- 约 15~25 epoch 后 Precision / Recall / mAP50 进入高位并收敛；
- 25 之后主要抬升 **mAP50-95**（定位更准），最终 **mAP50≈95.0%、mAP50-95≈72.7%**；
- box_loss / cls_loss 全程下降，训练稳定。

### 2）车牌 OCR（CRNN + CTC）

| 项 | 值 |
|----|-----|
| 结构 | CNN 特征提取 + 双向 LSTM(2 层, hidden=256) + CTC |
| 输入 | 灰度图 **48×128**（H×W） |
| 字符集 | 数字 + 字母（无 I/O）+ 省份汉字 + `警学港澳使领`，共 **73 类（含 blank）** |
| 优化 | Adam，`lr=1e-3`，batch=512，约 60 epoch |
| 解码 | CTC 贪婪解码 |
| **最终** | 验证集字符级准确率 **99.44%** |

字符集：

```
0123456789ABCDEFGHJKLMNPQRSTUVWXYZ
京津沪渝冀晋辽吉黑苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云藏陕甘青蒙宁新
警学港澳使领
```

### 3）号牌 7 类分类（YOLOv8n-cls）

| 项 | 值 |
|----|-----|
| 基座 | `yolov8n-cls.pt` |
| 输入 | 128×128 |
| 计划 epochs | 50（早停，实际跑满 **19** epoch） |
| batch | 256 |
| 优化器 | AdamW，`lr0=0.001`，`cos_lr=True`，AMP |
| patience | 15 |

| ID | 类别 |
|----|------|
| 0 | 单层黄牌 |
| 1 | 双层黄牌 |
| 2 | 拖拉机绿牌 |
| 3 | 新能源大型车 |
| 4 | 新能源小型车 |
| 5 | 普通蓝牌 |
| 6 | 黑色车牌 |

![Classification Training Curves](assets/cls_training_curves.png)

第 4 epoch 起验证 top1 已达 **100%**，后续主要压低 train/val loss；因 patience=15，在第 19 epoch 结束。

---

## 最终结果（本仓库权重）

| 模块 | 指标 | 结果 |
|------|------|------|
| 车牌检测 | Precision | **94.8%** |
| 车牌检测 | Recall | **95.2%** |
| 车牌检测 | mAP50 | **95.0%** |
| 车牌检测 | mAP50-95 | **72.7%** |
| CRNN OCR | 字符级 val_acc | **99.44%** |
| 7 类分类 | accuracy_top1 | **100%** |

---

## 适用 / 不适用

**适用**：监控、路侧抓拍、停车场出入口等中国大陆号牌场景；需要同时输出车牌字符串与号牌类型。

**不适用**：极端模糊 / 严重遮挡 / 非中国号牌；需要法律效力的执法取证（仅供工程与研究参考）。

---

## 许可

- 权重：**Apache License 2.0**
- 检测 / 分类基座来自 Ultralytics YOLOv8，请同时遵守其许可
- 训练数据版权归原数据集作者；商用前请自行确认合规
