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如何调用C/C++底层库与互相传值
Aug 10 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
对Python函数设计规范详解
Jul 19 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
深入理解python协程
Jun 15 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
解决CodeIgniter伪静态失效
2014/06/09 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python字符串格式化
2015/06/15 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
python将数组n等分的实例
2019/12/02 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
医学生临床实习自我评价
2014/03/07 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
导游词之张家口
2019/12/13 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
php解析非标准json、非规范json的方式实例
2022/05/10 PHP