基于深度学习的复杂场景下车牌识别算法研究

2023-04-19 06:37杨金鑫颜湘炎王子宁
智能计算机与应用 2023年3期
关键词:字符识别车牌字符

杨金鑫, 颜湘炎, 王子宁

(江苏大学 汽车与交通工程学院, 江苏 镇江 212013)

0 引 言

研究可知,现代智能交通系统对于解决城市交通管理问题至关重要。 其中,车牌识别作为该领域研究的基本组成部分,通常包括车牌图像预处理、车牌定位、字符分割和字符识别四个部分[1]。

近些年,国内外学者对车牌识别技术进行了大量的研究。 TomLink 等学者为了降低光照对车牌识别的影响,先将工业设备获取的原始RGB 图像转化成HSV 的3 个分量值,再利用逻辑乘运算和纹理特征获得车牌区域并去除伪车牌区域,定位成功率达到97.58%[2]。 Li 等学者[3]提出利用前馈神经网络(Back Propagation,BP)结合CNN 的识别方法,对车牌中相似的字符使用CNN 识别,其余字符则采用BP 识别,准确率达到97.49%。 曾泉等学者[4]提出的车牌识别系统以支持向量机(Support Vector Machine,SVM)和BP 为基础,选取了不同环境下的车牌图片进行识别,该系统的识别算法精度高、速度快,对复杂环境适用性强。 虽然这些方法在自然场景下取得了不错的效果,但是在包含各种噪声干扰的复杂环境下,识别精度和鲁棒性仍不理想。

为提高算法在复杂场景下车牌扭曲变形、字符模糊不清的字符识别率,本文在如下方面开展研究。首先,对原始车牌图像完成一系列的预处理操作;紧接着,使用基于Python 语言的HOG+SVM 对目标车牌进行检测与定位,利用二分类算法排除干扰区域;然后,利用Radon 变换算法对车牌进行倾斜矫正,并基于水平和垂直投影完成车牌字符分割;最后,以深度学习为基础,设计基于卷积神经网络的车牌字符识别模块,经过大量数据训练后,得到更有效的字符特征信息,完成识别并输出结果。 系统框图如图1所示。

图1 车牌识别系统框图Fig. 1 Block diagram of license plate recognition system

1 车牌定位与检测

1.1 车牌图像预处理

受自然环境、拍摄角度和噪声干扰等客观因素的影响,获取的车牌图像常常无法达到识别要求,需要进行预处理,以提高图像品质,保证信息获取准确度。

1.1.1 图像灰度化

通常,工业相机拍摄后获得的车牌图像类型是RGB 图像,其颜色特征丰富,存储信息占用内存大,运算速度慢。 为降低数据处理量,本文采用加权平均值算法做灰度化处理[5]。 计算公式可写为:

其中,坐标(x,y) 表示像素点位置;Gray(x,y)表示灰度处理值;R(x,y),G(x,y),B(x,y) 为灰度分量值。

1.1.2 滤波去噪

真实环境下捕获的车牌图像一般为携带噪声的彩色图像,干扰噪声的存在使图像的质量下降,使得车牌识别算法对车牌信息产生误识别。 为了能够去除噪声并提取图像的有效信息,选择采用均值滤波、即邻域平均法。 可用如下公式进行描述:

其中,f(i,j) 表示携带噪声的车牌图像;g(i,j) 表示均值滤波处理后的图像;M是邻域内各邻近像素的坐标集;N是邻域内包含的邻近像素的个数[6]。

1.1.3 边缘检测

本文选用主流图像边缘检测Sobel 算子提取图像重要特征,即利用边界点对车牌图像的水平和垂直两个方向进行扫描检测,得到特征图并确定车牌的上下边界。 且Sobel 算法中还有平均运算,对车牌图像进一步做平滑去噪。 Sobel 算子水平Gx和垂直Gy矩阵模板可表示为:

1.1.4 颜色空间变换

将车牌图像的RGB 颜色空间变换为更接近人类感知颜色方式的HSV 颜色空间[7],与步骤1.1.3中Sobel 算子处理后的图像相乘,突出车牌区域。

1.1.5 图像二值化

本文选用最大类间方差法(OTSU)对车牌灰度化图像进行二值化处理。 通过统计灰度值获取最佳阈值T,当车牌图像的像素灰度值大于最佳阈值T时,像素灰度值设为255,即黑色;小于T时,像素灰度值设为0,即白色,车牌图像被分成目标和背景两部分。 研究推得的数学公式见如下:

其中,f(i,j) 为灰度点的像素值;g(i,j) 为二值化点的像素值;T为选定的阈值。

1.1.6 形态学处理

为提高复杂场景下车牌识别准确率,利用基于OpenCV-Python 的morphologyEx 形态学滤波函数,并搭配kernel 膨胀核参数对车牌图像做形态学闭运算、即先膨胀运算,再腐蚀运算。 闭运算能够平滑车牌边缘,排除黑色区域并弥合裂缝等缺陷,也不会改变位置和形状。 图2 是经过预处理后得到的车牌效果图。

图2 预处理后车牌效果图Fig. 2 License plate renderings after preprocessing

1.2 车牌定位与过滤

车牌图像的定位主要分为2 步。 首先,通过预处理,利用形态学闭运算截取候选车牌区域;然后,基于HOG 特征提取和训练SVM 支持向量机分类器,并结合规则过滤出真正的车牌区域。

1.2.1 HOG 特征提取

HOG 特征具有尺度不变性,适用于复杂环境下SVM 支持向量机的车牌定位检测,鲁棒性较好[8]。HOG 局部特征提取具体步骤如下:

(1)颜色空间归一化、即车牌图像灰度化;

(2)梯度计算:计算像素点(x,y) 水平方向和垂直方向的梯度值。 可由式(5)、式(6)计算求得:

其中,f(x,y) 表示像素值,Gx(x,y),Gy(x,y)分别表示水平和垂直梯度。

进而求出像素点(x,y) 处的梯度幅值和梯度方向,可由式(7)、式(8)进行描述:

(3)构建梯度方向直方图,本文采用9 个直方图通道,如图3 所示。

图3 Block 矩形区间(9 个直方图通道)Fig. 3 Block rectangular interval (9 histogram channels)

1.2.2 SVM 定位车牌

SVM 利用结构风险最小原则对目标数据进行二元分类,主要分为线性和非线性支持向量机。HOG 特征提取后,选用二元SVM 分类器对车牌定位图片进行过滤,过滤掉一些伪车牌区域,最终筛选出真正的车牌图片。 分别从车牌区域和非车牌区域选取数据集作为正样本和负样本进行模型训练,并在测试集上测试,分类正确率达98.9%。 部分样本如图4 所示。

图4 SVM 训练所用正负样本(部分)Fig. 4 Positive and negative samples for SVM training (part)

2 车牌校正与字符分割

2.1 车牌倾斜校正

为提高车牌字符分割和识别工作的准确性,现对车牌图像进行倾斜校正。 国内外经典车牌倾斜校正算法主要有直线检测算法、投影旋转变换算法等,其中直线检测算法主要包括Hough 变换算法和Radon 变换算法[9]。 本文选用基于Radon 变换的倾斜矫正算法。

基于Radon 变换的倾斜校正算法是在车牌图像预处理的基础上,对车牌图像进行Radon 变换,求出最大峰值点处的倾斜角,旋转后实现倾斜校正。 由此推得的数学计算公式为:

其中,;D为车牌图像平面;f(x,y) 为点(x,y) 的原始图像像素值;在ρ-θ空间内,ρ为(x,y) 平面内直线到原点的距离;θ为要求的倾斜角。

基于Radon 变换的车牌倾斜校正如图5 所示。

图5 基于Radon 变换的车牌倾斜校正Fig. 5 License plate tilt correction based on Radon transform

2.2 车牌字符分割

目前,常用的字符分割方法主要有模板匹配法、投影法(包括水平和垂直投影)、基于连通域分割法以及基于人工神经网络分割法[10]。 根据国内车牌的形态特征和字符编排的特殊性,本文选用垂直投影法对校正后的车牌图像进行分割。

车牌倾斜校正后,首先需要去除边框区域和固定的铆钉,然后选用基于颜色信息的跳变法,将字符区域过渡引起的跳变次数与设定阈值相比较,再根据字符区域为白色、非字符区域为黑色的二分类特征使用垂直投影法,所得投影图上的波谷区域即是字符分割点,最终完成车牌字符的分割。 分割过程和结果如图6 所示。

图6 基于垂直投影的车牌字符分割Fig. 6 License plate character segmentation based on vertical projection

3 基于卷积神经网络的车辆字符识别

现如今,主流的车牌字符识别方法主要有4 种,分别为基于模板匹配的字符识别、基于统计特征的字符识别、基于传统机器学习的字符识别和基于卷积神经网络的字符识别[11]。 本文采用基于深度学习的卷积神经网络车牌字符识别算法,避免了传统算法中复杂的字符特征提取过程,提高了复杂环境下车牌字符识别的准确性和稳定性。

3.1 卷积神经网络结构

CNN 是以卷积计算为核心的深层神经网络,具有优秀的图像特征提取能力,其结构一般包括:卷积层(Convolutional layer)、池化层(Pooling layer)和全连接层(Full-connected layer),具有局部感知、权值共享、多层卷积等特点[12]。 对此拟做研究分述如下。

(1)卷积层(Convolutional layer)。 卷积层是CNN 的核心构建块,主要由卷积计算和激活函数构成。 卷积层中含有多个过滤器、即卷积核,用来检测并提取输入图像的特征,还通过卷积运算增强某些特征信号和降低噪声,从而创建多个有助于对输入图像进行分类的特征图。

卷积计算的参数包括:步长S、即卷积核每次平移滑动的长度;卷积核大小K;边缘填充P、即用来调整卷积后特征的大小,常用0 值填充(zeropadding),如果要维持卷积层前后的特征图尺寸一致,P的取值应该为P=(K -1)/2。 用input表示输入特征图的大小,用output表示卷积后特征图的大小,可用如下公式来计算求值:

卷积计算的过程如图7 所示。 图7 中,深蓝色的5*5 矩阵是输入图像,灰色的3*3 区域是卷积核,步长S为1、填充P为1,卷积核每滑动一个步长输出一个结果,以此类推,最终卷积计算的输出结果为浅蓝色的5*5 矩阵,且满足式(10)。

图7 二维卷积计算过程示意图Fig. 7 Schematic diagram of two - dimensional convolution calculation process

本文采用ReLu激活函数来解决卷积神经网络中的非线性问题。 函数定义公式具体如下:

(2)池化层(Pooling layer)。 池化层主要功能是通过压缩图像(数据和参数计算等)去除冗余的信息,并减小过拟合,从而增强图像特征的表达。 本文采用平均值池化来增加卷积核对图片信息的提取能力,即以平均值作为特征子区域的输出值。 以4*4输入图像为例,给出的平均值池化操作如图8所示。

图8 平均值池化示意图Fig. 8 Schematic diagram of average pooling

(3)全连接层(Full-connected layer)。 全连接层在卷积神经网络中的作用是在输入图像通过卷积计算、激活函数、池化处理等操作后,将输出结果进行特征融合转化为一维标记空间, 并送到分类器(如softmax分类器) 实现分类,其核心数学运算是矩阵向量乘积。

综上所述,在卷积神经网络中,全连接层之前是对输入信号进行特征提取,全连接层本身实现分类并输出结果。 依托这一优点,在进行大量数据训练后,卷积神经网络能够实现对复杂图像特征的自动提取和分类,且不易受到外界环境的干扰,为本文车牌识别算法的研究提供理论支撑。

3.2 模型训练与测试

为减少外界环境的干扰,并提高车牌识别的鲁棒性和自适应性,本文采用基于卷积神经网络的VGG16 网络模型进行车牌字符识别,其模型包含了13 个卷积层、5 个池化层、3 个全连接层[13],且每一层都含有参数和权重,网络模型如图9 所示。 考虑到车牌识别的输出结果为检测异常与正常输出号码, 本文将原网络的softmax分类器改为二分类softmax,激活函数仍采用ReLu,其他保持不变。

图9 VGG16 网络模型图Fig. 9 VGG16 network model diagram

本文以公开数据集CCPD 为基础,结合国内汽车牌照特点,制作31 类省、市、自治区简称的中文汉字、除I 和O 之外的24 类英文字母和10 类阿拉伯数字、共65 类字符组成的数据集,数据集包含中文汉字图片3 573张,英文字母图片5 481张,数字图片7 693张。 首先基于TensorFlow 深度学习框架搭建VGG16 网络模型,然后结合车牌图像预处理、车牌定位和字符分割等前期处理,最终将分割后的字符归一化为224*224 并输入VGG16 网络进行训练和测试。 在训练与测试过程中,发现模型容易对‘Z’和‘2’、‘U’和‘V’、‘B’和‘8’、‘浙’和‘湘’等相似字符产生误识别。

4 复杂场景下的车牌识别测试

本文设计的基于深度学习的复杂场景下车牌识别算法,是以公开的中国城市停车数据集CCPD 为基础,少部分测试图片来自现场采集,通过选取正常拍摄、不同角度倾斜、异常天气条件(雨天、冰雪、大雾)、光照不足或过强、不同运动姿态等场景下的车辆图片进行车牌识别测试。 所有选取的车辆图片都经过预处理、车牌定位、字符分割等处理,然后转换为tensor 变量传入VGG16 网络模型进行训练与测试。 本文设计的算法在雨雪天气和倾斜场景下定位率达到了93%以上,大雾天气、车牌模糊和夜晚场景下车牌定位率稍低,对字符分割和识别产生了较大影响,结果显示复杂场景下字符识别准确率仅达到了85%,但符合本文算法研究的预期。 部分复杂场景下的车牌识别结果如图10 所示。

图10 部分复杂场景下车牌识别结果Fig. 10 License plate recognition results in some complex scenes

5 结束语

为了提高对于不同环境、不同角度、不同清晰度、不同天气状况以及动态多变的复杂场景下车牌识别的准确率,本文从基于深度学习的复杂场景下车牌识别算法展开研究,针对图像预处理、车牌定位、倾斜校正、字符分割和字符识别分别做了优化处理。 利用灰度化、滤波去噪、二值化、形态学运算等手段对车牌图像进行预处理、设计并采用Python 编程语言的HOG+SVM 算法对目标车牌进行检测定位、采用Radon 变换对车牌进行倾斜校正以及使用基于深度学习和CNN 卷积神经网络的VGG16 模型对车牌字符进行识别,测试结果显示车牌字符平均识别准确率和鲁棒性均得到有效提高,具有广阔的应用场景。

猜你喜欢
字符识别车牌字符
寻找更强的字符映射管理器
字符代表几
一种USB接口字符液晶控制器设计
数字图像处理技术在车牌识别系统中的应用
消失的殖民村庄和神秘字符
一种改进深度学习网络结构的英文字符识别
第一张车牌
基于MATLAB 的车牌识别系统研究
仪表字符识别中的图像处理算法研究
基于CUDA和深度置信网络的手写字符识别