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


Posted in Python onAugust 05, 2019

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

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

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

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

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

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

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

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

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

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

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

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

现在我们通过如下代码,将这几张字符图片输入到上一篇博文《如何用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)

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

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

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

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

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

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

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

Python 相关文章推荐
python使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
浅析Python中的多重继承
Apr 28 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
基于python读取.mat文件并取出信息
Dec 16 Python
使用Pytorch来拟合函数方式
Jan 14 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 #Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 #Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 #Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 #Python
Django ORM 查询管理器源码解析
Aug 05 #Python
python实现车牌识别的示例代码
Aug 05 #Python
使用python实现滑动验证码功能
Aug 05 #Python
You might like
php 获取完整url地址
2008/12/20 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
mac下安装nginx和php
2013/11/04 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
Python实现代码统计工具(终极篇)
2016/07/04 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python os.access()用法实例
2019/02/18 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
护士实习自我鉴定
2013/10/22 职场文书
董事长秘书职责
2014/01/31 职场文书
团日活动总结范文
2014/04/25 职场文书
车辆委托书范本
2014/10/05 职场文书
运动会通讯稿50字
2015/07/20 职场文书
我爱我班主题班会
2015/08/13 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
Python下opencv库的安装过程及问题汇总
2021/06/11 Python