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 pdb调试方法分享
Jan 21 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
python3爬虫之设计签名小程序
Jun 19 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 Python
python异步Web框架sanic的实现
Apr 27 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
python爬虫工具例举说明
Nov 30 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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
如何过滤高亮显示非法字符
2006/10/09 PHP
COM in PHP (winows only)
2006/10/09 PHP
php基础知识:控制结构
2006/12/13 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
Maps Javascript
2007/01/22 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
js html实现计算器功能
2018/11/13 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
python输入多行字符串的方法总结
2019/07/02 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
主管职责范文
2013/11/09 职场文书
电气自动化求职信
2014/06/24 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
话题作文之财富(600字)
2019/12/03 职场文书