在前几天写的一篇博文《如何从TensorFlow的mnist数据集导出手写体数字图片》中,我们介绍了如何通过TensorFlow将mnist手写体数字集导出到本地保存为bmp文件。

车牌识别在当今社会中广泛存在,其应用场景包括各类交通监控和停车场出入口收费系统,在自动驾驶中也得到一定应用,其原理也不难理解,故很适合作为图像处理+机器学习的入门案例。

现在我们不妨酝酿一个大胆的想法:在TensorFlow中通过卷积神经网络+mnist数字集实现车牌识别。

实际上车牌字符除了数字0-9,还有字母A-Z,以及各省份的简称。只包含数字0-9的mnist是不足以识别车牌的。故本文所做实验仅出于演示目的。

由于车牌数字是正体,而mnist是手写体,为提高识别率,需要从mnist图片集中挑选出形状比较规则工整的图片作为训练图片,否则识别率不高。作为参考,下图是我挑选出来的一部分较工整数字:

(如果你需要我挑选出来的图片,可以评论或私信我留下邮箱)

出于演示目的,我们从网上找到下面这张图片:

现在我们假设该车牌号为闽0-16720(实际上是闽O-1672Q),暂不识别省份简称,只识别0-16720。

上图经过opencv定位分割处理后,得到以下几张车牌字符。

现在我们通过如下代码,将这几张字符图片输入到上一篇博文《如何用TensorFlow训练和识别/分类自定义图片》中构建的网络:

license_num = []

for n in range(2,8):

path = "result/%s.bmp" % (n)

img = Image.open(path)

width = img.size[0]

height = img.size[1]

img_data = [[0]*784 for i in range(1)]

for h in range(0, height):

for w in range(0, width):

if img.getpixel((w, h)) < 190:

img_data[0][w+h*width] = 0

else:

img_data[0][w+h*width] = 1

# 获取softmax结果前三位的index和概率值

soft_max = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)

result = sess.run(soft_max, feed_dict = {x: np.array(img_data), keep_prob: 1.0})

max1 = 0

max2 = 0

max3 = 0

max1_index = 0

max2_index = 0

max3_index = 0

for j in range(10):

if result[0][j] > max1:

max1 = result[0][j]

max1_index = j

continue

if (result[0][j]>max2) and (result[0][j]<=max1):

max2 = result[0][j]

max2_index = j

continue

if (result[0][j]>max3) and (result[0][j]<=max2):

max3 = result[0][j]

max3_index = j

continue

license_num.append(max1_index)

print ("softmax结果前三位概率:%s: %.2f%% %s: %.2f%% %s: %.2f%%"

% (max1_index,max1*100, max2_index,max2*100, max3_index,max3*100))

print ("车牌号为: %s" % license_num)

然后运行程序,结果如下:

可以看出,分类结果为016720,是正确的,而softmax计算结果可信度也是可以接受的。

后续将给出包含省份简称和字母A-Z的完整例子。

最后附上本文程序的完整代码(运行之前需要确保你的数据集和待识别图片的位深度都是8,也就是一个像素的颜色值用一个字节(8bits)表示,不然会出错):

PS:支持省份简称和字母的车牌识别程序详见《TensorFlow车牌识别完整版(含车牌数据集)》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: TensorFlow基于MNIST数据集实现车牌识别(初步演示版)

本文地址: http://www.cppcns.com/jiaoben/python/267482.html

python车牌识别使用训练集_TensorFlow基于MNIST数据集实现车牌识别(初步演示版)相关推荐

  1. python车牌识别使用训练集_基于Python 实现的车牌识别项目

    车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到. 简介 车牌识别系统 ...

  2. Fate集群 | 基于MNIST数据集的模型训练+模型预测 详细过程

    文章目录 一.获取数据集并简单处理 1.分割数据集 2.拷贝数据集 二.模型训练 1.上传数据 1)host方 2)guest方 2.构建模型 3.修改配置文件 1)DSL简介 2)DSL配置文件 3 ...

  3. 基于MNIST数据集实现车牌识别--初步演示版

    在前几天写的一篇博文<如何从TensorFlow的mnist数据集导出手写体数字图片>中,我们介绍了如何通过TensorFlow将mnist手写体数字集导出到本地保存为bmp文件. 车牌识 ...

  4. 数字识别手写神经网络实现基于MNIST数据集

    MNIST数据集自行baidu下载,解压后放到项目文件里 git详细代码仓库:https://github.com/justDoForever/deep_learning/digital_recogn ...

  5. pytorch训练GAN的代码(基于MNIST数据集)

    论文:Generative Adversarial Networks 作者:Ian J. Goodfellow 年份:2014年 从2020年3月多开始看网络,这是我第一篇看并且可以跑通代码的论文,简 ...

  6. 基于 SoC 的卷积神经网络车牌识别系统设计(2-1)基于 Arm Cortex-M3 SoC 车牌识别系统的搭建

    基于 SoC 的卷积神经网络车牌识别系统设计(2-1)基于 Arm Cortex-M3 SoC 车牌识别系统的搭建 版权所有, ⌊ 新芯设计 ⌉ \lfloor新芯设计\rceil ⌊新芯设计⌉,转载 ...

  7. Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集)

    Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集) 目录 Pytorch实现戴口罩人脸检测和戴口罩识别(含训练代码 戴口罩人脸数据集) 1.戴口罩识别的方法 (1)基于多类别 ...

  8. 车牌检测模型训练(含源码和数据集)

    车牌检测模型训练(含源码和数据集) 本教程利用NVIDIA TAO进行车牌检测模型的训练: 模型框架:SSD 数据集: CRPD, 连接:https://github.com/yxgong0/CRPD ...

  9. 神经网络--基于mnist数据集取得最高的识别准确率

    前言: Hello大家好,我是Dream. 今天来学习一下如何基于mnist数据集取得最高的识别准确率,本文是从零开始的,如有需要可自行跳至所需内容~ 本文目录: 1.调用库函数 2.调用数据集 3. ...

  10. DL之CNN可视化:利用SimpleConvNet算法【3层,im2col优化】基于mnist数据集训练并对卷积层输出进行可视化

    DL之CNN可视化:利用SimpleConvNet算法[3层,im2col优化]基于mnist数据集训练并对卷积层输出进行可视化 导读 利用SimpleConvNet算法基于mnist数据集训练并对卷 ...

最新文章

  1. java 嵌套类 继承_Java嵌套类 - 爱吃苹果的搬运工的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. Docker 常见问题 (FAQ)-2015
  3. 在Linux下编写运行你的第一条代码——Hello Linux
  4. 深度学习领域专业词汇_深度学习时代的人文领域专业知识
  5. NET问答: 如何使用 C# 直接从 JSON String 中提取特定值 ?
  6. 汉诺塔问题(信息学奥赛一本通-T1205)
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的心理咨询预约系统
  8. shell_study
  9. 超实用:小团队如何从零搭建一个自动化运维体系?
  10. matlab 不确定度计算器,A类贝塞尔不确定度计算器
  11. CAD 使用 颜色 线型
  12. 软件测试用例设计规范
  13. URL和URI的详细区分(带实例)
  14. JAVA GUI创作简易记牌器
  15. 关于南通大学教务学生管理公众微信的用户体验。
  16. 在浏览器端浏览EPUB
  17. C++:求整数num中包含因子k的个数
  18. kubectl命令行管理工具
  19. OCI : ORA-24333: zero iteration count
  20. 为什么我的MATLAB激活成功后打开还是激活界面!

热门文章

  1. CPC客户端的安装方法
  2. 性能报告之路由器性能benchmark评估
  3. SVN 分支合并到主干
  4. 新坑:基于AD9361的手持监测侦察接收机
  5. VS2013产品密钥
  6. MATLAB-输入输出语句
  7. EndNote X8使用总结
  8. 使用Arduino IDE环境学习ESP32--CAM
  9. sublime编辑器 3143 license
  10. C/C++语言函数之strlen函数用法