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的Flask框架中构建Web表单的教程
Jun 04 Python
python fabric实现远程部署
Jan 05 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
Django添加sitemap的方法示例
Aug 06 Python
Python 获取项目根路径的代码
Sep 27 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 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具体实现代码
2010/10/12 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python 快速排序代码
2009/11/23 Python
在Python中定义和使用抽象类的方法
2016/06/30 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
python ansible服务及剧本编写
2017/12/29 Python
python命令 -u参数用法解析
2019/10/24 Python
Python读取实时数据流示例
2019/12/02 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
迎接领导欢迎词
2014/01/11 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
个人年终总结开头
2015/03/06 职场文书
mysql的Buffer Pool存储及原理
2022/04/02 MySQL