基于改进Inception-ResNet-v2的城市交通路面状态识别算法

2022-03-24 04:01王佳黄德启郭鑫杨路明
科学技术与工程 2022年6期
关键词:卷积路面分类

王佳, 黄德启, 郭鑫, 杨路明

(新疆大学电气工程学院, 乌鲁木齐 830047)

随着机动车保有量的增加,交通事故的发生率也在持续上升。其中一个很重要的因素是恶劣的天气造就了不同的路面状态(如干燥、潮湿、积雪、结冰等),使得路面与轮胎之间的附着系数发生突变,大大降低了路面的抗滑性能[1],造成了大量的交通事故。不同的路面状态对应不同的峰值附着系数,而峰值附着系数是估算汽车制动距离的关键参数[2]。因此,识别路面状态对于辅助驾驶员安全驾驶是至关重要的。此外,目前研究的自动驾驶技术需要分析道路场景,识别当前的路面状态信息,更好的分类模型可以有效提高自动驾驶的安全水平。目前,国内外对于路面状态的识别方法主要有硬件传感技术、基于机器视觉的图像处理技术以及机器学习的方法。Sara Rosendahl等[3]针对多种不同的路况,采用近红外摄像系统进行路面状态识别的研究,先使用卤素灯和三种不同波长的照明模式照射地面,然后对三种不同波长信号进行分析,从而实现路面状态的分类。Gui等[4]提出了一种基于双传感器的道路状况探测器,该探测器是基于谐振技术的光学传感器和压电传感器的组合。通过有限元分析研究压电传感器的幅频响应特性,建立了光功率计算模型,评估不同条件下光学传感器的输出电压,以此来分析路面状况。Cheng等[5]提出了一种改进的激活函数,这种改进的激活函数使得分类模型具有更好的泛化能力和分类性能。Zhao等[6]根据原始图像大小,对图像进行分割,提取9维颜色特征向量和4维纹理特征向量,构建路面状态特征数据库。以支持向量机为基础分类器,并采用多种方法优化分类模型,对于不同场景下的路面状态识别取得了不错的效果。Almazan等[7]结合空间先验知识,利用消失点和地平线分割路面,取得了更好的路面状态分类性能。

在上述文献的路面状态识别方法中,基于硬件传感技术的识别方法在前期安装系统以及后期维护的成本都比较大,而且在不同的环境条件下硬件传感器的性能会受到干扰。基于传统机器视觉的图像处理技术比较复杂,泛化性能不高。与传统的路面状态识别技术相比,基于深度学习的路面状态识别成本低,时效性能好,泛化性能高。

针对路面状态识别存在的问题,现提出一种改进Inception-ResNet-v2的路面状态识别方法。通过在Inception-ResNet-v2网络中引入注意力机制以及特征融合策略提高模型的特征提取能力,采用全卷积结构优化网络模型,并基于学习率更新等策略,提高模型的分类准确率,从而实现路面状态图像的精准识别。

1 算法设计

1.1 Inception-Resnet-v2网络

Inception网络起始于Google 2014年提出的GoogLeNet[8],并推出了多个Inception结构的改良版。最开始的Inception-v1主要采用不同尺度的卷积核进行特征提取,并采用1×1的卷积降低特征数量。由于在训练模型的过程中,前面一层参数的变化会导致后面每一层的输入分布不断发生变化,因此Inception-v2引入了BN[9]层,将每一层的输出都规范化。Inception-v3[10]在Inception-v2的基础上提出了“因子化”,提出这一理念的主要原因是为了减少模型的参数量。Inception-v4[11]对原来的版本进行了梳理,Stem模块使用了不对称卷积和池化层的并行结构,可以保证在信息损失足够小的情况下,降低计算量。Inception-ResNet网络是在Inception模块中引入了ResNet的残差结构,共有两个版本,分为Inception-Resnet-v1网络和Inception-ResNet-v2网络。Inception-ResNet-v1网络是在Inception-v3中加入残差思想得到的,而Inception-ResNet-v2网络是把残差思想融入Inception-v4网络得到的。Inception-ResNet-v2是由Stem、Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C、Reduction-A和Reduction-B几种模块堆叠而成。Inception-Resnet-v2通过对上一层的输入使用多个不同尺寸的卷积核进行操作,一方面增加了网络的宽度,另一方面增加了网络对尺度的适应性,其结构如图1所示。

Input为输入层;Average Pooling为平均池化层;Dropout为随机失活层; Softmax表示用Softmax分类器分类图1 Inception-ResNet-v2网络结构Fig.1 Network structure of Inception-ResNet-v2

1.2 注意力机制

注意力机制的本质是一种通过模型自主学习出一组权重系数,并以动态加权的方式来强调感兴趣的区域,抑制不相关背景区域的机制。由于路面状态图像含噪声比较多,且易受到光照等因素的影响。干燥路面图像中阴影比较多的时候,容易错分成潮湿路面。初降雪路面、积雪路面和压实雪路面的分类,涉及细粒度图像分类,这就需要网络提取更加有用的信息,强调关键信息,从而做出更加精准的判断。提出在模型的高层融入SENet(squeeze-and-excitation networks)[12]注意力机制,如图2所示。先进行Squeeze操作,对输入大小为C×H×W(C为通道数,H和W为图像的高和宽)的路面状态特征图通过全局平均池化压缩成尺寸大小为1×1×C的特征图。然后进行Excitation操作,为了限制模型复杂度以及辅助泛化,这一步操作使用两个全连接层(fully connected layer, FC),对输入维度先降维再升维,最后通过Sigmoid函数把权重归一化,将所得权重逐通道加权到原来的输入特征图上,得到输出。

Ftr为传统的卷积结构;X和U为Ftr的输入和输出;C、H、W为图像的通道数、高、宽;Fsq为Squeeze操作;Fex为Excitation操 作;Fscale为对特征图进行重标定;X′为最终输出图2 SENet模型结构Fig.2 Model structure of SENet

由于模型高层提取到的路面特征信息特异性比较高,故将SENet模型嵌入到Inception-ResNet-v2网络的高层,也就是Inception-ResNet-C模块之中,Inception-ResNet-C模块总共有三个分支,第一个分支未经过处理直接输出;第二个分支经过一次卷积核大小为1×1,输出通道为192的卷积处理;第三个分支先后经过卷积核大小为1×1,输出通道分别为192、224、256的三次卷积处理,然后把第二和第三分支的结果堆叠后进行一次卷积核大小为1×1的卷积操作,再通过一个SENet模块,最后把所得输出与第一分支相加,从而得到新的模块SE-Inception-ResNet-C,结构如图3所示。

Conv表示卷积操作,括号内的参数表示卷积的输出通道数图3 SE-Inception-ResNet-C模块Fig.3 Module of SE-Inception-ResNet-C

1.3 全卷积结构

全卷积网络[13]是用卷积层来代替卷积神经网络中的全连接层。全卷积网络最初是用于图像分割任务,之后慢慢在计算机视觉领域的各种问题上都得到应用。

全连接层和卷积层下一层的输入都是由上一层的输出与参数矩阵相乘得到的,所以它们之间是可以互相转换的。全连接层使用的是图像的全局信息,它的权重是固定不变的,其中的每一个节点都与上一层中的所有节点相连,且对于模型的输入图像尺寸是固定的。卷积层提取的是局部特征,不需要固定输入图片的尺寸,因为它是在局部区域进行窗口滑动提取特征信息的。因此,将全连接层换成卷积层之后,不但可以保持图像的空间结构,而且能够使网络接收任意尺度的图像。

1.4 特征融合机制

在路面状态识别中,当光照不均匀或是光照比较强烈时会给路面状态识别增加一定的难度,比如干燥和潮湿路面在光照的影响之下,这两种路面状态的相似度是很高的。除此之外,随着模型深度的加深,特征提取过程中可能会忽略一些重要特征信息,使得模型的分类效果变差。因此,将Inception-ResNet-v2算法中的第5个Inception-ResNet-A模块、第10个Inception-ResNet-B模块和第5个SE-Inception-ResNet-C模块的输出特征图先经过全局平均池化,然后将三个阶段的特征进行特征融合,得到更加丰富的特征,增强了模型的泛化性能。

1.5 改进模型

首先,在Inception-ResNet-v2网络的基础上,引入注意力机制和全卷积结构的思想,加入SENet结构,并用卷积层代替全连接层,优化网络模型,并将模型的低层、中间层和高层的特征进行融合,提高模型的特征提取能力,改进模型如图4所示。

Input为输入层;Global Average Pooling为全局平均池化层; concat表示拼接操作;Softmax表示采用Softmax分类器分类图4 改进的模型结构Fig.4 Improved model structure

本文算法具体流程如下。

(1)输入图像尺寸为3×299×299,通过一个Stem模块,用不对称卷积和池化操作的并行结构提取特征信息,得到一个大小为35×35×320的特征图。

(2)把流程(1)得到的特征图作为Inception-ResNet-A模块的输入,通过5个Inception-ResNet-A模块的堆叠,再通过Reduction-A缩放块,得到大小为17×17×1 088的特征图。

(3)将流程(2)得到的特征图作为Inception-ResNet-B模块的输入,把10个Inception-ResNet-B模块的堆叠起来,然后通过一个Reduction-B缩放块,得到大小为8×8×2 080的特征图。

(4)把流程(3)中得到的特征图作为SE-Inception-ResNet-C模块的输入,通过5个SE-Inception-Resnet-C模块的堆叠,得到大小为8×8×2 080的特征图。

(5)分别将经过第5个Inception-ResNet-A模块、第10个Inception-ResNet-B模块和第5个SE-Inception-ResNet-C模块得到的特征图进行全局平均池化,把全局平均池化得到的张量输出通过concat进行融合。

(6)将融合后的特征张量输入Softmax进行分类。

2 实验及结果分析

2.1 实验平台

本文算法是在Win10系统下,利用Python语言,PyTorch深度学习框架完成,硬件环境为CPU Intel Core i5-9300H,内存16 GB,显卡Nvidia GeForce GTX 1660Ti。

2.2 实验数据集

主要对于干燥、潮湿、初降雪、积雪、压实雪和结冰6种路面状态图像进行识别。通过采集设备采集校园内不同天气状况下的路面状态图像,采集到的图片分辨率为3 264×2 448。由于图片分辨率太大并不适合作为模型的输入样本,故对原始图像进行压缩,压缩后图片的分辨率为400×400。对于数据量少的路面状态图像(如结冰路面)使用数据增强技术,通过翻转变化、改变亮度、尺度变换和添加椒盐噪声的方法扩充数据集。数据集中每种路面状态图片各1 000张,6种类别共计6 000张图片。在实验中,采用8∶1∶1的比例划分数据集,80%的路面状态图像作为训练集,10%的路面状态图像作为验证集,10%的路面状态图像作为测试集,图片样例如图5所示。

图5 数据集样例Fig.5 Sample of dataset

2.3 模型训练策略

为了使改进后的Inception-ResNet-v2模型达到更好的训练效果,采用以下的训练策略,如表1所示。

表1 训练策略Table 1 Strategies training

2.3.1 优化器

优化器的选择是构建、测试部署模型过程中关键的一环,深度学习中几乎所有流行的优化器都是基于梯度下降。目前常见的优化器包括随机梯度下降法SGD(stochastic gradient descent)、Adam(adaptive moment estimation)、Adagrad、RMSProp等。由于不合适的优化器会对训练任务造成极大的负面影响,且在同一训练任务中的表现是不同的。通过试验,发现训练任务使用Adam优化器时,会出现训练波动大、目标函数难以收敛的状况[14],Adam算法在某些情况下可能会不收敛。当采用随机梯度下降法时,明显可见波动小,故采用SGD算法。SGD算法以小批次数据为单位,计算一个批次的梯度,然后反向传播优化,有效承担了GPU等计算硬件的压力。但是SGD有个比较大的弊端,容易陷入局部最优解。为了有效解决陷入局部最优的问题,引入动量因子,即更新梯度时一定程度上保留之前更新的方向,同时利用当前批次的梯度进行微调,得到最终的梯度,增加了优化的稳定性,降低了陷入局部最优难以跳出的风险。

2.3.2 损失函数

路面状态识别问题是一个多分类问题,交叉熵损失函数是在分类问题中常用的一种损失函数,交叉熵能够衡量同一随机变量中的两个不同概率分布的差异程度,在机器学习中表现为真实概率分布与预测概率分布之间的差异。模型过拟合和过度自信是两个很常见的问题,为了解决这两个问题,在交叉熵损失函数中加入标签平滑。标签平滑[15]是一种改变目标变量的正则化技术,使得模型的预测结果不再仅为一个确定值。它在处理类别多、类别标签错分以及类别不平衡问题上具有突出的效果。所以将标签平滑融入交叉熵损失函数,得到标签平滑交叉熵损失函数,从而提高分类的准确率,该损失函数loss为

(1)

2.3.3 学习率调节

学习率(learning rate)是深度学习中非常重要的一个超参数,要使目标函数尽快收敛,调节学习率是至关重要的一步。如果学习率设置过大,可能会使损失函数跳过全局最优点,过小则会使损失函数的变化速度很慢,增加模型的收敛复杂度,合理地设置学习率才能使得目标函数更快收敛。由于路面状态图像较为复杂,当采用余弦退火策略调节学习率时,发现训练过程中会出现长时间的震荡现象,故采用指数衰减策略来控制学习率,在减缓震荡现象的同时,使得目标函数更快收敛,其学习率更新公式为

lr′=lr×grammaepoch

(2)

式(2)中:gramma为学习率调整倍数的底数;指数为epoch;lr为学习率初始值。

2.4 对比算法与评价指标

为了验证本文改进的Inception-ResNet-v2算法的优越性,将其与VGG16、ResNet18以及原始的Inception-ResNet-v2算法做对比实验。通过试验,本文将初始学习率设为0.01,训练批次设为8,共迭代200次,优化器动量因子设为0.9,标签平滑系数设为0.1。

本文研究的是一个多分类问题,对于多分类问题的评价指标[16]主要有宏平均(Macro)、微平均(Micro)、权重平均(Weight)三种算法。其中Micro和Weight主要是针对样本类别不均衡的情况下使用的,而研究所使用的样本类别都是均衡的,故采用Macro算法作为评价指标。Macro算法在计算精确率(Precision)和召回率(Recall)这两个指标时,先计算每个类别的精确率与召回率,然后取平均值。计算公式为

(3)

(4)

(5)

(6)

(7)

式中:TP为真正例;FP为假正例;FN为假反例;L为类别数;MacroF1为精确率和召回率的调和平均值;i为类别标签。

精确率和召回率分别体现了模型对于正、负样本的区分能力,其数值越大,区分能力越强。MacroF1体现了模型的稳健性,其值越高,模型越稳健。通过实验,将本文所提算法与其他算法作对比,对比结果如表2所示。

由表2可知,改进后的Inception-ResNet-v2网络的训练精度和验证精度明显优于其他算法,本文算法的分类准确率比其他三种算法分别提高了5.0%、3.8%、3.2%。为了进一步验证本文所提算法的优越性,使用测试集进行模型预测,将训练得到的最优模型保存下来,将测试集(600张图片)分别导入已经训练好的几种模型进行测试,然后将测试结果通过Macro算法公式分别计算精确率、召回率和MacroF1三个指标,对比评估几种模型的性能,对比结果如表3所示。

表2 训练结果对比Table 2 Comparison of training results

表3 模型评价指标Table 3 Evaluation index of models

从表3的数据明显可以看出,本文算法的MacroF1最高,模型最为稳健,对于正负样本的区分能力最强,其他三种对比模型的模型性能相差不大,其中ResNet18的整体性能略高于另外两种模型。

2.5 结果分析

采用消融实验来验证注意力机制、特征融合策略以及全卷积三种优化策略的有效性,共做了5组对比实验,实验结果如表4所示。

表4 消融实验结果对比Table 4 Comparison of ablation experiment results

如表4所示,实验1为不含这3种策略的Inception-ResNet-v2原模型,实验2是仅有注意力机制的模型,实验3是仅有特征融合策略的模型,实验4是仅含全卷积策略的模型,实验5为加入这3种策略的模型。其中,注意力机制对于模型的提升最为明显,识别精度在原模型基础上提升了2.2%,实验3和实验4的识别精度较实验1分别提升了1.0%和0.8%。各个实验的验证过程迭代曲线如图6所示。

图6 消融实验迭代曲线Fig.6 Iterative curve of ablation experiment

由图6可知,实验5的准确率提升速度和损失值下降速度明显比其他4个实验快,训练过程中的准确率和损失值波动小,收敛速度快,后期没有振荡现象的出现,而其他4个实验后期都有轻微的振荡。实验2的效果虽然没有实验5的好,但是明显优于其他3个实验,实验3和实验4的准确率和损失值前期波动都比较大,后期慢慢收敛。实验1的准确率和损失值相比于其他4个实验波动较为明显,收敛速度最为缓慢。

为了验证本文算法的可靠性,采集实际场景中的路面状态图像,传入本文算法中进行分类识别,识别结果如图7所示,括号中的数值表示属于这一类别的概率。可以看出,在实际应用场景中,本文算法仍然能够准确识别出这6种路面状态类型。因此,改进的Inception-ResNet-v2算法具有高精度、泛化能力强的优点。

图7 本文算法测试结果图Fig.7 Model test results in this paper

3 结论

(1)针对城市交通路面状态的识别问题,以Inception-ResNet-v2算法为基础,引入SENet注意力机制构建新的模块SE-Inception-ResNet-C,并采用特征融合机制,增强了模型的特征提取能力。通过将网络中的全连接层换为卷积层,有效加快了目标函数的收敛速度,一定程度上缓解了曲线的震荡现象。实验结果表明:本文算法对于路面状态图像的分类准确率达到了99.4%,比原算法提高了3.2%的准确率。

(2)本文算法具有较好的应用前景,可将其嵌入高级驾驶辅助系统,识别路面状态并估算出汽车的制动距离,提醒驾驶员小心驾驶,有效提高了行车的安全性,减少了交通事故的发生。

猜你喜欢
卷积路面分类
基于3D-Winograd的快速卷积算法设计及FPGA实现
分类算一算
卷积神经网络的分析与设计
用艺术修补路面
从滤波器理解卷积
分类讨论求坐标
数据分析中的分类讨论
基于傅里叶域卷积表示的目标跟踪算法
教你一招:数的分类
一款透水路面养护车