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中asyncore的用法实例
Sep 29 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python使用正则表达式抓取网页图片的方法示例
Apr 21 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
深入理解Python中的*重复运算符
Oct 28 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
python字典的遍历3种方法详解
Aug 10 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
用python实现一个简单的验证码
Dec 09 Python
python爬虫--selenium模块
Mar 31 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 网上商城促销设计实例代码
2012/02/17 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
什么是JavaScript
2009/08/13 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
python语言中with as的用法使用详解
2018/02/23 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
应聘教师自荐信
2013/10/12 职场文书
毕业实习评语
2014/02/10 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
给老婆的保证书范文
2014/04/28 职场文书
大学新闻系自荐书
2014/05/31 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
处理canvas绘制图片模糊问题
2022/05/11 Javascript