TensorFlow基于MNIST数据集实现车牌识别(初步演示版)

 更新时间:2019年08月05日 11:21:42   作者:ShadowN1ght  
这篇文章主要介绍了TensorFlow基于MNIST数据集实现车牌识别(初步演示版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在前几天写的一篇博文《如何从TensorFlow的mnist数据集导出手写体数字图片》中,我们介绍了如何通过TensorFlow将mnist手写体数字集导出到本地保存为bmp文件。

车牌识别在当今社会中广泛存在,其应用场景包括各类交通监控和停车场出入口收费系统,在自动驾驶中也得到一定应用,其原理也不难理解,故很适合作为图像处理+机器学习的入门案例。

现在我们不妨酝酿一个大胆的想法:在TensorFlow中通过卷积神经网络+mnist数字集实现车牌识别。

实际上车牌字符除了数字0-9,还有字母A-Z,以及各省份的简称。只包含数字0-9的mnist是不足以识别车牌的。故本文所做实验仅出于演示目的。

由于车牌数字是正体,而mnist是手写体,为提高识别率,需要从mnist图片集中挑选出形状比较规则工整的图片作为训练图片,否则识别率不高。作为参考,下图是我挑选出来的一部分较工整数字:


(如果你需要我挑选出来的图片,可以评论或私信我留下邮箱)

出于演示目的,我们从网上找到下面这张图片:

现在我们假设该车牌号为闽0-16720(实际上是闽O-1672Q),暂不识别省份简称,只识别0-16720。

上图经过opencv定位分割处理后,得到以下几张车牌字符。

现在我们通过如下代码,将这几张字符图片输入到上一篇博文《如何用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)

然后运行程序,结果如下:

可以看出,分类结果为016720,是正确的,而softmax计算结果可信度也是可以接受的。

后续将给出包含省份简称和字母A-Z的完整例子。

最后附上本文程序的完整代码(运行之前需要确保你的数据集和待识别图片的位深度都是8,也就是一个像素的颜色值用一个字节(8bits)表示,不然会出错):

PS:支持省份简称和字母的车牌识别程序详见《TensorFlow车牌识别完整版(含车牌数据集)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python进程间通信Queue消息队列用法分析

    Python进程间通信Queue消息队列用法分析

    这篇文章主要介绍了Python进程间通信Queue消息队列用法,结合实例形式分析了基于Queue的进程间通信相关操作技巧与使用注意事项,需要的朋友可以参考下
    2019-05-05
  • 用Python的Django框架编写从Google Adsense中获得报表的应用

    用Python的Django框架编写从Google Adsense中获得报表的应用

    这篇文章主要介绍了用Python的Django框架编写从Google Adsense中获得报表的应用,主要利用了官方的Google Adsense API,需要的朋友可以参考下
    2015-04-04
  • 详解Python中string模块除去Str还剩下什么

    详解Python中string模块除去Str还剩下什么

    这篇文章主要介绍了详解Python中string模块除去Str还剩下什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 将tf.batch_matmul替换成tf.matmul的实现

    将tf.batch_matmul替换成tf.matmul的实现

    这篇文章主要介绍了将tf.batch_matmul替换成tf.matmul的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python连接手机自动搜集蚂蚁森林能量的实现代码

    python连接手机自动搜集蚂蚁森林能量的实现代码

    这篇文章主要介绍了python连接手机自动搜集蚂蚁森林能量的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python实现爬虫下载漫画示例

    python实现爬虫下载漫画示例

    本文主要介绍了python实现爬虫下载漫画的示例,对游侠网的漫画资源进行解析,下载其全部章节漫画
    2014-02-02
  • Python 爬取网页图片详解流程

    Python 爬取网页图片详解流程

    没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来。今天网上冲浪看到很多美图,可是图片有点多,不想一张一张地复制粘贴,怎么办呢?办法总是有的,即便没有我们也可以创造一个办法
    2021-11-11
  • Python 做曲线拟合和求积分的方法

    Python 做曲线拟合和求积分的方法

    今天小编就为大家分享一篇Python 做曲线拟合和求积分的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python基于tkinter制作m3u8视频下载工具

    python基于tkinter制作m3u8视频下载工具

    这篇文章主要介绍了python如何基于tkinter制作m3u8视频下载工具,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • 分享10个拿来即用的Python自动化脚本

    分享10个拿来即用的Python自动化脚本

    这篇文章主要来和大家分享10个拿来即用的Python自动化脚本,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12

最新评论