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标准日志模块logging的使用方法
Nov 01 Python
python通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
windows 下python+numpy安装实用教程
Dec 23 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
pandas.read_csv参数详解(小结)
Jun 21 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
如何理解Python中的变量
Jun 01 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
yii操作session实例简介
2014/07/31 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
Python实现telnet服务器的方法
2015/07/10 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
店长岗位职责
2013/11/21 职场文书
马云的职业生涯规划之路
2014/01/01 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
Python中使用ipython的详细教程
2021/06/22 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis