实现思路:yolov11提取车牌坐标,进行分割,然后使用PaddleOCR进行识别!
图片:
完整源码获取方式关注底部wx公号,私信获得(有偿)
一、CCPD数据集进行处理
下载链接:https://github.com/detectRecog/CCPD
打开readme文件,查找百度网盘链接,在此不再赘述!
数据集比较大,
数据集说明:
CCPD2019车牌数据集是采集人员在合肥停车场采集、手工标注得来,采集时间在早7:30到晚10:00之间。且拍摄车牌照片的环境复杂多变,包括雨天、雪天、倾斜、模糊等。CCPD数据集包含将近30万张图片、图片尺寸为720x1160x3,共包含8种类型图片,每种类型、数量及类型说明如下表:
类型 | 图片数 | 说明 |
---|---|---|
ccpd_base | 199996 | 正常车牌 |
ccpd_challenge | 50003 | 比较有挑战的车牌 |
ccpd_db | 10132 | 光线较暗或较亮车牌 |
ccpd_fn | 20967 | 距离摄像头较远或较近 |
ccpd_np | 3036 | 没上牌的新车 |
ccpd_rotate | 10053 | 水平倾斜20-50度,垂直倾斜-10-10度 |
ccpd_tilt | 30216 | 水平倾斜15-45度,垂直倾斜-15-45度 |
ccpd_weather | 9999 | 雨天、雪天或大雾的车牌 |
ccpd_blur | 20611 | 模糊的车牌 |
cppd_newenergy | 11776 | 新能源车牌 |
总共283037张车牌图像
图片命名:“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为省份 对应省份字典provinces中的’皖’,;第二个0是该车所在地的地市一级代码,对应地市一级代码字典alphabets的’A’;后5位为字母和文字, 查看车牌号ads字典,如22为Y,27为3,33为9,16为S,最终车牌号码为皖AY339S
省份:[“皖”, “沪”, “津”, “渝”, “冀”, “晋”, “蒙”, “辽”, “吉”, “黑”, “苏”, “浙”, “京”, “闽”, “赣”, “鲁”, “豫”, “鄂”, “湘”, “粤”, “桂”, “琼”, “川”, “贵”, “云”, “藏”, “陕”, “甘”, “青”, “宁”, “新”]
地市:[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’,‘X’, ‘Y’, ‘Z’]
车牌字典:[‘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’]
最新的CCPD2020又补充了1万多张新能源汽车数据,都在下面的官网,感兴趣的可以去下载。
由于数据量过大,我从各个类型里面随机抽取10%,最终重构以后得到最终的数据集!
最终的数据集数据量如下:
类型 | 图片数 | 说明 |
---|---|---|
ccpd_base | 19999 | 正常车牌 |
ccpd_challenge | 5000 | 比较有挑战的车牌 |
ccpd_db | 1013 | 光线较暗或较亮车牌 |
ccpd_fn | 2096 | 距离摄像头较远或较近 |
ccpd_np | 303 | 没上牌的新车 没有坐标信息,忽略 |
ccpd_rotate | 1005 | 水平倾斜20-50度,垂直倾斜-10-10度 |
ccpd_tilt | 3021 | 水平倾斜15-45度,垂直倾斜-15-45度 |
ccpd_weather | 999 | 雨天、雪天或大雾的车牌 |
ccpd_blur | 2061 | 模糊的车牌 |
cppd_newenergy | 1177 | 新能源车牌 |
1.1 从文件夹构建txt格式数据集
去除重复图片+未上牌新车,将所有图片放在一个datasets文件夹里面,共35885张图片,然后运行下述代码:
import os
import cv2
def parse_filename(filename):
"""解析CCPD文件名,提取车牌边界框坐标"""
try:
except Exception as e:
print(f"解析文件名失败: {
filename}, 错误: {
e}")
return None
def convert_to_yolo_format():
"""将边界框转换为YOLO格式(归一化)"""
def process_ccpd_dataset(image_dir