摘要:
合集:AI案例-CV-交通
数据集:中国蓝色和绿色车牌数据集(2020)
AI问题:目标检测
数据集价值:支持车牌目标检测和识别
解决方案:YOLO
一、问题描述
中国蓝色和绿色车牌数据集在目标检测和识别领域有广泛的应用。这些数据集通常包含大量带有标记的车牌图像,用于训练和验证车牌识别模型。这是一个大型、多样化的、经过仔细标注的中国城市车牌开源数据集。CCPD数据集主要分为CCPD2019数据集和CCPD2020(CCPD-green)数据集。CCPD2019数据集车牌类型仅有普通车牌(蓝色车牌),CCPD2020数据集车牌类型仅有新能源车牌(绿色车牌)。
目标检测算法
YOLO目标检测算法:YOLO(You Only Look Once)算法采用一个单独的CNN模型实现end-to-end的目标检测。YOLO算法速度快,训练过程也是end-to-end的,适用于实时应用场景。YOLOV8是YOLO系列的比较新的版本,具有更高的检测速度和准确率,特别适合于实时应用场景。
车牌字符识别算法
- LPRNet车牌字符识别算法:LPRNet(License Plate Recognition Network)是一种专门设计用于车牌识别的深度学习模型。它采用了一种端到端的训练方法,能够直接从原始图像中识别出车牌文本。
- OCR光学字符识别技术:OCR(Optical Character Recognition)技术用于识别车牌上的字符,将图像中的文本转换为计算机可编辑的文本数据。
通过结合目标检测算法和车牌字符识别算法,可以构建一个高效的车牌识别系统,广泛应用于交通管理、智能停车系统等领域。
二、数据集内容
CCPD2019蓝色车牌数据集
数据集样例:
CCPD2019/ccpd_tilt/0712-36_21-196&356_432&608-407&608_196&454_221&356_432&510-0_0_4_0_25_30_29-130-48.jpg
CCPD2019/ccpd_tilt/0167-25_30-250&341_364&464-364&464_255&411_250&341_359&394-0_0_17_11_33_26_24-36-14.jpg
CCPD2019/ccpd_tilt/0366-16_41-295&487_525&620-489&564_295&620_331&543_525&487-0_0_16_3_30_25_32-86-257.jpg
CCPD2019/ccpd_tilt/0517-26_53-205&385_445&565-445&565_247&467_205&385_403&483-0_0_26_32_32_31_32-88-36.jpg
CCPD2019/ccpd_tilt/0236-16_34-222&408_398&520-377&473_222&520_243&455_398&408-0_0_28_14_33_32_29-69-74.jpg
...
CCPD2019数据集车牌类型仅有普通车牌(蓝色车牌),CCPD2020数据集车牌类型仅有新能源车牌(绿色车牌)。在CCPD数据集中,每张图片仅包含一张车牌,车牌的车牌省份主要为皖。
We are confident that images in subsets of CCPD is much more challenging than before with over 300k images and refined annotations. CCPD提供了超过250k个独特的车牌图像和详细的注释。每张图像的分辨率为720(宽度)× 1160(高)× 3(通道)。实际上,这种分辨率足以保证每张图像中的车牌清晰可辨,但是该数据有些图片标注可能不准。不过总的来说CCPD数据集非常推荐研究车牌识别算法的人员学习使用。
CCPD2020绿色车牌数据集
新增CPDD2020(CCPD-Green)数据集一共包含11774张新能源汽车的8位车牌数据。
数据结构
标注
CCPD中的每幅图像都包含大量的标注信息,但是CCPD数据集没有专门的标注文件,每张图像的文件名就是该图像对应的数据标注。
数据集中图片的命名规则如下:一图片命名样例:“025-95_113-154&383_386&473-386&473_177&454_154&383_363&402-0_0_22_27_27_33_16-37-15.jpg”
说明:
- 025:车牌区域占整个画面的比例;
- 95_113:车牌水平和垂直角度, 水平95°, 竖直113°;
- 154&383_386&473:标注框左上、右下坐标,左上(154, 383), 右下(386, 473);
- 86&473_177&454_154&383_363&402:标注框四个角点坐标,顺序为右下、左下、左上、右上;
- 0_0_22_27_27_33_16:车牌号码映射关系如下: 第一个0为省份,对应以下省份字典。注释:蓝色车牌一共7位。
provinces = ["皖", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "京", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "警", "学", "O"]
alphabets = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', 'O']
ads = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'O']
参考:Annotations are embedded in file name. A sample image name is “025-95_113-154&383_386&473-386&473_177&454_154&383_363&402-0_0_22_27_27_33_16-37-15.jpg”. Each name can be splited into seven fields. Those fields are explained as follows.
- Area: Area ratio of license plate area to the entire picture area.
- Tilt degree: Horizontal tilt degree and vertical tilt degree.
- Bounding box coordinates: The coordinates of the left-up and the right-bottom vertices.
- Four vertices locations: The exact (x, y) coordinates of the four vertices of LP in the whole image. These coordinates start from the right-bottom vertex.
- License plate number: Each image in CCPD has only one LP. Each LP number is comprised of a Chinese character, a letter, and five letters or numbers. A valid Chinese license plate consists of seven characters: province (1 character), alphabets (1 character), alphabets+digits (5 characters). “0_0_22_27_27_33_16” is the index of each character. These three arrays are defined as follows. The last character of each array is letter O rather than a digit 0. We use O as a sign of “no character” because there is no O in Chinese license plate characters.
参考: 《一文带你看懂新能源车牌号》 https://zhuanlan.zhihu.com/p/392169529
新能源车牌与传统燃油车牌最直接的区别有两点:第一是颜色,第二是位数。这个很容易分辨的。其数位编制分为三部分: 1、省份简称(1位汉字):与普通号牌保持一致; 2、地方行政区代号(1位字母):与普通号牌保持一致; 3、序号(6位):第一位为字母,第二位可以是字母或数字,其余4位为数字。注释:新增了一位。

绿色车牌样例:
CCPD2020/ccpd_green/train/04-90_267-158&448_542&553-541&553_162&551_158&448_542&450-0_1_3_24_27_33_30_24-99-116.jpg
绿色车牌号码样例: 0_1_3_24_27_33_30_24 ,绿色车牌号码一共8位。
三种分类train\val\test
各种图片分类可在’split/’文件夹下找到。CCPD-Base中的图像被分割为训练/验证集。CCPD中的子数据集(CCPD-DB、CCPD-Blur、CCPD-FN、CCPD-Rotate、CCPD-Tilt、CCPD-Challenge)被用于测试。
量化指标/metric
由于CCPD中的每张图像只包含一个车牌(LP)。因此,我们不考虑召回率,只关注精确度。目标检测器被设计为每张图像预测一个边界框。
- 目标检测:对于每张图像,检测器只输出一个边界框。当且仅当其IoU与真实边界框的IoU超过70%(IoU> 0.7)时,该边界框被认为是正确的。此外,我们在测试集上计算AP。
- 车牌识别:当且仅当车牌号码中的所有字符都被正确识别时,车牌识别才是正确的。
基准测试/benchmark
目标检测/detection
FPS | AP | DB | Blur | FN | Rotate | Tilt | Challenge | |
---|---|---|---|---|---|---|---|---|
Faster-RCNN | 11 | 84.98 | 66.73 | 81.59 | 76.45 | 94.42 | 88.19 | 89.82 |
SSD300 | 25 | 86.99 | 72.90 | 87.06 | 74.84 | 96.53 | 91.86 | 90.06 |
SSD512 | 12 | 87.83 | 69.99 | 84.23 | 80.65 | 96.50 | 91.26 | 92.14 |
YOLOv3-320 | 52 | 87.23 | 71.34 | 82.19 | 82.44 | 96.69 | 89.17 | 91.46 |
车牌识别/recognition
我们提供了基线方法来进行识别,方法是采用车牌识别模型Holistic-CNN(HC)(参见论文《Holistic recognition of low quality license plates by cnn using track annotated data》)。
FPS | AP | DB | Blur | FN | Rotate | Tilt | Challenge | |
---|---|---|---|---|---|---|---|---|
SSD512+HC | 11 | 43.42 | 34.47 | 25.83 | 45.24 | 52.82 | 52.04 | 44.62 |
“AP”列显示了整个测试集上的精确度。测试集包含六个部分:DB(ccpd_db/)、模糊(ccpd_blur)、FN(ccpd_fn)、旋转(ccpd_rotate)、倾斜(ccpd_tilt)、挑战(ccpd_challenge)。
数据集版权许可协议
This dataset is open-source under MIT license.
引用要求
This repository is designed to provide an open-source dataset for license plate detection and recognition, described in 《Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline》. This dataset is open-source under MIT license. More details about this dataset are avialable at our ECCV 2018 paper 《Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline》. If you are benefited from this paper, please cite our paper as follows:
@inproceedings{xu2018towards,
title={Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline},
author={Xu, Zhenbo and Yang, Wei and Meng, Ajin and Lu, Nanxue and Huang, Huan},
booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
pages={255--271},
year={2018}
}
三、目标检测和识别样例
训练方法
输入参数在Python代码中有很好的注释(python2/3都可以,pytorch版本应>=0.3)。只要GPU内存足够,你可以增加batchSize。
运行环境要求/Enviorment:
- python: pytorch(0.3.1), numpy(1.14.3), cv2(2.4.9.1).
- system: Cuda(release 9.1, V9.1.85)
conda create -n license-plate python=3.10
conda init
conda activate license-plate
conda install pytorch=0.3.1 torchvision=0.2.0 -c pytorch // CUDA 环境
<!-- conda install pytorch=0.3.1 torchvision=0.2.0 cpuonly -c pytorch // 或没有CUDA环境 -->
conda install pytorch torchvision torchaudio cpuonly -c pytorch // 或没有CUDA环境
conda install numpy=1.14.3
<!-- conda install -c menpo opencv=2.4.9.1 -->
conda install -c conda-forge opencv
conda install imutils
说明:
- PyTorch是一个基于Python的深度学习框架,由Facebook的AI研究团队开发和维护。它提供了强大的GPU加速、动态计算图、丰富的预训练模型和工具,以及一个活跃的社区和生态系统,使得构建和训练神经网络模型变得简单、灵活和易用。
- NumPy,全称为Numerical Python,是一个开源的Python库,它提供了大量的数学函数来操作大型多维数组和矩阵,并包含了许多高级的数学函数来操作这些数组。
- OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库。它包含多种计算机视觉算法,可用于图像处理、视频分析和各种计算机视觉任务。OpenCV最初由Intel的一个研究项目发展而来,并于1999年首次发布。自那时以来,它已经发展成为一个活跃的开源项目,拥有庞大的开发者社区和广泛的应用领域。
- imutils是一个Python库,它提供了许多用于图像处理和计算机视觉任务的实用函数和类。这个库旨在简化常见的图像处理任务,如调整大小、旋转、裁剪、颜色空间转换等。imutils还包含一些用于视频处理的工具,例如视频捕获和帧处理。
已预训练的 wR2 和 rpnet 模型
我们提供了一已训练定制的神经网络wR2(Weakly Supervised Region-based Convolutional Neural Network)模型和rpnet模型,分别存储在:
./rpnet/wR2/wR2.pth ./rpnet/fh02/fh02.pth
python wR2.py -i [IMG FOLDERS] -b 4
经过 wR2 微调/finetunes, 我们在rpnet.py中训练RPnet,请在rpnet.py中指定wR2Path变量为预训练wR2模型的文件路径。
python rpnet.py -i [TRAIN IMG FOLDERS] -b 4 -se 0 -f [MODEL SAVE FOLDER] -t [TEST IMG FOLDERS]
说明:
在AI目标检测领域,.pth 文件通常指的是由PyTorch框架保存的模型权重文件。PyTorch是一种流行的深度学习库,广泛应用于计算机视觉、自然语言处理等领域。
.pth 文件包含了训练好的神经网络模型的权重参数,这些参数是在训练过程中通过优化算法(如梯度下降)不断调整得到的。在目标检测任务中,这些权重参数对于模型的准确性和性能至关重要。
当你下载或获得一个预训练的目标检测模型时,通常会得到一个或多个 .pth 文件。在使用这些模型进行推理或迁移学习时,你需要将这些权重加载到你的PyTorch模型中。
测试已训练的模型
微调RPnet后,您需要解压一个zip文件夹并将其选为测试目录。-s后面的参数是用于存储失败案例的文件夹。
python rpnetEval.py -m [MODEL PATH, like /**/fh02.pth] -i [TEST DIR] -s [FAILURE SAVE DIR]
- Brightness: The brightness of the license plate region.
- Blurriness: The Blurriness of the license plate region.
演示
在rpnet/文件夹下提供了演示代码和几张图片,您可以通过下载或训练得到模型的权重文件:fh02.pth,然后按照以下方式运行演示,演示代码将修改rpnet/demo文件夹中的图片,您可以通过打开演示图片进行检查。
python demo.py -i [ROOT/rpnet/demo/] -m [***/fh02.pth]
这是一个接近训练有素的模型,可用于测试和娱乐(时间紧迫,仅训练了5个epoch,但足以进行测试):我们鼓励与SOTA检测器(如FCOS)进行比较,而不是RPnet(Region Proposal Network),因为RPnet的架构相对过时。
Location module wR2.pth rpnet model fh02.pth
源码开源协议
This source code is under MIT license.