CCPD数据集+yolov5+智能驾驶车牌检测

                    CCPD数据集+yolov5+智能驾驶车牌检测

  1. 代码准备
  2. ccpd数据集准备
  3. ccpd转yolov5目标格式
  4. 训练
  5. 测试
  6. 检测

在此使用MobaXterm_Personal_21.2

CCCPD数据集

CCPD2019数据集:

CCPD2019数据集主要采集于合肥市停车场,采集时间为上午7:30到晚上10:00,停车场采集人员手持Android POS机对停车场的车辆拍照进行数据采集。所拍摄的车牌照片涉及多种复杂环境,包括模糊、倾斜、雨天、雪天等。CCPD2019数据集包含了25万多幅中国城市车牌图像和车牌检测与识别信息的标注。主要介绍如下:

类别         描述                                       图片数

CCPD-Base     通用车牌图片                                 200k

CCPD-FN         车牌离摄像头拍摄位置相对较近或较远             20k

CCPD-DB         车牌区域亮度较亮、较暗或者不均匀             20k

CCPD-Rotate     车牌水平倾斜20到50度,竖直倾斜-10到10度     10k

CCPD-Tilt         车牌水平倾斜15到45度,竖直倾斜15到45度     10k

CCPD-Weather    车牌在雨雪雾天气拍摄得到                     10k

CCPD-Challenge 在车牌检测识别任务中较有挑战性的图片         10k

CCPD-Blur     由于摄像机镜头抖动导致的模糊车牌图片         5k

CCPD-NP         没有安装车牌的新车图片                         5k

CCPD2019/CCPD-Base中的图像被拆分为train/val数据集。使用CCPD2019中的子数据集(CCPD-DB、CCPD-Blur、CCPD-FN、CCPD-Rotate、CCPD-Tilt、CCPD-Challenge)进行测试。

CCPD2019数据集(数据大小12.26G)下载地址:

链接:https://pan.baidu.com/s/1Jh55ufXZZpusg7Vhn4ZYdQ

提取码:f6mo

Ccpd数据集是12G左右的存储,将打包好的数据集上传至MobaXterm_Personal_21.2服务器上

例如: "/data/aimonitor/data/datasets/car_license/1002/license_use/CCPD.7z"

在此我使用的是7z工具打包的,可以在/data/aimonitor/data/datasets/car_license/1002/license_use/目录下使用Linux命令:7za x CCPD.7z解压包

在数据集目录下建立两个文件夹test/car_data

 

在car_data目录下创建两个文件夹images/labels:

 

两文件夹下分别创建两个文件夹train,val:

 

Ccpd转yolov5目标格式

  1. 将数据集图片8:2分为训练与测试

# coding=UTF8

import shutil

import os

import random

from shutil import copy2

trainfiles = os.listdir(r"D:\CCPD2019.tar\CCPD2019\ccpd_base")

                  #(图片文件夹)

num_train = len(trainfiles)

print( "num_train: " + str(num_train) )

index_list = list(range(num_train))

print(index_list)

random.shuffle(index_list)

num = 0

trainDir = r"D:\CCPD2019.tar\ccpd_train\images\train"

         #(将图片文件夹中的6份放在这个文件夹下)

validDir = r"D:\CCPD2019.tar\ccpd_train\images\val"

         #(将图片文件夹中的2份放在这个文件夹下)

detectDir = r"D:\CCPD2019.tar\test_datasets\images"

         #(将图片文件夹中的2份放在这个文件夹下)

for i in index_list:

    fileName = os.path.join(r"D:\CCPD2019.tar\CCPD2019\ccpd_base", trainfiles[i])

    if num < num_train*0.6:

        print(str(fileName))

        copy2(fileName, trainDir)

    elif num < num_train*0.8:

        print(str(fileName))

        copy2(fileName, detectDir)

    else:

        copy2(fileName, validDir)

    num += 1

2.将文件夹下图片命名信息提取切割,存储为txt文档,并存储到文件夹中

import shutil

import cv2

import os

def txt_file(img_path):

    x = img_path.split("/", 12)

    if x[11] == "train":

        y = '/'.join(x[0:10]) + '/labels/' + 'train/'

    else:

        y = '/'.join(x[0:10]) + '/labels/' + 'val/'

    return y

def txt_translate(path, txt_path):

    for filename in os.listdir(path):

        print(filename)

        list1 = filename.split("-", 3)  # 第一次分割,以减号'-'做分割

        subname = list1[2]

        list2 = filename.split(".", 1)

        subname1 = list2[1]

        if subname1 == 'txt':

            continue

        lt, rb = subname.split("_", 1)  # 第二次分割,以下划线'_'做分割

        lx, ly = lt.split("&", 1)

        rx, ry = rb.split("&", 1)

        width = int(rx) - int(lx)

        height = int(ry) - int(ly)  # bounding box的宽和高

        cx = float(lx) + width / 2

        cy = float(ly) + height / 2  # bounding box中心点

        img = cv2.imread(path + filename)

        if img is None:  # 自动删除失效图片(下载过程有的图片会存在无法读取的情况)

            os.remove(os.path.join(path, filename))

            continue

        width = width / img.shape[1]

        height = height / img.shape[0]

        cx = cx / img.shape[1]

        cy = cy / img.shape[0]

        txtname = filename.split(".", 1)

        txtfile = txt_path + txtname[0] + ".txt"

        # 绿牌是第0类,蓝牌是第1类

        with open(txtfile, "w") as f:

            f.write(str(0) + " " + str(cx) + " " + str(cy) + " " + str(width) + " " + str(height))

if __name__ == '__main__':

    # 修改此处地址

    trainDir = "/data/aimonitor/data/datasets/car_license/1002/license_new/CCPD/ccpd_train/images/train/"

    validDir = "/data/aimonitor/data/datasets/car_license/1002/license_new/CCPD/ccpd_train/images/val/"

    # 该处修改为图片存储地址

    txt_path1 = txt_file(trainDir)

    txt_path2 = txt_file(validDir)

    txt_translate(trainDir, txt_path1)

txt_translate(validDir, txt_path2)

打开yolov5文件夹下的data文件夹,将任意选择一个数据集的yaml文件复制,并且将yaml文件内容修改

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017)

# Example usage: python train.py --data coco128.yaml

# parent

# ├── yolov5

# └── datasets

#     â””── coco128  â†?downloads here

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]

path: /data/aimonitor/data/datasets/car_license/1002/license_new/CCPD/ccpd_train/  # dataset root dir

train: images/train  # train images (relative to 'path') 128 images

val: images/train  # val images (relative to 'path') 128 images

test:  # test images (optional)

# Classes

nc: 1

names: ['lense']

# Download script/URL (optional)

# download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip

修改path和nc,以及names

Path是数据集路径,nc是classes标注标签个数,names是标签名称

开始训练,使用命令:

python3 train.py --data ./data/myData.yaml --cfg ./models/yolov5s.yaml --epochs 30 --weights ''

无基础模型,可选基础模型

--data 数据路径

--epochs 训练次数

模型训练开始:

 

训练结束:

 

测试数据:

python3 detect.py --weight /data/aimonitor/data/datasets/vehicle/1006/car_2.0/model300_6_nobase/best.pt --source /data/aimonitor/data/datasets/vehicle/1006/car_2.0/test_color/ --project /data/aimonitor/data/datasets/vehicle/1006/car_2.0/test_color/ --save-crop

用来测试车牌检测模型,需要模型和测试数据集

至于—save-crop是用来将被检测到的车牌切割出来,以方便我们后续的车牌识别模型研发数据准备

测试数据:

    

 

 

测试切车牌图片:

                                          

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CCPD2019车牌数据集是一个大型的、多样化的、经过仔细标注的中国城市车牌开源数据集。该数据集主要包括普通车牌(蓝色车牌)的图像。每张图像都包含一张车牌,并且车牌的省份主要为皖。CCPD数据集中的每幅图像都包含大量的标注信息,但是没有专门的标注文件,每张图像的文件名就是对应的数据标注。标注车牌图像最困难的部分是注释四个顶点的位置。为了完成这项任务,数据发布者首先在10k图像上手动标记四个顶点的位置,然后设计了一个基于深度学习的检测模型,在对该网络进行良好训练后,对每幅图像的四个顶点位置进行自动标注。最后,数据发布者雇用了7名兼职工人在两周内纠正这些标注。CCPD2019数据集提供了超过250k个独特的车牌图像和详细的注释。每张图像的分辨率为720(宽度)× 1160(高度)× 3(通道)。虽然该数据集中的图片标注可能不准确,但总体来说,CCPD2019数据集非常适合研究车牌识别算法的人员学习使用。\[1\] #### 引用[.reference_title] - *1* *2* *3* [[深度学习] CCPD车牌数据集介绍](https://blog.csdn.net/LuohenYJ/article/details/117752120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科萨福科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值