基于pytorch的车牌识别(一)

这篇具有很好参考价值的文章主要介绍了基于pytorch的车牌识别(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序流程设计

1,熟悉训练数据集;
2,加载本地车牌数据集;
3,定义网络模型;
4,输入数据集训练模型;
5,保存模型在线推理;
6,GUI可视化 ;

熟悉训练数据集

CCPD2019数据集

本项目所有的数据都是基于CCPD2019数据集,CCPD2019数据集包含了25万多幅中国城市车牌图像和车牌检测与识别信息的标注,主要采集于合肥市,采集人员手持Android POS机对停车场的车辆拍照进行数据采集。所拍摄的车牌照片涉及多种复杂环境,包括模糊、倾斜、雨天、雪天等。具体分类如下

类别 描述 数量级
CCPD-base 通用车牌图片 200k
CCPD-blur 由于摄像机镜头抖动导致的模糊车牌图片 5k
CCPD-challenge 在车牌检测识别任务中较有挑战性的图片 10k
CCPD-db 车牌区域亮度较亮、较暗或者不均匀 20k
CCPD-fn 车牌离摄像头拍摄位置相对较近或较远 20k
CCPD-np 没有安装车牌的新车图片 3k
CCPD-rotate 车牌水平倾斜20到50度,竖直倾斜-10到10度 10k
CCPD-tilt 车牌水平倾斜15到45度,竖直倾斜15到45度 10k
CCPD-weather 车牌在雨雪雾天气拍摄得到 10k

同目录下的splits文件夹包含各类别的标签 ,包含了由CCPD-Base中的图像被拆分成的训练train集,验证val集,测试test则由非CCPD-Base中的图像组成。

CCPD数据集标注信息

CCPD数据集里面的每张图像的文件名就是该图像对应的数据标注。例如图片

ccpd_base\01-86_91-298&341_449&414-458&394_308&410_304&357_454&341-0_0_14_28_24_26_29-124-24.jpg的文件名可以由分割符’-'分为多个部分:
  • ccpd_base 表示图片所属的类别,这是base类;
  • 01为区域(应该是哪个区域);
  • 86_91对应车牌的两个倾斜角度-水平倾斜角和垂直倾斜角, 水平倾斜97度, 竖直倾斜100度。水平倾斜度是车牌与水平线之间的夹角。二维旋转后,垂直倾斜角为车牌左边界线与水平线的夹角。CCPD数据集中这个参数标注可能不那么准,这个指标具体参考了论文Hough Transform and Its Application in Vehicle License Plate Tilt Correction;
  • 298&341_449&414对应边界框左上角和右下角坐标:左下角坐标(298,341), 右上角坐标(449,414);
  • 458&394_308&410_304&357_454&341对应车牌四个顶点坐标(右上角开始逆时针走):右上(458,394),左上(308,410),左下(304,357),右下(454,341);
  • 0_0_14_28_24_26_29为车牌号码,第一位为省份代码,后面6位是大写字母和数字,有对应的关系表;
  • 124为亮度,数值越大车牌越亮;
  • 24 为模糊度,数值越小车牌越模糊。

单例再现

在知道数据大体情况和每张图片携带的信息后,其实可以情景再现,下面任选一张图片,提取像素信息和位置信息和内容信息进行展示以便更好的掌握数据集具体情况。

# -*- encoding: utf-8 -*-
'''
@Project :   license_plate
@Desc    :   车牌识别,包括车牌语义分割,车牌识别
@Time    :   2023/04/19 20:42:53
@Author  :   帅帅de三叔,zengbowengood@163.com
'''
import os
from PIL import Image, ImageDraw, ImageFont

provincelist = [
    "皖", "沪", "津", "渝", "冀",
    "晋", "蒙", "辽", "吉", "黑",
    "苏", "浙", "京", "闽", "赣",
    "鲁", "豫", "鄂", "湘", "粤",
    "桂", "琼", "川", "贵", "云",
    "西", "陕", "甘", "青", "宁",
    "新"]

wordlist = [
    "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"]

def DrawBox(im, box): #车牌边框
    draw = ImageDraw.Draw(im)
    draw.rectangle(box, outline='red', width=3)

def DrawPoint(im, points):#绘制车牌四个边界点
    draw =  ImageDraw.Draw(im)
    for p in points:
        radius =3
        draw.ellipse((p[0]-radius, p[1]-radius, p[0]+radius, p[1]+radius), fill='green')
        
def DrawLable(im,  label): #绘制车牌
    draw = ImageDraw.Draw(im)
    font = ImageFont.truetype('simsun.ttc',  64)
    draw.text((30, 30), label, font=font, fill='red')

def ImgShow(imgpath, box, points, label):  #显示效果
    im = Image.open(imgpath)
    DrawBox(im, box)
    DrawPoint(im, points)
    DrawLable(im, label)
    im.show()
    im.save(r"D:\项目\车牌\result.jpg")

if __name__=="__main__":
    imgpath = r"D:\项目\车牌\CCPD\CCPD2019\ccpd_base\01-86_91-298&341_449&414-458&394_308&410_304&357_454&341-0_0_14_28_24_26_29-124-24.jpg"
    im = Image.open(imgpath)
    imgname = os.path.basename(imgpath).split('.')[0]
    _,_,box, points,label,brightness,blurriness = imgname.split('-')
    box  = box.split('_')
    box= [tuple(map(int, i.split('&')))  for i in  box]
    
    # DrawBox(im, box) 
    # im.show() #显示带车牌框的图片

    points = points.split('_')
    points = [tuple(map(int, i.split('&'))) for i in points]
    # DrawPoint(im, points)
    # im.show()

    label = label.split('_')
    province  = provincelist[int(label[0])]
    word = [wordlist[int(i)] for i in label[1:]]
    label = province+''.join(word)
    # print(label)
    # DrawLable(im, label)
    # im.show()

    ImgShow(imgpath,box,points,label)

展示效果如下

基于pytorch的车牌识别(一)
从展示效果图可以看到车牌框圈出来了,车牌四个角也用绿色点描上了,车牌内容也在左上角标注了,是不是对数据集有了更深的了解呢?

加载本地车牌数据集

参考文献
1,CCPD车牌数据集介绍
https://blog.csdn.net/LuohenYJ/article/details/117752120
https://blog.csdn.net/guyuealian/article/details/128704181
2,图像语义分割
https://huggingface.co/docs/transformers/tasks/semantic_segmentation
3,基于深度学习的车牌检测识别(Pytorch)(ResNet +Transformer)
https://blog.csdn.net/weixin_48866452/article/details/120319588
4,pytorch加载自己的图片数据集的两种方法
https://blog.csdn.net/qq_53345829/article/details/124308515
5,pytorch的 Custom Dataset
https://pytorch.org/tutorials/beginner/basics/data_tutorial.html文章来源地址https://www.toymoban.com/news/detail-428277.html

到了这里,关于基于pytorch的车牌识别(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于pytorch的车牌识别(一)

    1,熟悉训练数据集; 2,加载本地车牌数据集; 3,定义网络模型; 4,输入数据集训练模型; 5,保存模型在线推理; 6,GUI可视化 ; 本项目所有的数据都是基于CCPD2019数据集,CCPD2019数据集包含了25万多幅中国城市车牌图像和车牌检测与识别信息的标注,主要采集于合肥市,

    2024年02月01日
    浏览(34)
  • 153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

    目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。

    2024年02月16日
    浏览(57)
  • 100、基于STM32单片机自动跟随小车 红外遥控控制小车避障模式 跟随模式设计(程序+原理图+PCB源文件+流程图+硬件设计资料+元器件清单等)

    智能小车通过各种感应器获得外部环境信息和内部运动状态,实现在复杂环境背景下的自主运动,从而完成具有特定功能的机器人系统。而随着智能化电器时代的到来,它们在为人们提供的舒适的生活环境的同时,也提高了制造智能化电器对于人才要求的门槛。智能小车是集

    2024年02月15日
    浏览(82)
  • MYSQL+SSM基于区块链的物联网数据交易-46193,免费领源码,【计算机毕业设计开题选题+程序定制+论文书写+答辩ppt书写 全流程 】

    SSM基于区块链的物联网数据交易 系    院 XXXX 学科门类 XXX 专    业  XXX 班级 XXX 学    号 XXX 姓    名 XXX 指导教师 XXX 教师职称 XXX 2022 年 12 月 4 日 摘  要 物联网技术作为继互联网技术后新一代的通信信息集成应用的典范,其巨大的应用前景受到了学术界和政商界的广

    2024年02月05日
    浏览(54)
  • 基于Cadence Allegro无盘设计操作流程

    无盘设计 1.因为过孔具有电容效应,无盘设计能最大限度保证阻抗连续性,从而减小反射与插损; 2.减缓走线压力,降低产品成本与风险; SetupConstraintsModelSpacing Models勾选Hole to line SetupUnused Pads Suppression 光绘钻孔层注明无盘设计:Non-functional pads on internal signal layer

    2024年02月10日
    浏览(49)
  • Python程序设计基础:程序流程控制(一)

    程序流程的基本结构主要有三种,顺序结构、选择结构和循环结构,在顺序结构中是按照语句的位置一句一句顺序执行,每条语句有且只会执行一次,而在选择结构和循环结构中,通常是需要根据条件表达式的值来确定下一步的执行流程。 条件表达中一般使用两种运算符:关

    2024年02月11日
    浏览(47)
  • 基于MATLAB的GUI界面设计流程

    大三上小学期学习了MATLAB的GUI界面设计,感觉挺不错的,这里做个总结! 1、命令行输入“guide”指令,打开GUI面板,选择“新建GUI”、“Blank GUI” (左侧工具栏含有待添加的元素) 2、添加所需要的的元素(一般需要普通按钮、静态文本、普通文本、坐标图、单选按钮等)

    2024年02月01日
    浏览(55)
  • 基于Quartus II的fpga设计流程

    本文仅用于记录与学习。参考 串口(UART)的FPGA实现(含源码工程) 逻辑综合(logic synthesis)入门指南 quartusII关于时钟约束 FPGA内部硬件结构简介 如有侵权,联系删除 指用Verilog或VHDL语言实现的一个单元模块。在这个单元模块中,通过实例化将待验证设计(DUV)作为一个子模块

    2024年02月05日
    浏览(53)
  • 110、基于51单片机智能浇花浇水系统土壤湿度检测温度自动灌溉报警设计(程序+原理图+PCB源文件+原理图讲解+参考论文+开题报告+程序流程图+元器件清单等)

    选题背景及意义 在中国广大面积的农村,没有发达的工商业,有的只是大量闲置的田地。如果利用这些闲置的田地,种植美丽的花卉、树苗,能给当地带来一笔可观的收入。而这些花卉及树苗的种植对土壤湿度,温度有着极高的要求。在植物的成长过程中,土壤的湿度起着一

    2024年02月13日
    浏览(55)
  • 基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(六)

    更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统       这节主要讲条件节点与并发节点的有效性检查,主要是增加这两个节点的子节点检查,因为这两个节点需要增加审批人的子节点才能有效,否

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包