Tensorflow——端到端车牌识别(数据制作、训练、评估、预测)

2023-10-26

利用周末时间断断续续实现端到端车牌识别项目,具备完整的数据集、数据制作、训练、评估、预测业务。

项目特点:采用tensorflow中的keras库 + 训练时数据生成器data_generator;对学习keras API有一些参考意义。

项目地址:https://github.com/MrZhousf/license_plate_recognize

  • 运行平台:tensorflow1.12.0+python3.6
  • 神经网络:CNN+RNN
  • 数据集:CCPD2019

依赖

pip install -r requirements.txt

数据集

CCPD2019车牌数据集:https://github.com/detectRecog/CCPD

训练数据生成

生成训练数据集: deal_ccpd_data.py

  1. 下载CCPD2019数据集:https://github.com/detectRecog/CCPD
  • 共有9种类型的车牌数据

2.  保存车牌图片-提取图片中的车牌

fetch_plate_img(img_dir=img_dir_, save_dir=save_dir_)

运行完成后,只保留了车牌图片且命名为车牌号码

3.  图片校验,删除有问题的图片

verify_img(img_dir=img_dir_, error_img_save_dir=error_img_save_dir_)

4.  统计出车牌中每个字符的个数

statistics(img_dir=img_dir_, log_txt=log_txt_)

统计结果如下,统计结果没有显示完全,可见车牌数据是安徽的居多(ccpd2019是中科大的学生收集与整理的)

5.  生成训练-评估数据:将数据按照百分比切割成训练集和评估集

generate_train_eval(img_dir=img_dir_, train_dir=train_dir_, eval_dir=eval_dir_, eval_percent=0.03)

CNN+RNN

model目录下为网络训练业务

  1. 神经网络:license_plate_model.py
  2. 训练+评估:train.py
  3. 数据生成器:data_generator.py
  4. 预测/测试:prediction.py

待完善

  1. CCPD2019数据集有35万张车牌数据(包含各种天气),对于端到端的模型来说数据还有增加的空间
  2. CCPD2019数据集未覆盖全国各地的车牌,安徽车牌居多,数据缺口较大
  3. CCPD2019缺少新能源车、混动、货车以及特种车辆的车牌图片(黄牌、绿牌、黄绿牌、白牌、黑牌等)
  4. 增加车牌检测网络,实现车牌检测+识别自动化,这个比较简单,可以采用yolov3实现,后续若有时间再提交一版

模型主要代码

    def create_model(self, data_format, training=True):
        if data_format == 'channels_first':
            # (batch, channels, height, width) default
            input_shape = (self.channels, self.image_height, self.image_width)
        else:
            # (batch, height, width, channels)
            assert data_format == 'channels_last'
            input_shape = (self.image_height, self.image_width, self.channels)
        inputs = self.layer.Input(shape=input_shape, name='input', dtype=tf.float32)
        # cnn
        tensor = self.build_cnn(inputs=inputs, data_format=data_format)
        # rnn
        tensor = self.build_rnn(tensor)
        # ctc
        y_pre = self.layer.Activation('softmax', name='softmax')(tensor)
        labels = self.layer.Input(name='labels', shape=[self.label_max_length], dtype=tf.float32)
        input_len = self.layer.Input(name='input_length', shape=[1], dtype=tf.int64)
        label_len = self.layer.Input(name='label_length', shape=[1], dtype=tf.int64)
        loss_out = self.layer.Lambda(self.ctc_lambda_func, output_shape=(1,), name='ctc')(
            [y_pre, labels, input_len, label_len])
        if training:
            return tf.keras.models.Model(inputs=[inputs, labels, input_len, label_len], outputs=loss_out)
        else:
            return tf.keras.models.Model(inputs=[inputs], outputs=y_pre)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow——端到端车牌识别(数据制作、训练、评估、预测) 的相关文章

  • 微信小程序开发

    微信小程序开发2023 7 14 7 19 黑马程序员官方文档 https pan baidu com s 1crZTQdIZ7OSDkZIpIWkhYw pwd 1234 vant Weapp 类似element ui的组件库 https
  • 《Graph Learning专栏》 : 高密子图挖掘

    本周我们介绍另一图上的 聚类 算法 高密子图挖掘 Dense Subgraph Mining 这类算法与社群检测不同的是处理的数据对象是异构图 节点的类型不是单一的 同类型节点之间一般没有边 社群检测需要对整张图的节点进行社区划分 而高密子
  • 医学图像——《Difficulty-aware Meta-learning for Rare Disease Diagnosis》

    Lequan Yu Difficulty aware Meta learning for Rare Disease Diagnosis 摘要 这篇文章提出元学习方法解决罕见疾病分类问题 使用 ISIC 2018 skin lesion 分类

随机推荐

  • unity--城市道路车辆行驶

    目录 1 示意图 1 1行驶路线与红绿灯 2 层级面板 2 1红绿灯 2 2车辆路径点 3 属性面板 3 1红绿灯 3 2路径点 4 脚本代码 4 1 控制脚本 4 2红绿灯脚本 4 3路径点脚本 4 4车辆控制脚本 5 实现效果 1 示意
  • Mysql 学习笔记(快速复习)

    Mysql 学习笔记 快速复习 一 MySQL 基础 1 数据库连接工具 1 1 Navicat 使用教程 2 DDL 操作数据库 2 1 创建新数据库 2 2 删除数据库 2 3 使用数据库 3 CLUD 操作数据表 3 1 查询表 3
  • 机器学习-线性回归-sklearn

    线性模型 Scikit Learn中的线性回归 from sklearn linear model import LinearRegression import numpy as np import matplotlib as mpl im
  • Flink Sort-Shuffle:大数据流处理中的排序与洗牌

    在大数据流处理中 排序和洗牌是常见的操作 用于重新组织和处理数据 Apache Flink是一个流式处理框架 提供了强大的排序和洗牌功能 让我们可以高效地处理大规模的数据集 本文将详细介绍Flink中Sort Shuffle的实现原理和相应
  • Ubuntu20.04卸载gcc9.4.0,安装gcc9.3.0方法

    1 卸载旧版本gcc sudo apt get remove gcc 2 添加软件源 sudo add apt repository ppa ubuntu toolchain r test 3 更新 sudo apt get update
  • 分库表数据倾斜的处理让我联想到了AKF模型

    1 背景 最近在做需求的时候需要在一张表中增加一个字段 这张表情况如下 1 拆分了多个库多张表 2 库表拆分按表中商户编码字段hash之后取模进行拆分 由于库表拆分按照商户编码 有些大商家的单子数量远远要高于其他普通商家 这样就造成了严重的
  • Linux 中task_struct和文件系统的关系

    在内核进程运行的时候 有current 宏对应目前进程task struct结构 Linux进程主要数据结构之间的关系 一个进程文件位置是有fs struct描述的 进程打开的文件是有files struct描述的 具体打开的文件描述符是有
  • MSYS的下载与安装

    文章来源http code google com p msys cn 简介 本网站通过自行开发的mpkg包管理程序 提供MSYS发行版的下载服务 MSYS是Windows环境上的UNIX工作环境 由www mingw org项目所开发 但不
  • 【ES6】Iterator迭代器

    文章目录 一 Iterator 二 用法详解 1 基本用法 2 遍历不可迭代对象 2 1 原生具备Iterator接口的数据结构 2 2 遍历不可迭代的对象 2 3 Generator 遍历不可迭代对象 总结 一 Iterator 遍历器
  • 怎么设置html代码中的编码格式,html怎么设置编码

    在html中 可以使用meta标签来设置编码 语法格式 meta标签提供了HTML文档的元数据 元数据不会显示在客户端 但是会被浏览器解析 而charset属性用于定义文档的字符编码 本教程操作环境 windows7系统 HTML5版 De
  • Linux RTC 驱动实验

    目录 Linux 内核RTC 驱动简介 I MX6U 内部RTC 驱动分析 RTC 时间查看与设置 RTC 也就是实时时钟 用于记录当前系统时间 对于Linux 系统而言时间是非常重要的 就和我们使用Windows 电脑或手机查看时间一样
  • SpringMvc-json处理

    SpringMvc json处理 在 JSON 中 使用以下两种方式来表示数据 Object 对象 键 值对 名称 值 的集合 使用花括号 定义 在每个键 值对中 以键开头 后跟一个冒号 最后是值 多个键 值对之间使用逗号 分隔 例如 na
  • CTFShow Web12

    先打开靶机 看到下面的网站 发现啥都点不了 所有按钮都没有实际的动作 根据没啥思路就抓个包 扫描个路径的原则 可以看到有robots txt 访问之 得到关键提示路径 admin 访问之后出现提示框 要求输入账号和密码 账号显然是admin
  • 使用cefsharp在winform中嵌套浏览器,解决程序闪退问题,你也可以做一个红芯浏览器^v^

    使用cefsharp在winform中嵌套浏览器 简单使用cefsharp在winform中嵌套浏览器 在上一节 我们学习了如何简单地在winform中嵌入chromium浏览器 我在使用这个开发项目时 需要点击一个按钮 弹出嵌入浏览器的窗
  • 测试bug 类型及原因分类

    空间管理 测试bug 类型及原因分类 Bug类型 QA设置 代码错误 界面优化 设计缺陷 配置相关 安装部署 安全相关 性能问题 标准规范 测试脚本 其他 bug状态更新备注 DE更新 设计如此 重复bug 外部原因 已解决 无法重现 延期
  • 怎么将英文网页整篇翻译成中文

    作为一个实打实的英语渣渣 这个技能还是需要必备的 英语大神勿笑 当然英语遛的大神是不会知道我们英语渣渣的苦的 话不对说 今天我就跟大家分享一下将一个整篇的英文网页翻译成中文的小技巧 大神跳过 工具 这么牛逼的操作当然要用到Google的Ch
  • Gson实现接口自定义反序列化

    在项目中同样遇到了对json字符串进行反序列化时 遇到了多态情况下 无法找到对应类 所以写这篇文章来mark一下 首先抛出原始代码 再给上解决方案 原始代码 原始json串 type int specs min 1 max 12 unit
  • iOS开发设置状态栏字体颜色

    状态栏的字体为黑色 UIStatusBarStyleDefault 状态栏的字体为白色 UIStatusBarStyleLightContent 一 在info plist中 将View controller based status ba
  • 蓝桥杯C/C++省赛:剪格子

    目录 题目描述 思路分析 AC代码 题目描述 如图p1 jpg所示 3 x 3 的格子中填写了一些整数 我们沿着图中的红色线剪开 得到两个部分 每个部分的数字和都是60 本题的要求就是请你编程判定 对给定的m x n 的格子中的整数 是否可
  • Tensorflow——端到端车牌识别(数据制作、训练、评估、预测)

    利用周末时间断断续续实现端到端车牌识别项目 具备完整的数据集 数据制作 训练 评估 预测业务 项目特点 采用tensorflow中的keras库 训练时数据生成器data generator 对学习keras API有一些参考意义 项目地址