一种基于深度学习SSD框架的车牌定位方法
技术领域
本发明涉及计算机视觉识别技术领域,具体涉及一种基于深度学习SSD框架的车牌定位方法。
背景技术
面对当今世界全球化、信息化发展趋势,智能交通系统将是交通事业发展的必然选择。通过先进的信息技术、通信技术、控制技术、传感技术、计算器技术和系统综合技术有效的集成和应用,使人、车、路之间的相互作用关系以新的方式呈现,从而实现实时、准确、高效、安全、节能的目标。车牌识别是现代智能交通系统的一个重要组成部分,车牌识别技术应用于道路的交通监控、交通违章自动记录、高速公路超速管理、小区和停车场智能管理等方面,为智能交通管理提供了高效、实用的手段。车牌识别技术包括车牌定位、字符分割和字符识别三个基本环节,其中,车牌定位是字符分割和字符识别的前提,也是车牌识别的难点。
现有的车牌定位方法主要有三类:基于图像处理方法、基于特征提取方法和基于深度学习方法。图像处理的方法主要有:1)基于车牌颜色的方法。利用查找车牌颜色区域的方法获取车牌。该类方法易受车身颜色的影响,造成车牌漏检;此外,自然条件下光照不均匀也会导致车牌颜色信息的变化。2)基于车牌纹理、边缘的方法。利用车牌区域字符集中的特点,通过小波变换、边缘增强等方法进行车牌定位。该类方法在场景中出现字符干扰时,易引发误检。3)基于灰度跳变的方法。利用车牌图像二值化后的跳变规律,对图像进行逐行扫描,从而确定车牌区域。该方法易受到跳变信息丰富的物体干扰造成误检,且车牌角度倾斜较大时不易得到车牌。特征提取的方法通常使用方向梯度直方图(HoG)、局部二值模式(LBP)、SIFT、Haar等特征,使用分类器训练模型进行全图搜索,检测率较高但速度慢,并且对角度要求较高,车牌角度大时会出现漏检。深度学习的方法通常使用特征提取方法或训练RPN卷积神经网络进行粗选区域提取,再利用卷积神经网络对得到的粗选区域进行判断,从而得到车牌区域。该方法过程复杂,计算量大,难以实时处理。
中国专利公开号CN106022232A公开了一种基于深度学习的车牌检测方法:采用faster-rcnn算法,分别训练一个RPN卷积神经网络和一个fast-rcnn卷积神经网络,通过构建带有标注和标签的图片库作为样本集,并采用训练好的RPN卷积神经网络处理样本集中的图片,得到车牌粗选区域,然后将车牌粗选框送入训练好的fast-rcnn卷积神经网络的输出向量判断,得到车牌最终区域。该方法在RPN卷积神经网络训练时,采用了多个尺度和多个比例基准框,能够有效提升非常规尺度和比例的车牌检测,但该方法整体分成两个阶段,先获取粗选区域,然后对每个粗选区域分类、回归,计算量仍然较大,难以达到实时的效果。
发明内容
为弥补现有技术的不足,本发明提供一种基于深度学习SSD框架的车牌定位方法,以提高车牌定位准确率,减少定位时间,达到实时检测的要求。
本发明是通过如下技术方案实现的:
一种基于深度学习SSD框架的车牌定位方法,其特殊之处在于:包括以下步骤:
(1)依据VOC数据集格式制作车牌数据集;
(2)将车牌数据集转换为lmdb格式;
(3)以ResNet残差网络作为基础网络,添加额外辅助的网络结构作为SSD框架特征提取层和分类层,搭建SSD框架;
(4)利用搭建的SSD框架训练网络模型;
(5)利用训练出的模型进行车牌定位及模型评估。
本发明的一种基于深度学习SSD框架的车牌定位方法,步骤(3)中SSD框架由ResNet残差网络的网络层、六个卷积层和一个池化层构成;网络层包括第一个卷积层conv1层和res3b3层和res5c层;六个卷积层包括:“res5c_relu/conv1_1”层、“res5c_relu/conv1_2”层、“res5c_relu/conv2_1”层、“res5c_relu/conv2_2”层、“res5c_relu/conv3_1”层、“res5c_relu/conv3_2”层。
进一步的,步骤(3)中使用101层ResNet残差网络的预训练模型作为基础网络。
进一步的,步骤(3)中特征提取层由五个卷积层“res3b3”层,“res5c”层,“res5c_relu/conv1_2”层,“res5c_relu/conv2_2”层,“res5c_relu/conv3_2”层和一个池化层“pool6”层构成。
本发明的一种基于深度学习SSD框架的车牌定位方法,步骤(4)中训练网络模型过程如下:首先初始化网络中待训练的参数及超参数,向初始化后的网络中输入训练样本数据进行网络前向传播,得到实际的输出结果,通过损失函数结合反向传播BP算法调整网络参数,进行迭代训练,至损失函数的损失值小于设定的阈值或达到最大迭代次数时训练结束,得到用于定位车牌的网络模型。
进一步的,所述训练样本数据包括待处理图像、目标位置及类别信息。
本发明的一种基于深度学习SSD框架的车牌定位方法,步骤(5)利用训练的模型对待测样本进行车牌定位测试,设置置信度阈值,若检测结果置信度得分大于阈值则输出该结果;否则,丢弃。
本发明的有益效果是:本发明以ResNet残差网络作为基础网络,在该网络后添加额外辅助的网络结构作为SSD框架,抽取中间层特征进行组合作为识别的特征向量。通过构建带有标注和标签的图片库作为车牌定位样本集,对搭建的多尺度目标检测器SSD网络框架进行训练,得到深度网络模型。利用深度网络模型进行车牌的定位,在多种场景中得到了较高的车牌定位准确率和较低的漏检率,同时提升了车牌定位的速度,达到实时检测的目的。
附图说明
附图1是本发明的流程示意图;
附图2是实施例1中数据存放结构图;
附图3是实施例1中SSD框架结构图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明,以帮助本领域的技术人员对本发明的发明构思、技术方案有更完整、准确和深入的理解,本发明的保护范围包括但不限于以下实施例,在不偏离本申请的精神和范围的前提下任何对本发明的技术方案的细节和形式所做出的修改均落入本发明的保护范围内。
实施例1
一种基于深度学习SSD框架的车牌定位方法,包括以下步骤:
101、依据VOC数据集格式制作车牌数据集
首先建立用于存放数据集的文件夹LPdetection,在LPdetection文件夹下生成三个文件夹分别为Annotations、ImageSets、JPEGImages。将车牌数据文件名从000001.jpg开始统一命名为该类格式,并将数据存放于JPEGImages文件夹中。将车牌的标注文件名从000001.xml开始统一命名,并将其存放于Annotations文件夹中。利用已有的图像数据生成训练样本集和测试样本集,将图像编号分别写入trainval.txt和test.txt,并将其存放于ImageSets文件夹下的Main文件夹中,本实施例中数据存放结构图如附图2所示。
102、将数据集转换为lmdb格式
具体地,获取步骤101中制作的车牌数据集,修改create_data.sh文件中数据集路径及数据集名称,运行create_data.sh脚本将数据集转换成lmdb格式数据文件。
103、搭建SSD框架
本实施例的网络结构是以ResNet残差网络作为基础网络,在基础网络后添加额外的网络层,搭建的SSD框架。SSD是基于一个前向传播CNN网络,产生一系列固定大小的矩形框,以及每一个矩形框中包含物体实例的可能性,之后进行非极大值抑制得到最终的预测结果。本实施例中,使用101层ResNet残差网络的预训练模型作为基础网络。
本实施例搭建的SSD框架如附图3所示,由ResNet-101残差网络的网络层,即自第一个卷积层conv1至res5c层,其后增加了6个卷积层和一个池化层构成。
步骤301、302,基础网络阶段:输入数据维数为300*300*3,数据输入后,经过ResNet残差网络处理,包含一系列卷积层、Batch Normalization层、ReLU层及池化层。经过此阶段操作,输出数据维数为19*19*2048。
步骤303,Res5c_relu/conv1_1阶段:该阶段包含1个卷积层res5c_relu/conv1_1、1个BatchNorm层res5c_relu/conv1_1_bn、1个Scale层res5c_relu/conv1_1_scale和一个ReLU层res5c_relu/conv1_1_relu。其中,神经元个数为256,卷积核大小为1*1,卷积步长为1。经过此阶段操作,输出数据维数为19*19*256。
步骤304,Res5c_relu/conv1_2阶段:该阶段包含1个卷积层res5c_relu/conv1_2、1个BatchNorm层res5c_relu/conv1_2_bn、1个Scale层res5c_relu/conv1_2_scale和一个ReLU层res5c_relu/conv1_2_relu。其中,神经元个数为512,卷积核大小为3*3,卷积步长为2。经过此阶段操作,输出数据维数为10*10*512。
步骤305,Res5c_relu/conv2_1阶段:该阶段包含1个卷积层res5c_relu/conv2_1、1个BatchNorm层res5c_relu/conv2_1_bn、1个Scale层res5c_relu/conv2_1_scale和一个ReLU层res5c_relu/conv2_1_relu。其中,神经元个数为256,卷积核大小为1*1,卷积步长为1。经过此阶段操作,输出数据维数为10*10*256。
步骤306,Res5c_relu/conv2_2阶段:该阶段包含1个卷积层res5c_relu/conv2_2、1个BatchNorm层res5c_relu/conv2_2_bn、1个Scale层res5c_relu/conv2_2_scale和一个ReLU层res5c_relu/conv2_2_relu。其中,神经元个数为512,卷积核大小为3*3,卷积步长为2。经过此阶段操作,输出数据维数为5*5*512。
步骤307,Res5c_relu/conv3_1阶段:该阶段包含1个卷积层res5c_relu/conv3_1、1个BatchNorm层res5c_relu/conv3_1_bn、1个Scale层res5c_relu/conv3_1_scale和一个ReLU层res5c_relu/conv3_1_relu。其中,神经元个数为256,卷积核大小为1*1,卷积步长为1。经过此阶段操作,输出数据维数为5*5*256。
步骤308,Res5c_relu/conv3_2阶段:该阶段包含1个卷积层res5c_relu/conv3_2、1个BatchNorm层res5c_relu/conv3_2_bn、1个Scale层res5c_relu/conv3_2_scale和一个ReLU层res5c_relu/conv3_2_relu。其中,神经元个数为512,卷积核大小为3*3,卷积步长为2。经过此阶段操作,输出数据维数为3*3*512。
步骤309,Pool6阶段:该阶段包含1个池化层,使用平均池化方法。经过此阶段操作,输出数据维数为1*1*512。
如附图3所示,本实施例中选取5个卷积层“res3b3”层,“res5c”层,“res5c_relu/conv1_2”层,“res5c_relu/conv2_2”层,“res5c_relu/conv3_2”层和一个池化层“pool6”层作为特征提取层。
步骤310,每一个添加的特征层或在基础网络结构中的特征层,可以使用一系列卷积核滤波,产生一系列预测结果,就是归属类别的一个得分,或是相对于默认框坐标的一个偏移值。
步骤311,最后根据获取的归属类别得分或相对于默认坐标的偏移值,通过非极大抑制方法,消除多余框,得到得分大于设定阈值的检测结果。
104、利用搭建的SSD框架训练网络模型
SSD训练的目标函数可用于处理多个目标类别,总的目标损失函数由定位损失(loc)与置信度损失(conf)加权求和而得,计算公式如下:
其中,N是标记框与默认框匹配的个数,loc是SmoothL1损失,用于衡量预测框与标记框参数之间的距离,conf是softmax损失,输入c为每一类的置信度。
本实施例中,训练输入数据为步骤102制作的lmdb数据集,包括待处理图像、目标位置及类别信息,训练样本及测试样本信息。在训练阶段,算法首先将默认矩形框与标记矩形框进行匹配,若匹配值大于设定的阈值即为匹配成功,设定该默认矩形框为正样本;否则,为负样本。
训练过程具体方法如下:首先初始化网络中待训练的参数及超参数,本实施例中使用ResNet-101-model的卷积阶段参数作为本网络卷积部分的初始值。向初始化后的网络中输入训练样本数据进行网络前向传播,得到实际的输出结果。所述的训练样本数据包括待处理图像、目标位置及类别信息。使用上述的L损失函数,结合反向传播BP算法调整网络参数。进行迭代训练,至损失值小于设定的阈值或达到最大迭代次数时训练结束,得到用于定位车牌的网络模型。
105、利用训练出的模型进行车牌定位及模型评估
利用训练的模型对待测样本进行车牌定位测试。设置置信度阈值,若检测结果置信度得分大于阈值则输出该结果;否则,丢弃。结果包括检测目标坐标,种类及置信度。本实施例中,设置置信度阈值为0.85,目标种类为车牌。统计该网络模型对车牌的定位情况,以评估网络模型的优劣。
经测试,本发明的车牌定位深度框架可应对复杂的环境条件,如:车牌曝光,污损,雨雾天气等。可实时检测,达到较高的车牌定位准确率。
本发明按照实施例1的方式描述,但并不是每个实施方式仅包含一个独立的技术方案,还应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
此外,本发明实施例是用流程图和/或方框图来描述的,计算机程序指令实现流程图和/或方框图,除了可提供方法、系统(装置)或计算机程序产品外,还可提供计算机程序指令到计算机嵌入式处理机或者其他可编程数据处理设备中,使其产生流程图和/或方框图中的功能。