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开发常用的一些开源Package分享
Feb 14 Python
Python中的choice()方法使用详解
May 15 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
Python列表推导式与生成器表达式用法示例
Feb 08 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
基于python检查矩阵计算结果
May 21 Python
Python的信号库Blinker用法详解
Dec 31 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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入门学习的几个不错的实例代码
2008/07/13 PHP
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
详解python运行三种方式
2019/05/13 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
会计与审计毕业生自荐信范文
2013/12/30 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python