基于深度学习的交通标志快速识别方法
2022-04-19李澔
李澔*
(北京建筑大学测绘与城市空间信息学院,北京 102616)
1 概述
交通标志通过文字或符号来传递限制、引导、指示或警告等信息。在日常生活中,交通标识保障了道路中车辆和行人的生命安全,保证道路顺畅,提醒驾驶员前方存在的安全隐患。随着汽车数量增长,导致交通拥挤、交通事故不断增加。在实际交通道路中,驾驶人员可能由于自身问题,如疲劳驾驶、酒后驾驶等因素对实际路况做出错误判断,还可能因为外界环境问题,如道路遮挡、环境能见度低等问题导致交通事故。许多政府和汽车厂商为了提高交通出行的安全性,同时降低交通事故的发生率,都在推广智能交通系统。交通标识快速识别是智能交通系统重要组成部分并且也是汽车自动驾驶的主要内容。由于交通标识通过文字,符号,图形传递信息,在一定范围内具有准确、特征鲜明、轮廓清晰明显的特性,所以可以通过图像特征提取和图形识别技术对交通标志进行识别和分类[1,2]。
近几年随着机器学习、深度学习等技术的不断发展,基于卷积神经网络的算法更加适合识别交通标志,可以增加交通标识的识别正确率。因此本文主要基于卷积神经网络(Convolutional Neural Network,CNN)的LeNet-5 算法[3]对其模型进行改进,使之更适合对交通标志的识别,并且通过比利时交通数据集进行训练,最后得到一个可以识别交通标志图像的算法。
2 LeNet-5 算法
文中是基于LeNet-5 算法,并对其做出改进,该算法是一种非常高效的卷积神经网络用于识别手写字体标识[4,5]。LeNet-5 算法可以很好的提取高维图像的信息特征,其网络结构包括1 个输入层、2 个卷积层、2 个池化层、2 个全连接层,1 个输出层,共有8 层。虽然LeNet-5模型层次简单但是它包含深度学习中主要的基本模块,并且其模型训练的数据都为灰度图像,需要提取的特征也较少。但是,本文中所研究的交通标志图像,其图像中的特征信心更加丰富,部分交通标志相似程度较大,而其部分图像中有局部被遮挡,因此需要对LeNet-5 模型做进一步的改进,提高模型提取图像特征的能力,由于其训练数据集数据量大,因此本文基于LeNet-5 算法进行改进,增加其算法的识别精度和训练效率。
3 基于LeNet-5 算法改进
3.1 改进后的的模型
为提高Lenet-5 算法的识别精度和特征提取能力,在该算法中每层卷积中增加卷积核的数量,并且加入随机抽样算法和自适应矩估计优化算法[6],防止模型出现过拟合并且增加模型收敛速度,提高学习效率。
文中基于LeNet-5 改进后的层次结构如图1 所示,整体上通过两个卷积层,两个池化层,两个全连接层,一个输入层和一个输出层组成。数据集中的数据基本是RGB的彩色图像,共有三个通道,所以基于LeNet-5 改进参数设置,每一个卷积层,池化层,全链接层都有不同的参数,算法中第一、二层卷积分别使用42、84 个5*5 大小的卷积核对输入数据进行卷积,采取边缘填充策略确保信息完整,算法的池化层中通过2*2 大小的窗口进行最大池化,降低数据的维数,避免过拟合。本文方法在卷积层中增加了卷积核的个数,以便识别出图像中更多的特征信息,同时采用最大池化加快迭代速度。
图1 本文改进后的算法结构
3.2 基于随机抽样法防止过拟合
本文基于LeNet-5 模型改进的算法具有一定的网络模型深度,可以更好地提取图像中的特征。但是,随着网络模型的深度增加,训练的参数增多,迭代次数不断增加,在训练模型的时候非常容易出现过拟合的情况。在训练过程中,模型识别验证数据集的精度会达到一个最大值,网络模型的参数往往达到了局部最优,在这之后识别精度会出现下降,这时候就出现过拟合。
在分类问题中,如果模型太过简单或是训练集数据量太少,这时会导致欠拟合出现,使得模型识别图像特征时不准确,有较大误差;如果模型较为复杂,层次较深,同时训练集的数据不够充分,就会出现过拟合,在训练时对测试集和验证集识别时会有较高的准确率,但是识别新的数据图像时识别准确率较低。在正确拟合中,虽然在识别分类时会出现一些偏差,但是可以使模型有更大的泛化能力,即对未知数据的识别分类精度会更高。在深度学习中,我们都是通过训练集中的数据来学习模型,所以对未知数据的识别,即泛化能力,更加重要,而不是仅仅与训练集中的数据完全拟合。
本文改进后的算法中选择随机抽样法来解决过拟合问题。在改进后的模型进行训练时,通过随机抽样函数随机剔除一部分神经元,被扔掉的神经元不在网络中计算,也不更新权值,如图2 所示。在模型最后对输入的图像进行分类时,每一次都不会只依靠特定的神经元进行分类,从而防止过拟合。本文在模型的最后两层全链接中均加入随机抽样函数,每一层随机剔除上一层中一半神经元。
图2 全连接层中随机抽样法示意图
3.3 自适应矩估计优化算法
在卷积神经网络中为了减小损失函数,通常使用优化算法来改善训练策略。目前常用的优化算法通常是梯度下降算法。梯度下降算法虽然计算复杂度低,只需计算目标函数的一阶雅可比,但是梯度下降法过于贪心不能保证收敛到全局最优解,反而增加了迭代次数。针对上述问题,本文采用自适应矩估计优化算法。该算法训练时不同参数都会有相对应的学习率,其本质是利用梯度来更新模型中的参数。自适应矩估计优化算法与其他梯度下降的优化算法相比,其学习效率更加有效,收敛速度的更快。
自适应矩估计优化算法会保存一个先前指数衰减的平方梯度νt,即二阶矩估计,还会保存先前梯度的指数衰减均值mt,即一阶矩估计,并计算的νt和mt偏差,其公式如下:
βt1表示一阶矩估计的指数衰减因子,其默认取值为0.9;βt2表示二阶矩估计的指数衰减因子,其默认取值为0.9;ò 表示一个无穷小量。
4 实验结果与分析
4.1 实验环境与实验数据
算法测试环境为Windows10 64 位系统,CPU 为Intel Core i7-9700K,显卡为Nvidia GeForce RTX 2060,内存为32GB,深度学习框架为tensorflow1.9.0[7]。
实验数据采用比利时交通数据集(BelgiumTSC)[8],其中包括62 类交通标志。比利时交通数据集中分为训练数据集和测试数据集,训练集中有62 类交通标志,共有4575 张交通标志图像,测试集中有53 类交通标志,共有2516 张交通标志图像。
主要技术流程如图3 所示,首先获取数据集,下载比利时交通标志数据集,并其进行预处理;其次进行环境搭建,配置GPU 驱动同时安装tensorflow框架,并测试环境;然后根据本文第3 节内容,对LeNet-5 算法进行改进,加入随机抽样算法防止出现过拟合,并且使用自适应矩估计优化算法加快损失函数收敛;最后进行实验结果分析,分析算法的精确率和损失函数,同时通过测试集对改进后的算法进行交通标志识别测试。
图3 整体技术流程
4.2 实验结果与分析
在训练中,输入图像时采用分批次输入,每次输入25 张交通标志图像。在训练模型的参数设置中,训练的迭代总次数为1500 次,在每一次的迭代中都会将训练集中的数据放入算法中训练模型。如图4 所示,迭代次数在1 到270 之间随着迭代次数的增加模型识别交通标志的精确度迅速提高,随着迭代次数增加,精确度不断提升,在迭代次数在990 次之后渐渐变得平缓,最终识别精度确定在95.4%左右。
图4 改进后网络分类精确度随迭代次数变化图
损失函数随着迭代次数增加的变化趋势,如图5 所示。随着迭代次数的增加,损失函数整体上不断减小,最终趋于收敛。从图5 中可以看到,迭代次数在0 到735 之间,损失函数下降速度较快,但是波动也很快,在迭代次数达到1215 次之后,下降的速度趋于平缓,最后收敛于3.16 左右。
图5 改进后网络交叉熵损失函数随迭代次数变化图
BelgiumTSC 的测试集中共用53 类交通标志的图像,共有2516 张图像,通过本文改进后的网络进行识别,正确识别2293 张图像,识别的总精度为91.14%。其中有十五类交通标志识别率达到100%,其余类别的交通标志正确识别率如图6 所示,其中交通标志类别为“2”的识别率最低,只有14.29%。
图6 改进后识别交通标志的精度
在识别率达到100%的这十五类交通标志中,有八类标志的训练集中训练数据小于50 张,剩下七类交通标志的训练集数量都非常充足。训练集中的数据对模型识别精度的影响非常大,在某两类交通标志相似度非常高时。模型很难提从训练数据少的交通数据集中提取特征。虽然模型的损失函数趋于收敛,但是某些相似度高的交通标志无法正确识别,会导致损失函数过大,这需要相应补充该类别的训练数据。
5 结论
本文基于LeNet-5 算法改进网络具有很好的稳定性,在训练时的识别精度较高,其收敛速度快,训练效率高。针对交通标志的图像特征,在算法中加入于随机抽样算法防止过拟合现象,使用自适应矩估计算法优化模型,使得改进后的算法更适合于交通标志的识别。通过训练后的模型对比利时交通数据集中的测试集进行分类,分类后的总体效果带到预期效果,其正确分类率达到91.14%,基于LeNet-5 改进后网络在对交通标识识别方面具有良好的稳定性和可靠性。在之后的研究中,将进一步研究提高模型识别交通标识的精度和速度,增强识别的稳定性。