目录
一、车牌识别背景介绍
二、基于CNN的车牌识别
2.1 CNN的特点
2.2 CNN车牌识别模型
2.3 CNN车牌识别过程
三、总结
一、车牌识别背景介绍
随着经济社会的迅猛发展,人们的生活水平的提高,机动车辆的数量也越来越多。为了提高车辆的管理效率,缓解公路上的交通压力,我们必须找到一种解决方案。而作为汽车“身份证”的汽车车牌,是在公众场合能够唯一确定汽车身份的凭证。我们可以以此为依据,设计一种车牌识别系统监控各个车辆的情况。
传统的车牌识别需要先检测出车牌,检测出车牌后通过“像素映射”或者“联通区查找”的方法分割出单个的文字,然后基于模板匹配的方法单独识别每个文字。而一旦车牌上有物体遮挡到了文字的一部分,基于模板匹配的方法则完全不能识别出该数字或文字到底是什么。因此,传统的车牌识别方法不但存在步骤繁琐的弊端,而且对环境和车牌的可视度具有极高的要求。
二、基于CNN的车牌识别
2.1 CNN的特点
由于卷积神经网络(CNN)在图像处理中所表现出的得天独厚的优势,使其在生活、工业和军事等领域都表现出不可替代的作用。有学者归纳出了可以用CNN解决的问题所具备的三个性质:
- 局部性
对于一张图片而言,需要检测图片中的特征来决定图片的类别,通常情况下这些特征都不是由整张图片决定的,而是由一些局部的区域决定的。例如在某张图片中的某个局部检测出了鸟喙,那么基本可以判定图片中有鸟这种动物。
- 相同性
对于不同的图片,它们具有同样的特征,这些特征会出现在图片的不同位置,也就是说可以用同样的检测模式去检测不同图片的相同特征,只不过这些特征处于图片中不同的位置,但是特征检测所做的操作几乎一样。例如在不同的图片中,虽然鸟喙处于不同的位置,但是我们可以用相同的模式去检测。
- 不变性
对于一张图片,如果我们进行下采样,那么图片的性质基本保持不变。
2.2 CNN车牌识别模型
如图1所示,三通道的彩色车牌图像信息分别经过神经网络的卷积层和全连接层前向传播到神经网络的softmax函数输出端。其中神经网络softmax函数输出端共有七个,分别对应所属的省份和省份后的7个字母和数字。
图1 CNN车牌识别模型示意图
使用pytorch生成CNN卷积模型张量的代码如图2所示
图2 pytorch搭建CNN模型代码
2.3 CNN车牌识别过程
首先使用generateCarPlate文件夹中所示的开源代码自动生成训练和测试所用到的车牌,随机生成如图3所示的车牌。
图3 随机生成的车牌示例
在生成CNN模型训练所需要的车牌后就可以对CNN模型进行训练。
训练的过程大体如下:首先从样本集中采集一个批次的车牌并将这个批次的车牌输出给CNN模型,在CNN模型的softmax输出端输出神经网络的识别到的车牌文字。采用监督学习的方法对神经网络的参数进行调整。
其中,CNN模型训练部分的代码如图4所示
图4 CNN模型训练过程代码
在对CNN模型训练规定的次数后对训练好的模型进行测试。
测试的部分结果如下图5所示。图中分别展示了训练好的CNN模型对“京BYG9NQ”, “渝KL0Y5S”和“晋MCZLVJ”车牌的识别结果。其中,对前两个车牌识别完全正确,对后一个车牌的最后一个字母识别错误。造成识别准确率不是100%的一个原因主要是训练数据集不充分和训练时间不够长,但测试的结果也展示出了CNN模型在车牌识别应用中的可行性和较高的准确率。
图5 CNN车牌识别测试部分结果
三、总结
通过上图像处理这门课程我学习到了很多的知识,深切感受到图像识别在各领域都起到了不可替代的作用,小到车牌识别,大到巡航导弹的图像制导。在传统的图像识别中不但需要对图像进行复杂的处理,而且识别的准确度也深受外界因素的干扰。近年来,深度学习在图像识别领域取得了突破性的进展,使得以CNN为代表的图像识别模型得以被广泛应用。虽然CNN是一种端到端的图像识别模型,但在把原始图像传输给CNN输入端的前期通过传统方法对图像做一定的处理也会使图像识别的准确度增大。因此,处理一个问题有时可能需要汲取各种方法的长处才能将问题完美解决。