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使用心得之获得github代码库列表
Jun 25 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
pandas表连接 索引上的合并方法
Jun 08 Python
基于python log取对数详解
Jun 08 Python
python爬取个性签名的方法
Jun 17 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
python不同系统中打开方法
Jun 23 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
Less 安装及基本用法
2018/05/05 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
JavaScript switch语句使用方法简介
2019/12/30 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python虚拟环境迁移方法
2019/01/03 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Django框架视图函数设计示例
2019/07/29 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
社区工作者思想汇报
2014/01/13 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
教师求职信范文
2014/05/24 职场文书
土木工程求职信
2014/05/29 职场文书
应届毕业生自荐书
2014/06/18 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
2014年工程部工作总结
2014/11/25 职场文书
运动员加油词
2015/07/18 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android