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 相关文章推荐
python3实现短网址和数字相互转换的方法
Apr 28 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
flask中过滤器的使用详解
Aug 01 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Python读取表格类型文件代码实例
Feb 17 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
Python闭包装饰器使用方法汇总
Jun 29 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
用PHP实现的随机广告显示代码
2007/06/14 PHP
PHP简洁函数小结
2011/08/12 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
2014过年倒计时示例
2014/01/31 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
js仿360开机效果
2019/12/26 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
大学生简历的个人自我评价
2013/12/04 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL
如何利用python实现列表嵌套字典取值
2022/06/10 Python