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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

现在我们通过如下代码,将这几张字符图片输入到上一篇博文《如何用TensorFlow训练和识别/分类自定义图片》中构建的网络:
  

        license_num=[]   n的范围(8):   路径="结果/% s。bmp“% (n)   img=Image.open(路径)   宽度=img.size [0]   身高=img.size [1]      img_data=https://www.yisu.com/zixun/[[0] * 784我的范围(1)]   对h范围(0,高度):   w的范围(0,宽度):   如果img。获取像素((w h)) <190:   img_data [0] [w + h *宽度)=0   其他:   img_data [0] [w + h *宽度]=1      #获取softmax结果前三位的索引和概率值   soft_max=tf.nn.softmax (tf。matmul (h_fc1_drop W_fc2) + b_fc2)   结果=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   j的范围(10):   如果结果[0][j]> max1:   max1结果[0]=[j]   max1_index j=继续   如果结果[0][j]> max2)和结果([0][j] <=max1):   max2结果[0]=[j]   max2_index j=继续   如果结果[0][j]> max3)和结果([0][j] <=max2):   max3结果[0]=[j]   max3_index j=继续   license_num.append (max1_index)      打印(“softmax结果前三位概率:% s: %。2 f % % % s: %。2 f % % % s: % .2f % %”   % (max1_index max1 * 100、max2_index max2 * 100, max3_index, max3 * 100))   打印(“车牌号为:% s“% license_num)      

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

  

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

  

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

  

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

  

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

  

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

  

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

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