轻量级车牌识别卷积网络 | ![]() |
经济发展迅速, 汽车保有量的增多, 对现有的交通造成的压力愈加明显, 单纯依靠人力来解决交通压力问题, 消耗人力、物力, 增大政府开销, 因此, 构建一个现代智能交通系统的任务迫在眉睫, 而车牌检测与识别又是智能交通系统中的关键步骤, 其检测质量将直接影响交通系统的实施效率。
车牌识别方式通常分为定位、分割以及识别三个阶段。国内外对此的研究通常有两种类型, 即图像处理传统方式和深度学习神经网络的方式。K.Kanayama等[1]提出了利用行扫描的方式定位车牌, 对于车牌的准确定位效果良好。Barroso等[2]提出基于Niblack二值化算法与边界自适应相融合的方式定位车牌。王晗等[3]提出了一种基于模板概率密度的车牌定位方法, 通过利用候选车牌以及最大相似概率定位车牌, 准确率达96.2%。郑承勇[4]提出了一种RGB颜色空间中的车牌定位方式, 摒弃了常见的宽高比、矩形度等特征, 而用字符的排列和数量作为依据, 进行车牌定位, 其定位成功率达到96%。李文举等[5]以边缘颜色为基础, 提出对彩色图像的边缘进行检测, 主要思想是利用车牌固有颜色以及车牌的背景特点定位车牌, 其定位准确率达98.2%。贺智龙等[6]利用HSV颜色空间对车牌进行定位, 定位的准确度较高, 较好的实现了定位车牌的要求。Li等[7]通过裁剪普通文本中的字符信息, 将其送入CNN模型训练, 利用训练的字符模型实现了车牌定位。刘万军等[8]提出将CNN与彩色图像边缘结合的方式定位车牌, 定位准确率较高。Mi.Ko等[9]提出了基于模板匹配的定位方式, 并对模板赋予权重值, 通过将待识别的字符与预设模板进行相似度比较, 得到字符识别结果。柴伟佳等[10]提出了以多种神经网络为基础混合的车牌字符识别方法, 此模型对车牌污损的识别有较高的准确率。刘军等[11]将Tiny-YOLOv3应用于嵌入式的车牌识别中, 实现了车辆的检测和跟踪, 取得了不错的效果。刘桂雄等[12]提出了一种对车牌特征信息二值化的识别方式, 该系统对自身条件较好的车牌识别率达到了96%。
随着深度学习的不断发展, 近些年车牌定位与识别的方式主要以卷积神经网络[13]为主, 神经网络算法通常分为两类, 即区域推荐和回归目标检测算法。前者以R-CNN[14]、Faster R-CNN[15]、Mask R-CNN[16]为主要代表算法; 后者以YOLO[17], SSD[18]为主要代表算法, 同时YOLO也被称为是最快的目标检测算法, 因此现在的众多研究学者都以此为基础, 改进目标识别算法, 使其更能适应车牌目标检测。
基于此, 提出一种基于CNN车牌识别方法。该方法首先对图像进行预处理, 并通过数学形态学的方式对车牌进行初步定位, 然后将候选车牌送入CNN模型进行精确定位车牌, 并对单独的车牌图像进行投影, 分割字符; 最后通过搭建CNN网络进行字符识别。流程图如图 1所示:
![]() |
图 1 车牌识别流程图 |
1 卷积神经网络 1.1 概述
卷积神经网络是一种深度神经网络, 被广泛应用于计算机视觉与图像分析处理, 其实现原理为, 利用反向传播的方式, 得到网络的训练权重, 在训练过程中对特征实现自动提取, 不需要人工干预。经过多次卷积操作, 得到图像在不同尺度上的抽象特征表示。与传统神经网络相比, 具有“局部感知”和“参数共享”的显著优势, 因此, 卷积神经网络在训练过程中估计的参数少, 训练过程较其他网络更容易。
1.2 网络各层介绍CNN的一个基本结构包括卷积层、池化层和全连接层等结构。如图 2所示:
![]() |
图 2 神经网络示意图 |
1) 卷积层
卷积层的主要构成单位是卷积核, 用来实现对图像特征的提取。因此, 卷积核的实质是特征提取器, 通过卷积操作对输入图像的深层信息抽离为图像特征。每个卷积核相当于一个滤波器, 对展开的特征平面进行特征提取, 后一层提取了前一层的局部特征, 如颜色、纹理等特征, 并且重新生成新的平面, 每个卷积核会自适应学习到不同的权值。卷积公式为:
$ y_{j}^{l}=f\left(\sum\limits_{i=1}^{n}\left(x_{i}^{l-1} \times w_{i j}^{l}\right)+b_{j}^{l}\right) $ | (1) |
其中, yjl为第l层卷积与第j个神经元连接得到的输出特征图, xjl-1为l-1层的输出结果, 即为l层的输入信号, wijl为l层与神经元之间的权值, bjl为l层神经元的偏置值, f表示卷积层所用的激活函数, 激活函数的种类有多种, 如Sigmoid函数, ReLU函数, 以及Leaky ReLU函数等。本质上ReLU函数是一个最大值函数, 相较与Sigmiod而言, 此函数收敛速度快, 计算量小, 但是该函数在输入值为零的情况下, 输出为零, 神经元无法进行学习, 式(2)为ReLU函数。
$ f(x)=\max (0, x) $ | (2) |
式中, 当x>0, 输出线性增长; 当x < 0, 输出结果恒为零。
因此, 本文所用的激励函数为Leaky ReLU函数, Leaky ReLU函数是ReLU函数的变体, Leaky ReLU函数不仅集合了ReLU函数的特点, 并且在输入信号为非大于零的状态, 其输出信号不为零, 解决了ReLU函数进入负区间后, 导致神经元不学习的问题。其表达式如下:
$ f(x)=\left\{\begin{array}{ll} x & \text { if } x>0 \\ 0.01 x & \text { otherwise } \end{array}\right. $ | (3) |
式中, 当x>0, 输出与ReLU相同; 当x < 0, 输出结果不为零。
2) 池化层
池化层通常在卷积层之后, 池化层的增加可以降低特征维度, 避免因卷积次数过多而造成维度过大, 增加计算负担, 并且可以保持图像的特性不变, 如旋转、平移等。池化方式一般为均值和最大值池化两种, 均值池化可以保留更多的背景图像, 而最大值池化能保留更多的图像纹理信息。
最大池化以获取区域最大值的方式来降低卷积形成特征的维度, 具体操作为按照卷积核的大小将输入的图像划分为不同的区域, 将每个区域的最大值作为输出。以图 3为例, 输入数据为4*4, 卷积核为2, 步长为2, 无填充的方式进行最大池化。
![]() |
图 3 最大池化过程 |
为了能更多的保留车牌和字符的纹理信息, 本文采用的池化方法为最大池化。
3) 全连接层
全连接层在卷积和池化之后, 通常在网络的最后连接着一个或多个全连接层, 将当前层与前层网络的所有结点全部连接, 得到图像的全局特征, 并用于最后的分类。
2 车牌定位方法车牌定位作为车牌识别的首要步骤, 其定位质量的好坏直接影响后续车牌识别的准确度, 所以本文所提出的方法是, 基于颜色特征与神经网络两种方式结合来准确定位车牌位置。
2.1 车牌粗定位首先对图像进行图像预处理操作, 图像预处理的步骤为直方图均衡化、滤波和检测边缘等操作。
直方图均衡化又叫灰度变换, 是一种常见的图像变换方法, 其实质是通过统计图像像素值, 计算像素值占比灰度等级的概率以及每个灰度等级的累计概率, 对累计概率进行灰度等级映射, 得到图像均衡化的结果。公式如下:
$ T(r)=L \int_{1}^{r} p(t) d t $ | (4) |
$ T(r)=\sum\limits_{i=0}^{r-1} \frac{n_{i}}{n} $ | (5) |
其中, r为原始图像的像素值, T为映射后的像素值, L为灰度等级, p(t)为像素的概率分布, n为像素点之和, ni为像素值为i所对应的像素个数, (4)和(5)分别为连续和离散情况。
均值滤波能够过滤图片的高频信号, 保留低频信号, 因此能够消除图片的噪声, 实现图片平滑。均值滤波公式为:
$ f(x, y)=\frac{1}{m n} \sum\limits_{(x, y) \in S_{x y}} g(s, t) $ | (6) |
其中, f(x, y)为滤波后的图像, g(s, t)为原始图像, mn为滤波器的大小(m, n)。
边缘检测能够检测图像的边缘, 不仅减少了图像数据量, 而且保留了图片的关键信息。本文使用的是Sobel算子, 边缘检测效率高, 能够突出车牌的潜在位置。
然后, 将原始图像的颜色空间由RGB转换为HSV, 根据车牌的颜色设定H、S、V的阈值, 最后与经过边缘处理的图像做运算, 得到突出车牌位置边缘的图像。形态学处理作为图像预处理的最后一步, 通过多次的开、闭运算, 得到车牌的二值图像, 为下一步定位车牌做准备。通过车牌先验知识(大小、长宽比例), 判断是否为车牌区域, 并且对获得的车牌区域进行倾斜矫正。颜色转换公式如下:
$ V=\max $ | (7) |
$ S=\left\{\begin{array}{l} 0, \max =0 \\ \frac{\Delta}{\max }, \max \neq 0 \end{array}\right. $ | (8) |
$ H=\left\{\begin{array}{ll} 0, & \max =\min \\ \frac{\pi}{3} \times \frac{g-b}{\Delta}+0, & \max =\mathrm{r} \text { and } \mathrm{g} \geqslant \mathrm{b} \\ \frac{\pi}{3} \times \frac{g-b}{\Delta}+2 \pi, & \max =\mathrm{r} \text { and } \mathrm{g}<\mathrm{b} \\ \frac{\pi}{3} \times \frac{b-r}{\Delta}+\frac{2 \pi}{3}, & \max =\mathrm{g} \\ \frac{\pi}{3} \times \frac{r-g}{\Delta}+\frac{4 \pi}{3}, & \max =\mathrm{b} \end{array}\right. $ | (9) |
其中, r, g, b表示RGB的各个分量值, max, min为R、G、B三分量中的最大、最小值, △为max与min的差值。
最后将候选车牌的大小调整为指定大小, 便于后续CNN精确定位并提取车牌。车牌粗定位过程, 如图 4所示。
![]() |
图 4 车牌粗定位流程 |
2.2 PR-CNN网络架构
通过对车牌图像进行分析, 搭建CNN车牌精确定位网络(PR-CNN), PR-CNN网络结构如表 1所示。
表 1 PR-CNN网络结构 |
![]() |
本网络使用三个卷积和池化的网络, 卷积核大小均为3×3, 池化层采用2×2的大小, 随着网络的加深, 卷积的特征数增多, 通过对36×136×3大小的图片进行多次卷积特征提取, 最后利用全连接层将特征子集连接, 降低特征维度, 输出识别结果。实验中经过多次尝试, 将学习率大小设置为0.001, 并且采用dropout方法对神经元进行随机丢弃, 改善了训练过程中出现的过拟合, 并提高了训练的效果。
3 车牌识别方法 3.1 字符分割在进行车牌字符识别之前, 需要对定位提取的车牌进行单个字符分割, 本文采用的分割方式为垂直投影法。基本过程如下:
1) 首先, 获取车牌的二值图像, 降低存储空间和图像噪声, 对图像进行Y轴垂直投影, 得到图像的像素值;
2) 然后, 通过扫描整张投影图像, 判断像素值的大小和连续性, 对车牌的无关边框进行裁剪, 得到仅有车牌字符的图像, 通过设定阈值, 判断字符大小, 将符合条件的字符进行切割, 从而得到字符切割结果, 用于最后的字符识别。
3) 最后, 对分割后的单个字符做尺寸归一化处理, 便于后续的CNN准确识别字符, 完整流程图如图 5所示。
![]() |
图 5 字符分割过程 |
3.2 RC-CNN网络架构
由于待识别的字符种类较多, 受到LeNet-5网络的启发, 搭建了字符识别网络(RC-CNN), 此网络通过增加卷积层的数量, 得到更高维度的特征图; 增加全连接层的节点数, 提高特征映射数量。网络结构如表 2所示。
表 2 RC-CNN网络结构 |
![]() |
将单个字符输入RC-CNN网络进行识别, 得到识别结果, 完整的车牌识别过程如图 6所示:
![]() |
图 6 车牌识别流程图 |
4 实验论证 4.1 实验数据及平台配置
车辆车牌的数据集来源于网络收集以及手持相机拍摄的图片, 将数据按照1:4划分为测试集和训练集, 将训练数据喂入搭建好的网络进行训练, 在测试集上对训练好的模型进行验证。
本次实验所使用的配置为Intel(R)Core(TM)i5-7300HQ CPU @ 2.50GHz处理器, 20GB内存, 1T硬盘容量, 4GB GTX 1050 GPU显卡, 操作系统为ubuntu18.04。为了加速训练过程, 配置NVIDIA CUDA和CUDNN环境, 利用GPU加速训练。
4.2 数据集设定通过对PR-CNN和RC-CNN进行单独训练, 使其能够识别提取的区域是否为车牌以及分割后的单个字符, 图 7为训练集的部分图像。
![]() |
图 7 部分数据集 |
4.3 部分识别结果
图 8给出了检测和识别车牌图像的实例。该模型对车牌的数字和字符进行有针对性的训练, 提高了识别精度。
![]() |
图 8 部分识别结果 |
5 结论
提出了CNN神经网络车牌检测和识别方法。通过构建两个不同的CNN网络, 分别实现车牌的检测和识别任务。对于车牌检测, 先利用阈值分割的方式粗定位车牌, 再通过CNN网络精确定位并提取车牌; 对于车牌识别, 将单个字符通过CNN网络训练, 对输入的分割字符进行识别, 得到了较好的识别效果。实验结果表明, 该方法对于实际场景中的车牌识别准确率较高, 验证了算法的有效性和准确性。
[1] |
K.KANAYAMA, Y.FUJIKAWA.Development of vehicle-license number recognition system using real-time image processing and its application to travel-time measurement[C].New York: IEEE Vehicular Technology Conference, 1991: 798-804.
|
[2] |
BARROSO J., BULAS-CLUZ J., DAGLESS E L. Real-time number plate reading[J]. 4th IFAC Workshop on Algorithms and Architectures for Real-Time Control, 1997, 30(3): 73-76. |
[3] |
王晗, 施佺, 许致火, 等. 基于模板概率密度函数的车牌定位方法[J]. 控制工程, 2019, 26(05): 947-951. |
[4] |
郑成勇. 一种RGB颜色空间中的车牌定位新方法[J]. 中国图象图形报, 2010, 15(11): 1623-1628. |
[5] |
李文举, 梁德群, 张旗, 等. 基于边缘颜色对的车牌定位新方法[J]. 计算机报, 2004(02): 204-208. |
[6] |
贺智龙, 肖中俊, 严志国. 基于HSV与边缘信息的车牌定位与字符分割方法[J]. 齐鲁工业大学学报, 2019, 33(03): 44-48. |
[7] |
LI H, SHEN C. Reading car license plates using deep convolutional neural networks and LSTMs[J]. arXiv preprint, 2016(01): 14-23. |
[8] |
刘万军, 姜庆玲, 张闯. 基于CNN彩色图像边缘检测的车牌定位方法[J]. 自动化学报, 2009, 35(12): 1503-1512. |
[9] |
M.KO, Y.KIM.License plate surveillance system using weighted template matching[C].Washington: 32nd Applied Imagery Pattern Recognition Workshop, 2003: 269-274.
|
[10] |
柴伟佳, 王连明. 一种基于混合神经网络的车牌字符识别方法[J]. 东北师大学报(自然科学版), 2018, 50(01): 63-67. |
[11] |
刘军, 后士浩, 张凯, 等. 基于增强Tiny-YOLOv3算法的车辆实时检测与跟踪[J]. 农业工程学报, 2019, 35(08): 118-125. |
[12] |
刘桂雄, 申柏华, 冯云庆. 基于笔划趋势分析的二值图像细化方法[J]. 光学精密工程, 2003, 11(5): 527-530. |
[13] |
KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[J]. Advances in Neural Information Processing Systems, 2012, 25(2): 1097-1105. |
[14] |
GIR5HICK R, DONAHUE J, DARRELL T, et al.Rich feature hierarchies for accurate object detection and semantic segmentation[C].Columbus: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2014: 580-587.
|
[15] |
REN S, HE K, GIRSHICK R, et al.Faster R-CNN: Towards real-time object detection with region proposal networks[C].Congress Convention Center in Montreal: Advances in Neural Information Processing Systems, 2015: 91-99.
|
[16] |
Kaiming H, Georgia G, Piotr D, et al.Mask R-CNN[C].Venice: IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017: 2961-2969.
|
[17] |
REDMON J, DIWALA S, GIRSHICK R, et al.You only look once: Unified, real-time object, detection[C].Las Vegas: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016: 779-788.
|
[18] |
LIU W, ANGUELOV D, ERHAN D, et al.SSD: Single shot multibox detector[C].Springer: European Conferaice on Computer Vision, 2016: 21-37.
|