APP下载

基于深度学习的车检图像多目标检测与识别

2022-01-20欧巧凤肖佳兵谢群群熊邦书

应用科学学报 2021年6期
关键词:字符识别底色车牌

欧巧凤,肖佳兵,谢群群,熊邦书

南昌航空大学图像处理与模式识别江西省重点实验室,江西南昌330063

近年来,各城市机动车数量剧增,而车管所主要采用人工确认的办法对车辆外观进行年检,该方法效率低,检测时间长,给车主带来极大不便。当前目标检测与识别方法研究成果丰富,但是尚未有专门针对车检图像的多目标检测与识别方法。车检场景下,待检测与识别的一级目标为车头、轮胎、车牌及三角形标志,二级目标为车牌关键点坐标、车牌底色及车牌字符。随着智能交通系统[1]的发展,车检场景下的多目标检测与识别也是亟待研究的内容之一。

传统的目标检测与识别方法一般分为3 个阶段:1)在给定的图像上选择一些候选区域,2)对这些候选区域进行特征提取,3)使用训练后的分类器对目标进行分类。常用的分类特征包括LBP[2]、SURF[3]、Harr[4]、HOG[5]及其多种改进版本。这些特征存在两个问题:基于滑动窗口的特征提取时间复杂度高,窗口冗余;人工设计的特征提取方法对于图像的多样性并没有很好的鲁棒性。因此,传统的基于上述分类特征的车牌检测与识别方法[6-7]效率较低,且容易受光照不均和噪声的影响,鲁棒性较差。

近年来,基于深度学习[8]的目标检测与识别方法迅速发展,其中常见方法可分为两类:一类是先由算法产生一系列候选框,包含目标大概位置信息,然后对候选区域进行分类和位置精定位,典型算法有RCNN[9]、Fast R-CNN[10]及Faster R-CNN[11]等;另一类是直接得到物体位置坐标和类别概率,典型算法有SSD[12]、YOLO[13]等。相比于传统方法,基于深度学习的目标检测与识别方法具备更强的适应性。现有的基于深度学习的目标检测与识别算法[14]已成功应用于卡口、道路及监控等场景下的车牌检测与识别,但尚未有适用于车检图像的多目标检测与识别方法。

据此,本文提出基于深度神经网络实现车检图像中车头、轮胎、三角形标志、车牌的检测方法,以及车牌底色和字符的识别方法,相比于传统方法具有更好的鲁棒性、更高的检测和识别精度,且能用于实际车检场景以提高车检的效率。

1 方 法

本文方法由一级目标检测、车牌关键点定位、车牌校正、车牌底色及字符识别4 个步骤组成,如图1所示。

图1 方法流程示意图Figure 1 Schematic diagram of the proposed method

具体步骤如下:

步骤1将原始的车检图像输入到轻量级神经网络YOLOv3-LITE[15]中,对车检图像中的一级目标(车头、轮胎、车牌及三角形标志)进行检测与识别;

步骤2采用多任务级联卷积神经网络[16](multi-task cascaded convolutional neural networks,MTCNN)实现车牌4 个关键点定位;

步骤3利用车牌4 个关键点坐标,结合目标车牌图像高宽先验,采用透视变换,对车牌进行校正;

步骤4将校正后的车牌图像分别输入到卷积神经网络(convolutional neural network,CNN)和卷积循环神经网络[17-18](convolutional recurrent neural network,C-RNN)中,得到车牌底色分类及字符识别结果。

1.1 一级目标检测

车检图像中要检测的一级目标包括车头、轮胎、车牌及三角形标志。采用YOLOv3-LITE算法对车检图像中的一级目标进行检测与识别。YOLOv3-LITE 是利用MobileNet-v2[19]作为YOLOv3[20]骨干网络的改进版,其推理速度快,模型占用内存小,识别准确率高。

在检测和识别车检图像不同尺度的目标时所使用的YOLOv3-LITE 网络结构如图2所示。具体地,将车检图像缩放到416×416 的尺寸,输入到由1 个Bottleneck/1 和6 个Bottleneck/6 组成的MobileNet-v2 网络中,其中Bottleneck 为深度可分离卷积块与残差网络的集合,1 和6 代表中间通道数相对于输入通道的倍增系数。MobileNet-v2 输出13×13 的特征图,再经过若干次1×1 的卷积和3×3 的卷积后,得到13×13 特征图的预测输出,具有较大尺寸的感受野,适合检测车头较大尺寸的目标;对13×13 的特征图进行上采样,得到26×26 的特征图,经过若干次1×1 的卷积和3×3 的卷积后,得到26×26 特征图的预测输出,具有中等尺寸的感受野,适合检测轮胎及三角形标志等中等尺寸的目标;对26×26 的特征图进行上采样,得到52×52 的特征图,经过若干次1×1 的卷积和3×3 的卷积后,得到52×52 特征图的预测输出,具有较小尺寸的感受野,适合检测车牌等较小尺寸的目标。

图2 用于不同尺度目标检测的YOLOv3-LITE 网络结构Figure 2 YOLOv3-LITE network structure for target detection at different scales

1.2 车牌关键点定位

对车牌进行定位后,为了降低不同方位车牌字符识别的任务难度,先检测车牌的4 个角点并将其作为关键点,再对车牌进行几何校正。MTCNN[16]是多任务的级联卷积神经网络,用于人脸检测和人脸关键点定位,其模型占用内存小,检测速度快,且具有较高的检测精度及关键点定位精度。采用MTCNN 算法,实现不同方位车牌的关键点定位。

图3为MTCNN 算法网络结构及设计参数,由P-Net、R-Net 及O-Net 3 个级联的卷积神经网络组成。具体工作步骤如下:

图3 车牌关键点定位的MTCNN 网络结构及参数Figure 3 MTCNN network structure and parameters for key point positioning of license plate

步骤1将经过粗定位后的车牌随机裁剪成不同尺度,由于车牌实际长宽比约为3∶1,将其缩放成36×12 大小;

步骤2将车牌图像输入到P-Net,用于获取含车牌的候选框,采用非极大值抑制(nonmaximum suppression,NMS)算法去除部分冗余框,初步得到一些含车牌的候选框;

步骤3将P-Net 得到的候选框输入到R-Net 以进一步细化,通过NMS 算法去除部分冗余框,得到含大量车牌的候选框,且冗余框更少;

步骤4将R-Net 得到的候选框输入到O-Net,既可以对车牌候选框进一步细化,又可以输出车牌4 个关键点坐标。

MTCNN 算法有3 个输出,即:是否为车牌、车牌检测框坐标及车牌关键点坐标,对应3个损失函数。

是否为车牌是一个二分类问题,使用常见的交叉熵损失作为损失函数,其公式为

式中:pi是样本xi为车牌的概率,(0,1) 是样本标签。

车牌检测是一个回归问题,回归边界框的左上角坐标、高和宽的值。计算每一个候选框检测值与其边框标签值的欧氏距离,通过最小化欧氏距离回归损失,损失函数公式为

车牌关键点定位和车牌边框回归类似,计算候选点检测值与标签值的欧氏距离,通过最小化欧氏距离回归损失,损失函数公式为

式中:是候选车牌4 个关键点的检测值,是车牌4 个关键点的标签值,因此R8。

将3 个损失函数进行加权累加,得到总损失函数Ltotal,其公式为

式中:N是训练样本数,αj表示不同任务的重要性,0,1}表示样本标签,为对应式(1)~(3) 中的3 类损失函数。P-Net 和R-Net 更关注车牌分类及车牌检测的准确性,在P-Net和R-Net 中设置adet=1,αbox=1,αlandmark=0。O-Net 更关注车牌关键点定位的准确性,在O-Net 中设置adet=0.5,αbox=0.5,αlandmark=1。

1.3 车牌校正

车检场景下,相机安装位置不同使得车牌图像存在不同的投影畸变,为了简化车牌字符识别任务,需对车牌进行校正。利用车牌4 个关键点坐标,结合目标车牌高宽先验,采用透视变换对其进行校正。透视变换是将原始图像通过透视变换矩阵投影到一个新的视平面,也称作投影映射。透视变换公式为

式中:[x y1]T为原始车牌图像的像素点坐标,[X Y1]T为校正后车牌图像的像素点坐标,w为比例因子。

令透视变换参数a33=1,车牌的4 对关键点坐标为(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),变换为对应点的坐标为(0,0)、(128,0)、(128,32)、(0,32),将变换前后的坐标代入式(5),可得8 个方程,进而可求出透视变换矩阵A=[a11,a12,a13,a21,a22,a23,a31,a32,a33]。以车牌区域图像的像素坐标作为输入,利用透视变换矩阵,可得校正后的车牌图像。

1.4 车牌底色识别

车检场景中,待识别车牌底色分为蓝、黄、绿、白、黑5 种。因此,车检场景中车牌底色的识别可以看作是一个分类问题,一共可分为5 类。表1为车牌底色识别网络模型参数,其中K表示卷积核大小,S表示卷积核移动步长,P表示填充大小。网络模型参数包含4 个卷积层、4 个池化层和1 个全连接层,每个卷积核的大小为3×3,步长为1×1,每个池化层的大小为2×2,步长为2×2,全连接层神经元为512 个,Softmax 层共有5 个输出,对应5 种车牌底色。

表1 车牌底色识别网络模型参数Table 1 Network model parameters of license plate background color recognition

车牌底色识别是一个多分类问题,假设卷积神经网络实际输出的Softmax 值为q,目标分布为p,当目标类别为j时,pj=1,否则pj=0,其损失函数使用常见的交叉熵损失,损失函数公式为

式中:K为一次处理车牌图像的总数,k为当前处理的车牌图像,j所属的类别为5 种车牌底色。

1.5 车牌字符识别

用车牌图像及其对应的标签序列对C-RNN[17]进行训练,实现端到端的车牌字符识别,图4为车牌字符识别流程图。首先,输入校正后的车牌图像,采用CNN 进行特征提取,CNN输出的特征图被转换为一维特征向量x1,x2,···,xL。然后,将一维特征向量序列输入到双向长短时记忆(bi-directional long short term memory,BiLSTM)中,使用Adam(adaptive moment estimation)和反向传播(back propagation,BP)算法训练CRNN 模型,并标记序列特征,得到特征向量对应的概率P1,P2,···,PL。最后,将联结主义时间分类(connectionist temporal classification,CTC)应用于BiLSTM 的输出层,对BiLSTM 输出的概率进行转录,得到最终车牌字符识别结果。

图4 车牌字符识别流程图Figure 4 Flowchart of license plate character recognition

车牌字符识别网络模型参数如表2所示。车牌字符识别模型包括4 个卷积层及4 个池化层,每个卷积核的大小均为3×3,步长为1×1,每个池化层的大小为2×2,步长为2×2,经过4 次卷积和池化操作之后,将特征图输入到BiLSTM,BiLSTM 通过组合上下文信息,对车牌字符进行识别。

表2 车牌字符识别网络模型参数Table 2 Network model parameters of license plate character recognition

网络的输入是图像和图像的序列标签信息,用X={Ii,Li}表示训练数据集,其中Ii为单幅训练图像,Li为对应该图像的标签序列。优化的目标是使下列负对数的条件概率最小:

式中:yi表示C-RNN 从Ii中预测得到的概率分布序列。

2 实验结果及分析

2.1 数据说明

目前没有公开的车检场景数据集,本文的实验数据来源于某车检设备生产公司,包含不同方位车检图像19 125 幅,且不同方位车检图像样本数量并不均匀。首先,采用旋转、平移及镜像等操作对样本量较少的图像进行增强,使得各方位下的车检图像样本数量基本一致,从而避免样本不均导致训练出的模型泛化性能不佳。然后,对数据集进行统一标注,标注的信息主要有车头、轮胎、车牌、三角形标志左上角和右下角坐标,以及车牌4 对关键点坐标。其中80% 的样本用于模型训练,剩余20% 的样本用于模型测试。

利用公开的车牌数据集(http://www.openits.cn/openData4/569.jhtml)验证本文车牌识别方法的优越性。上述车牌数据集包含不同省市及不同类型的车牌图像共1 402 幅,开源车牌图像均选自道路卡口高清图像,每幅图像只包含一个车牌。

2.2 实验平台

实验所使用的计算机硬件配置如下:CPU 为Intel®CoreTMi7-8700K@3.7GHz,GPU 为NVIDA GTX1080Ti@11GB,RAM 为32 GB。在Linux Ubuntu 16.04 操作系统上,基于Caffe 深度学习框架,采用Python2.7 编程实现本文模型并完成模型的训练和验证,另外使用CUDA9.0 的并行计算框架,CUDNN v7.0 的深度神经网络加速库。

2.3 模型训练

采用Adam 算法训练YOLOv3-LITE,设置批处理样本数为32,冲量为0.9,最大迭代次数为6×104次,初始学习率为1×10-3,每5 000 次迭代后衰减一次,每间隔100 次迭代后保存一次训练模型,选取精度最高模型。

采用随机梯度下降算法(stochastic gradient descent,SGD)训练MTCNN 中的P-Net、RNet 及O-Net,设置批处理样本数为256,冲量为0.9,初始学习率为1×10-4,最大迭代次数为5×105,每10 000 次迭代后衰减一次,每间隔1 000 次迭代后保存一次训练模型。

采用SGD 算法训练车牌底色识别网络,设置批处理样本数为256,冲量为0.9,初始学习率为1×10-4,最大迭代次数为5×104,每10 000 次迭代后衰减一次,每间隔1 000 次迭代后保存一次模型。

采用Adam 算法训练车牌字符识别模型,设置批处理样本数为32,冲量为0.9,最大迭代次数为6×104,初始学习率为1×10-3,每10 000 次迭代后衰减一次,每间隔1 000 次迭代后保存一次模型。

2.4 评价指标

利用预测框与真实框的交并比(intersection over union,IoU)判定目标检测的有效性,公式为

式中:Rdet代表预测框,Rgt代表真实框,IoU 定义为预测框与真实框的交集及并集的比值。

为了量化模型的检测与识别效果,通过精确率P和召回率R进行量化,计算公式分别为

式中:Tp表示能正确检测到目标的数量,Fp表示误把非目标检测为目标的数量,FN表示误把目标检测为背景的数量。

平均精度AP 反映单一目标的检测结果,其公式为

式中:p(r) 表示精确率与召回率的映射关系。

所有类别平均精度均值(mean average precision,mAP)能够反映总体的目标检测与识别效果,其计算公式为

式中:n表示类别数,i表示某个类别。

2.5 实验结果

为了验证方法的有效性,在实验平台上对模型进行测试。当检测框与真实框的IOU 大于0.7 时,认为一级目标检测结果正确,否则视为未检测出一级目标。将IOU 设置为0.7时,一级目标检测与识别结果如表3所示,车头、轮胎、车牌及三角形标志AP 值分别为98.42%、98.67%、99.68%、99.05%,其mAP 值为98.96%。

表3 一级目标的检测与识别结果Table 3 Detection and recognition results of primary target %

将IoU 设置为0.5 时,二级目标检测与识别结果如表4所示,车牌关键点定位、车牌底色识别及车牌字符识别AP 值分别为99.76%、99.93% 及99.37%。

表4 二级目标的检测与识别结果Table 4 Detection and recognition results of secondary target %

为了便于将本文模型用于车检场景,在不损失精度的情况下,通过CMake 和VS2019 将MNN[21]编译成动态链接库,在Windows10 操作系统上进行部署。阿里巴巴开源的一款高效且轻量的深度神经网络推理引擎MNN,能将深度学习模型部署到不同的硬件平台上。模型部署所使用的计算机硬件配置主要如下:CPU 为Intel®CoreTMi5-4200H@2.80GH,RAM 为8 GB。

图5为车检图像多目标检测与识别结果。图中,红色框为一级目标检测与识别结果,黄色圆点为车牌4 个关键点定位结果,黄色文字为车牌底色及字符识别结果。图5中,(a) 和(b) 均为左前方检测与识别结果,(c) 为右前方检测与识别结果,(d) 为右后方检测与识别结果,(e) 为正后方检测与识别结果,(f) 为制动情况下,右后方检测与识别结果。在CPU 端,一级目标与二级目标的平均识别精度为98.03%。

图5 车检图像多目标检测与识别结果Figure 5 Multi-target detection and recognition results of vehicle inspection images

表5给出了检测和识别不同目标所需要的时间。其中:利用YOLOv3-LITE 对一级目标进行检测与识别的时间为45.45 ms,利用MTCNN 对车牌关键点进行定位的时间为32.27 ms,利用CNN 对车牌进行底色检测与识别的时间为9.34 ms,利用CRNN 对车牌字符进行检测与识别的时间为12.73 ms,完成一级目标与二级目标所需要的总时间为99.79 ms,则平均检测与识别速度为10 帧/s。

表5 对不同目标进行检测与识别的时间Table 5 Time of detecting and recognizing different targets ms

目前尚未有文献开展车检图像的多目标检测与识别方法研究,车牌检测及车牌字符识别作为本文方法的重要组成部分,研究成果较多。因此,用公开数据集测试本文模型在车牌检测与车牌字符识别上的效果,并与现有车牌检测与车牌字符识别方法进行对比。本方法检测效果如图6所示,红色框为车牌检测结果,黄色圆点为车牌精定位检测结果,黄色文字为车牌底色及车牌字符识别结果。

图6 公开数据集检测和识别结果Figure 6 Detection and recognition results of public data set

本文方法的车牌检测与车牌字符识别平均精度为98.81%,比现有方法精度有所提高,如表6所示。

表6 不同方法的精度对比结果Table 6 Accuracy comparison results of different methods %

3 结 语

本文提出了一种基于深度学习的车检图像多目标检测与识别方法,通过一级目标和二级目标检测网络级联,构建了端到端的车检图像多目标检测与识别网络。车检图像中一级目标的检测与识别的平均精度为98.93%;二级目标检测和识别的整体精度为99.06%;从而可知该算法端到端的多目标识别精度达98.03%,满足自动车检场景的精度要求;采用阿里推理引擎MNN,将训练好的网络模型部署到CPU 端,然后应用到真实车检场景,在816×612 的车检图像上,多目标检测与识别的平均速度为10 帧/s,能满足快速和自动车辆外观检测的速度需求。

猜你喜欢

字符识别底色车牌
把中华文明的底色铺陈好
永恒的底色
数字图像处理技术在车牌识别系统中的应用
一种改进深度学习网络结构的英文字符识别
第一张车牌
基于MATLAB 的车牌识别系统研究
仪表字符识别中的图像处理算法研究
底色
基于CUDA和深度置信网络的手写字符识别
底色