APP下载

基于CNN和Bagging集成的交通标志识别

2022-08-08晟,宋

关键词:交通标志分类器类别

田 晟,宋 霖

(华南理工大学 土木与交通学院,广东 广州 510641)

近年来,自动驾驶领域的研究迅速发展,交通标志识别作为智能交通系统的重要研究方向之一,其准确性对于自动驾驶的安全性至关重要,对交通标志进行特征提取并通过分类器识别可以进一步提高行车安全。交通标志早期的主要识别方法有模板匹配法——Alam等[1]通过传统的模板匹配法简单快速实现交通标志识别,通过模板在图像像素点上进行搜索匹配。基于机器学习的方法在图像识别领域也取得了较大进展,主要采用人工进行特征提取和机器学习相结合的方法。交通标志特征主要有SIFT(scale-invariant feature transform)、HOG(histogram of oriented gradient)、LBP(local binary patterns)等[2],人工实现特征提取用于去除无用信息,并将这些特征输入分类器进行识别,如支持向量机、K近邻(KNearest Neighbor)、随机森林、Adaboost(adaptive boosting)等[3-8]基于机器学习的算法。韩习习等[9]提出一种多特征融合并利用支持向量机分类的方法,Da Silva等[10]的随机森林法,Xu等[11]的Adaboost方法均取得了较好的识别效果,但都需一定的经验知识。

深度学习无需较多人工处理,网络提取的深度特征可以更全面适应于交通标志,识别准确率高,近些年在目标分割、目标检测、目标分类[12-15]等领域发展较为迅速。Li等[16]利用一种多层特征融合的方法,将全局特征和局部特征进行融合,以此改进Lenet网络,准确率相比未改进Lenet提高了3.03%;Stallkamp等[17]在德国交通标志数据库GTSRB(German traffic sign benchmarks)中提出的卷积神经网络(CNN)较人眼识别率提高了0.24%;Zhang等[18]从预测精度和时间出发,提出轻量级深度学习模型教师网络和学生网络,且可应用于移动嵌入式设备;Zhou等[19]在GTSRB数据集上,在卷积层后增加池化和Dropout机制以改善单个VGG模型;He等[20]提出ResNet模型以用于解决模型训练过程中随着网络层数加深导致的预测效果退化现象;邓文轩等[21]引入注意力机制提出图像分类降维方法;Gámez Serna等[22]汇总了欧洲多国的交通标志数据集,在此数据集的基础上比较LeNet5、IDSIA、URV等5种卷积神经网络架构的分类性能;Xu等[23]用直方图均衡化方法增强图像细节,并利用卷积神经网络实现交通标志识别;Sapijaszko等[24]利用DWT和DCT 2种变换实现特征提取,利用多层感知机在TSRD(traffic sign recogntion database)数据集上的最优准确率达到94.90%。公开模型通过大量实验得到,对数据进行特征提取进而完成相应的任务,目前单个模型的预测已较为成熟,对模型集成的方法还有待进一步深入。

集成学习可以实现分类器结合,从而提升分类效果,主要存在串行和并行集成2类,串行的代表算法是Boosting系列算法,并行的主要代表是Bagging和随机森林(random forest),都具有较好的数据适应性。邝先验等[25]基于Adaboost算法实现混合交通道路上车辆的识别;Tong等[26]采取的CNN-SVM方法速度快,准确率较高;张功国等[27]利用SVM分类器代替Softmax,将改进的卷积神经网络与SVM分类器集成,实现单幅交通标志测试时间仅1.32 ms;屈治华等[28]利用CapsNet作为基分类器构建Bagging集成框架,以提升算法的整体预测精度;Palak等[29]对目前存在的主要方法进行总结,并指出还存在更多模型方法可进行实验尝试,在部分小批量数据集上迁移学习效果并不比其他模型的效果更好。为进一步改善类别预测精度,本文将改进的卷积神经网络应用于交通标志特征提取,利用Bagging集成分类器实现交通标志分类,得到一个用于道路交通标志识别较新的参考方案。

1 改进的卷积神经网络

卷积神经网络是通过模拟生物神经系统进行特殊设计的一种网络模型,主要包含输入层、卷积层、池化层、全连接层以及输出层,在图像特征提取过程中不需要人工思考具体特征,可直接用于二维图像处理,可作用于原始输入数据,例如图像的像素值。卷积神经网络与其他神经网络最大的区别是在整个网络结构中引入卷积层,可以作为中间隐层的特征输入,在图像分类问题中,一般输入主要是图像尺寸和通道数的乘积,输出层神经元的节点个数是根据具体任务设计的,输出层可以是单个或多个分类器的集成。

在机器学习领域,大部分任务都存在一定的相关性,因此通过某种方式将已有模型的参数载入新模型,优化模型学习效率,实现相应项目需求存在一定的参考价值。在交通标志识别任务中,考虑加载大型数据集ImageNet上训练好的特征参数,将已有参数作为初始训练权重,并将图像数据归一化至[0,1],消除部分样本数据的影响,进而训练整个模型,实现交通标志识别领域的迁移学习。本文采用VGG16和ResNet50进行迁移学习对比。

为准确估计交通标志类别,通过将浅层网络处采用2层卷积层,利用最大池化进行下采样,添加Dropout随机失活某些神经元节点,以改进最早提出的卷积神经网络Lenet模型。为寻求应用于中小型数据集较好的网络模型。改进的网络模型设计共包含4层卷积层、2层最大池化层、1层flatten展平层、2层全连接层、1层Softmax分类层,采用交叉熵损失函数和Adam优化器用于模型训练。为实现不同分类器的分类效果对比测试,可提取全连接层的特征用于其他分类器测试,提出的卷积神经网络结构如图1所示。

图1 卷积神经网络基本结构

2 Bagging模型融合

2.1 集成学习

集成学习通过某种策略结合多个个体学习器提高整体的泛化性能以完成学习任务。在机器学习分类任务中,常用的集成学习方法主要有串行和并行2种方式,目前较流行的集成方法有Boosting、Bagging、Stacking等。串行的Boosting提升算法主要有通过更改每一次迭代过程中实例的权重实现更好地拟合,和使用新的分类器去拟合之前分类器预测残差的方法2类;由于在测试过程中多数模型过拟合,为降低数据噪声的影响,本文采用装袋法(Bagging),即在CNN网络提取的特征条件下,采用软投票机制,将分类器估算的类别概率在所有单个分类器上求平均得出概率最高的类别,以聚合不同的分类器进行类别预测。

集成学习的预测结果一般优于单个预测器,常用的集成方式是训练一组单个决策树分类器并通过投票机制得到最终预测结果。集成的个体分类器可以是同种类型的,也可以集成不同类型的学习器。为进一步探索有效方案,设计一种异质集成方法,训练集样本采取交通标志的图像数据,每轮利用有放回抽样方式从样本中选取数据,分别对单个分类器进行训练,且采用并行集成方式实现最终类别概率预测。并行集成结构如图2所示。

图2 Bagging集成基本结构

Bagging集成用于不同种类的分类器上,利用有样本放回的采样方式对样本特征数据实现多次采样,通过模型聚合以降低单个分类器较高的方差,获得比单个分类器更好的类别预测性能。

2.2 多项Logistic回归

Logistic回归模型在二分类及多分类问题上目前已经得到十分广泛的应用,具有计算速度快、实现简单、稳健性良好的特点,对数据条件要求较低,但较容易欠拟合。该模型主要是利用最大似然估计法对模型参数进行估计,通过修改Logistic损失函数以得到Logistic回归的多分类版本,回归模型可以表示为

(1)

式中:Z=β0+β1X1+ …+βnXn;β0表示常数项,β1,β2, …,βn表示回归系数,X1,X2, …,Xn表示特征变量。

2.3 K近邻

K近邻算法根据距离待预测样本最近的K个邻居样本的类别,获取待预测样本类别的最大概率值。首先通过欧式距离公式计算出K个邻居样本与待预测样本A的距离,计算公式可以表示为

(2)

式中:p是样本特征向量的维度;x和y是2个不同的特征向量。然后取距离样本最近K个点记为B,最终计算B中样本的类别预测数量,取预测类别概率最大的作为样本A的类别预测结果。该分类算法的理论较为成熟,具有对异常值不敏感的优点,但其计算复杂性高,空间复杂度较高。

2.4 SVM分类器

1995年,Vapnik最早提出支持向量机(SVM),通过划分超平面以区分样本类别,具有良好的泛化能力。在提出的方法中,CNN全连接层的Softmax激活函数改用SVM作为最终分类器之一。非线性SVM将CNN层输出的特征数据作为输入,构建最大软间隔分离超平面,在高维特征空间里完成最终的交通标志分类,优化目标的数学模型为:

(3)

式中:C为引入的惩罚参数,ξi为松弛变量,xi为第i个样本点的坐标,yi为第i个样本点的类别,w和b为待求解的参数,N为样本点的总数。K(xi,xj)=Φ(xi)×Φ(xj)为核函数,以替换线性支持向量机对偶问题形式中的内积,将线性支持向量机扩展到非线性支持向量机,得到对偶问题是

(4)

式中:α为拉格朗日乘子。首先通过偏导求解对偶问题得到最优参数α*,然后求原始问题最优解w*和b*,并通过使用高斯径向基核函数K(xi,xj)=exp(-‖xi-xj‖2/2σ2)替代内积,以分类决策函数判别样本x的类别,构建的分类决策函数为

(5)

2.5 基于CNN和Bagging集成算法

本文提出一种基于CNN网络和Bagging模型融合的交通标志识别算法。该算法面向实际工程应用,通过尽量减少神经网络中卷积层的数量提高运行速度,利用CNN网络提取特征,构建基于Bagging的集成学习模型,所有进行实验的模型均采用交叉熵函数作为损失函数。

在经过预处理的交通标志图像数据集上,通过卷积神经网络提取特征,以Bagging方式集成多项Logistic、K近邻和SVM分类器实现对交通标志的识别,利用不同分类模型各自优势,对多个分类器实现投票表决,保存各模型的参数和预测结果,实现对模型的效果评估,实验表明利用提取的特征进行多模型集成分类时在验证集和测试集上有较好的效果,其中交通标志识别算法的流程见图3。

图3 基于CNN-Bagging的交通标志识别算法流程

2.6 评价指标

为了确定模型不同时期的效果,采用类别预测的准确率(Accuracy)、损失值(Loss)和调和平均数(F1-Score)作为评价指标。

1)准确率的计算公式可以表示为

(6)

式中:NTP指预测标签和真实标签都为正例;NTN指预测标签和真实标签都为反例;NFN是指预测的是反例而实际是正例;NFP是指预测是正例而实际是反例。

2)损失值函数主要是将真实类别做独热编码,并与预测类别概率的对数值相乘,对每个类别求和后取相反值,具体计算公式为

(7)

式中:i是第i个样本;j是第j个类;t是真实标签;p是卷积神经网络分类层求出的第j个类的预测值。

3)F1-Score为预测准确率和召回率的调和平均值,范围是0~1,数值越大表明模型效果越好,具体计算公式为

(8)

式中:ηPrecision为预测准确率,指模型预测为正样本的结果中,实际标签是正样本所占的百分比;ηRecall指召回率,指所有实际标签为正样本的结果中,预测为正样本所占的百分比。

3 实验结果与分析

3.1 数据分析

本文采用公开的国内交通标志数据库CTSD(Chinese traffic sign database)中用于交通标志识别的数据集TSRD(traffic sign recogntion database),该数据库共包含6 164幅交通标志图像,其中,训练数据库包含4 170张不同种类的交通标志图像,测试集交通标志图像共1 994张。该数据集主要由警告标志、指示标志及禁令标志组成,各标志的尺寸大小不一致,数据库中所有图像都标注了符号和类别信息。利用Python随机选取数据库中24张图像,显示出此数据库的部分交通标志见图4。

图4 TSRD部分交通标志

TSRD交通标志数据库共有58个类别,具体每个类别的交通标志种类数见图5。图5中横轴是指交通标志类别所对应的编号种类,如编号数0指限速5 km/h,编号数30是指自行车道,编号数50是指有人看守铁路道口交通标志,纵轴是指每个类别交通标志的图像数量,可以看出训练集中第9类、第25类和第53类的图像数量较少,第28个类别机动车道指示牌数据量最多,其他类别的标志数量明显少于该类,故需对部分图像数据进行扩充处理,得到更加大的数据库用于模型训练。

图5 TSRD训练集交通标志种类分布

图6是测试集的交通标志种类分布图,测试集的交通标志图像分布于训练集大致相同,总测试集数量约为训练集的1/2,训练集和测试集的比例分布存在一定优化空间,在图像预处理时需要加强训练集,以实现网络提取适用于最终测试集评估的特征。

图6 TSRD测试集交通标志种类分布

3.2 图像预处理

由于交通标志的类别数不均衡,测试集中部分类别的交通标志数据集样本较少,为获取更多图像数据,防止模型过拟合,通过网络爬虫技术爬取对应数量较少的交通标志以实现数据集的扩充。首先设置初始URL(uniform resource locator),并修改请求的headers伪装成浏览器访问,正则解析以匹配图像的具体内容,利用Requests模块获取图像保存至文件夹,最终通过人工方式筛选所需图像,爬取网络交通标志图像的流程如图7所示。

图7 交通标志图像爬虫流程

在尝试使用图像增强如图像偏移、随机缩放图像范围、设置剪切角、随机旋转操作对训练集进行扩充之后,将其应用在模型训练过程中反而出现预测效果变差的现象,为了不丢失图像颜色信息,以及防止翻转图像产生一些不必要的错误信息,主要对图像进行缩放变换以进一步扩充数据集,实现交通标志图像数据集的增强,以改善图像的样本多样性,同时经过数据集归一化处理可以适应于神经网络训练,通过Python语言随机选取一些图像进行展示,其中部分图片的处理效果如图8所示。

图8 图像缩放变换

在进行迁移学习时需适当调节输入特征尺寸以满足模型训练条件,根据keras官方网站上的说明,VGG16和ResNet50模型的图像输入尺寸不小于32×32,为保证公平性,将所有模型的输入图像大小设置为32×32,实验时将图像的尺寸缩放为迁移学习模型的网络输入标准尺寸,在数据输入之前,还需要对图像数据进行归一化处理,将所有的像素值缩放到同一个尺度,以使图像在经过相同参数的归一化处理后变为相同形式标准图像,卷积神经网络得以提取更加稳定的图像特征。

总之,通过网络爬虫对不均匀的TSRD数据集进行扩充,主要爬取部分数量特别少的标志类别,然后调用keras.preprocessing.image模块中的ImageDataGenerator类,以图像缩放变换为主要方法实现数据集的进一步扩充,防止模型训练可能产生的拟合不足现象,数据扩充后具体训练部分每个类别的交通标志如图9所示。

图9 TSRD扩充训练集交通标志种类分布

3.3 模型训练

本实验使用基于Python语言的Keras深度学习框架,硬件环境CPU为 Intel(R)Core(TM)i5-9400F@2.90 GHz,GPU为 NVIDIA GeForce GTX 1050 Ti显卡,操作系统为Windows10,Python 版本为3.8.3,利用Pycharm集成开发环境进行编译,实验结果曲线采用matplotlib模块可视化。

为了减少网络训练所用时间,将CNN图像输入尺寸大小利用resize函数统一为32×32×3的RGB(red-green-blue)3通道彩色图像,用卷积层提取特征作为基分类器的输入,通过调用机器学习库中sklearn模块对数据集划分,在扩充训练集上将80%的数据集用于模型训练,20%作为验证。为保障训练的模型性能,数据划分过程中将数据集随机打乱,其中特征数据的数据结构为数组形式,同时将标签进行One-Hot编码以适应模型训练结构。

CNN网络模型设计的各层参数见表1,调用Keras深度学习框架下的函数构建模型,通过callbacks回调函数保存训练过程中每一个训练时期的模型参数文件用于测试集的测试,同时为防止模型过拟合,通过网络正则化,采用Dropout方式随机失活网络模型中的部分神经元,设置卷积层的随机丢弃概率值为0.25,密集连接层为0.5,为减少运行内存消耗,将单次训练批次大小设置为32,另外训练次数epoch设置为50。

表1 CNN网络模型各层参数描述

模型训练过程中,将卷积神经网络最后一层卷积层提取的512维特征向量作为多项Logistic、K近邻和SVM的输入,通过Bagging集成方式以提高单个模型的泛化能力,但此种措施训练时间较长,因此改用最后一层全连接层未经Softmax激活的输出特征,作为最终用于分类器投票集成的特征输入。通过在训练集上对不同分类器集成的大量对比实验,最终选取3个基分类器进行装袋法的模型融合实现各分类器优点的充分利用;另外,用于对比的网络模型VGG16和ResNet50输入图像大小均为32×32×3,VGG16所有卷积核大小都是一致的,相对于Alexnet增加了网络深度用以提升预测性能,网络层级共16层,ResNet50是一个共50层的残差卷积网络,最主要的改进是残差块设计,通过设置卷积步长实现特征矩阵的大小变换,以1×1卷积核实现特征矩阵的维度变换。由于TSRD数据集的样本量较小,采取已有的在ImageNet数据集上训练得到的模型,根据类别数量修改最后一层参数,并对整个网络进行训练是一种高效的学习方式。本文将基于卷积神经网络的Bagging融合模型和分别以VGG16、ResNet50网络作为基础架构的经典模型进行比较,用以验证该模型的性能。

为比较基于卷积神经网络的Bagging融合模型与其他网络的性能,在Win10环境下训练4个网络模型。不同模型训练过程中验证集训练准确率和损失值如图10和图11所示。可以看出,随着训练次数不断增加,模型在训练过程验证集上的预测准确率总体上呈现上升趋势,交叉熵损失值在前30个时期下降后大部分数值都趋于0,故可得出各模型在交通标志数据集上的训练过程中均取得了较好的拟合效果。

图10 训练过程验证集准确率

图11 训练过程验证集损失值

3.4 模型实验性能

本文提出的方法主要根据多次不同实验得到预测结果,通过保留预测结果较好的分类器模型,实现对多个分类器中的参数选取,其中,多项Logistic回归模型的优化算法采取liblinear,随机种子数设置为42,作为分类器1用于类别预测;K近邻方法作为分类器2,方法中的参数K值根据人工探索设定为5;SVM分类器作为分类器3,核函数采用默认的高斯径向基函数,该函数可将数据映射至高维空间,在高维空间中解决在低维空间中出现的线性不可分问题。在分类器确定的条件下,最终通过Voting Classifier机制,设置分类器的权重比为2∶1∶1,以实现分类器的最终输出结果融合,图12和图13为4个网络模型在测试集上的准确率和交叉熵损失值对比。

图13 测试集预测损失值

从图12可以看出,在曲线相对稳定后测试集上的准确率低于验证集,出现明显的过拟合现象,CNN网络和CNN-Bagging集成网络在前期的预测效果相对较低,但随着迭代次数的增加,预测准确率不断上升。与其他基础神经网络结构相比,所提出的CNN-Bagging集成模型对交通标志图像的识别准确率最高,更适用于小型交通标志数据集的学习。

图12 测试集预测准确率

从图13可以看出,测试集预测损失值随着迭代次数的不断增加,损失值开始逐渐下降,具有更好的拟合效果。图14是测试集的F1-Score曲线,与准确率曲线的走势大致相同,同样发现CNN-Bagging集成模型的效果优于其他模型,实验通过已保存的预测效果最优模型,得到了最优模型下的准确率和损失值,并以最优的模型预测结果作为交通标志分类任务的评价指标,各模型的具体结果见表2。

图14 测试集F1-Score值

表2 模型最优解

从表2可以看出,基于改进卷积神经网络和Bagging模型融合相对经典的神经网络模型VGG16和ResNet50在较小的交通标志数据集上有较大的性能提升,改进的模型、未改进的CNN模型、ResNet和VGGNet迁移学习的预测准确率分别为93.00%、81.01%、82.55%和61.45%。本文提出的融合模型在TSRD交通标志数据库的效果比VGG16和ResNet50更好的原因为:1)改进的网络融合模型结合了平面卷积神经网络和机器学习分类器及集成模型的优点,具有结构简单且预测结果较准确的特点。2)经典VGG16和ResNet50网络是用于实现大型数据库的相应任务,其网络结构一般较复杂而且较深,在对大多数中小型数据库进行实验时,通常会出现过拟合现象,导致在测试集上的分类预测效果较低。另外,此数据集的优化还存在进一步需要改进的地方,后续将尝试用裁剪方式或者较流行的算法弱化数据集的背景部分,强化图像数据的前景部分。模型还存在一定的改进空间,特别是用于提取特征的基础模型,在后续研究中需要进一步提升模型性能,以提升整体预测准确率。

4 结论与展望

交通标志的识别准确率受到多种因素影响,不同的交通标志数据集对模型训练的效果存在较大影响,为进一步提升识别准确率,防止模型过拟合,利用网络爬虫和图像增强方式对原始数据集进行扩充,通过添加Dropout层随机失活部分神经元,使用Relu激活函数代替Sigmoid以解决可能的梯度消失问题,减少整个模型的计算量。本文利用改进卷积神经网络的方法实现高质量图像特征自动提取,并通过Bagging模型融合对公开的交通标志数据库进行分类识别,以便为自动驾驶交通标志识别提供一定的可参考方案。在Win10环境下实验发现,与经典神经网络相比,改进的方法在交通标志识别数据库上取得较好效果,测试集准确率达到了93.00%,相对于未改进的卷积模型提升了11.99个百分点,说明改进的方法有助于进一步提升类别的识别准确率。

由于交通标志数据库中一些图片存在雨雾等自然天气及其他意外损坏情况,在训练时未对特定图像进行去雾等预处理操作,采取的是较为原始的图像数据,故对预测精度存在一定影响,后续将考虑进一步加强前期数据预处理的工作。国内外学者在实时交通图像方面的研究较少,对于如何实现快速定位和实时分类以实现自动驾驶的需求还存在一定挑战,研究方法种类众多,在实时道路的环境中实现快速分类任务也是未来重要研究方向之一。

猜你喜欢

交通标志分类器类别
基于双向特征融合的交通标志识别
壮字喃字同形字的三种类别及简要分析
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
西夏刻本中小装饰的类别及流变
交通标志小课堂
多类别复合资源的空间匹配
基于层次化分类器的遥感图像飞机目标检测
我们欢迎你!
一种基于置换的组合分类器剪枝方法