杨 蓉, 杨晓虎, 玉雄侯
(广西大学机械工程学院,南宁 530004)
浓雾天气是对道路交通安全影响最大的天气因素之一。据统计,中国发生的交通事故中有将近30%是由恶劣天气引起的[1],其中浓雾天占约3/4[2]。近年来,随着计算机视觉技术的进步和行车记录仪的普及,基于图像处理的天气识别技术正逐渐被应用于辅助驾驶系统的研究中,期望以主动或被动的手段提高汽车驾驶安全性,如降低车速、开启雾灯和除雾灯等。而针对浓雾天环境的行车安全问题,辅助驾驶系统的首要任务即是对浓雾天气进行识别与判断。
李易润[3]以Koschmieder模型为基础,结合Canny-Deriche滤波器、Nagao滤波器、区域生长法等视频分析技术设计了车载团雾预警系统。该系统能够实时检测车辆前方的能见度信息,并结合车速情况发出语音预警,以提醒驾驶员做出相应的处理。金月等[4]基于暗通道先验设计了一种可用于辅助驾驶系统的低能见度检测方法。上述两种系统均需要依赖车道线和水平线对能见度进行计算,只适用于道路宽阔且车流量少的道路环境中。为减少分析过程对车道线和水平线的依赖,玉雄侯等[5]设计了一套基于DM642的车载浓雾天识别系统,该系统采用支持向量机对浓雾天、晴朗天等两种道路图像进行处理和识别,准确率达95.0%。该方法需要人工提取相关图像特征,而人工提取特征多为浅层特征,当面对多种复杂天气类别时难以保证识别准确率。
随着图像识别技术的不断发展,现有的机器学习方法已经可以对图像的深层特征进行表征学习。杨文佳[6]采用集成学习的方式,选用4种DensNet、GoogLeNet、AlexNet、VGGNet卷积神经网络模型对晴天、阴天、雨天和雪天进行识别,并通过ER-Relu算法将4种识别结果融合,进而获取最终识别结果。李鹏程等[7]将天气图像进行分割处理,识别出天空区域和地面区域并提取出不同区域的形状、颜色和纹理特征,最后利用随机森林分类器对晴天、多云、阴天和雨天进行识别,准确率达92.7%。陈思玮等[8]采用基于DensNet密集深度网络的迁移学习方法识别雾霾、沙尘、雨、雪、霜、露6种天气现象,识别准确率达97.51%。然而,目前基于机器学习的天气识别方法多应用于固定场景的天气识别,针对行车辅助驾驶系统的研究较少。
为此,利用机器学习的方法设计了一种适用于行车辅助驾驶系统的浓雾天识别算法,以此来识别不同的天气情况。
为提高汽车在浓雾天中的驾驶安全性,辅助驾驶系统的首要任务是正确地区分浓雾天气和非浓雾天气,并根据识别结果发出必要的预警,或代替驾驶员进行相应的安全操作。因此辅助驾驶系统中浓雾天识别算法是一个二分类问题,即输出结果只有浓雾天和非浓雾天。
二分类问题在训练算法模型时需要正例和反例两类训练数据,通常以最关注的为正例,其他为反例[9]。从驾驶安全的角度出发,辅助驾驶系统更关注浓雾天气的识别,且一般认为能见度低于 200 m 的浓雾天会严重威胁交通安全[10]。因此,研究中应选择能见度低于200 m的浓雾天图像作为训练数据的正例,与浓雾天具有较大反差的晴朗天图像作为反例。同时,为使辅助系统适应道路环境,图像内容应为行车过程中出现的道路交通场景。图1为训练数据集的部分样本。图像来源于行车记录仪视频,取视频的每秒作为训练图像数据,整个训练数据集总共有3 200张图像,其中正、反例图像分别为1 600张。
图1 训练数据集部分样本
卷积神经网络(convolutional neural networks, CNN)是图像识别领域中最热门的一种深度学习模型[11-13],通过多层网络从海量原始数据中自主学习深层特征,具备表征学习的能力。当前卷积神经网络在天气识别上取得了一定的研究进展[14-16]。
2.1.1 网络结构设计
相较于多分类任务而言,二分类图像识别任务并不需要十分复杂的网络结构。设计一个具有10层数的卷积神经网络结构,每个卷积层之后插入一个池化层,最后通过两个全连接层输出识别结果。为便于区分,将该网络结构命名为CNN-DFR10(CNN-dense fog recognition 10),其中数字10表示层数。表1为CNN-DFR10结构参数。
表1 CNN-DFR10的结构参数
2.1.2 模型的训练
模型的训练依赖于深度学习开发工具,选择具有高度灵活性、可移植性的Tensorflow学习框架对CNN-DFR10进行训练。为了便于在训练中对模型进行调参与评估,从训练数据中划出一部分作为验证集,即训练集2 400张图像,验证集800张图像,其中正、反例图像比例为1∶1。
在CNN-DFR10的训练阶段,将训练轮数Epoch=50作为停止训练的条件,同时绘制训练集和验证集两者的正确率及损失函数值的变化曲线。图2为CNN-DFR10的学习曲线,训练结果表明CNN-DFR10很好地拟合了训练数据。
图2 CNN-DFR10的学习曲线
卷积神经网络存在一定的局限性,即标量神经元仅能表示特征存在的概率,而不能表征特征的空间信息。换句话说,卷积神经网络只关心特征的存在与否,并不关心特征具有何种属性信息(相对位置、色相或纹理等)。为此,Sabour等[17]提出了胶囊网络(capsule networks, CapsNet)架构。“胶囊”就是一个将若干个神经元“封装”起来的集合,该集合用向量来进行表示。向量的大小、方向可以分别表征实例特征存在的概率及属性信息,因而相比于标量神经元,向量胶囊能够保留更多的特征信息,网络对实例特征的表征能力更强。近年来,胶囊网络在雷达图像分类[18]、汉字笔迹鉴定[19]及人脸表情特征识别[20]等研究领域取得了一定的成果。
2.2.1 网络结构设计
胶囊网络的发展仍处在起步阶段,网络结构的相关设计并不像卷积神经网络那样成熟,可参考的架构比较少。为此,CapsNet结构的基础上设计了名为胶囊网络-浓雾识别(capsule networks-dense fog recognition,CN-DFR5)的网络结构,如表2所示,其中数字5表示层数。与卷积神经网络不同的是,胶囊网络增加了初级胶囊层(primary capsules)和数字胶囊层(digit capsules)。
表2 CN-DFR5的基本结构及参数
初级胶囊层是胶囊网络的核心,其作用是将所有神经元按一定的数量“封装”在若干个初级胶囊中,完成标量神经元向向量神经元的转换。在初级胶囊层中,层内操作可分为两个部分:第一个部分与常规卷积层无异,通过使用256个步长为2的5×5卷积核对16×16×256的特征图像进行卷积操作,得到5×5×256的特征图像;第二部分是“封装”胶囊,首先将5×5×256的特征图像分成8组,每组图像维度为6×6×32(即共有1 152个神经元);接着将8组神经元依次排成一列,得到1 152行8列的神经元矩阵;最后,神经元矩阵中的每一行均被“封装”成一个初级胶囊,共得到1 152个初级胶囊(每个胶囊由8个神经元组成)。
数字胶囊层则替代了全连接层作为输出层,作用是将所有初级胶囊转换成数字胶囊,每个数字胶囊输出向量的大小表示了相应实例特征存在的概率。由于所研究的辅助驾驶系统的浓雾天识别算法是一个二分类问题,因此在数字胶囊层的输出端设置了2个数字胶囊(每个胶囊由16个神经元组成),分别用于输出“浓雾天”和“非浓雾天”两种识别结果。数字胶囊层中权重矩阵w和耦合系数c的维度分别为8×16×1 152×10(1 152×10个8×16的权重矩阵w)、1 152×10×16(1 152×10个1×16的系数c)。
2.2.2 模型的训练
CN-DFR5的训练采用Tensorflow学习框架,训练数据不变。图3为CN-DFR5训练过程中的学习曲线,结果表明CNN-DFR10很好地拟合了训练数据。
图3 CN-DFR5的学习曲线
辅助驾驶系统中的浓雾天识别算法要面对的是复杂多变的交通天气环境,以浓雾天和晴朗天为代表的正、反例天气类别并不足以表达实际道路环境的复杂性。为此,又建立了浓雾天、雨天、阴天和晴朗天4种驾驶场景的测试图像集,以测试CNN-DFR10和CN-DFR5算法模型的泛化能力。图4为晴阴雨雾天气图像数据集的部分样本图像,整个数据集中共包含1 600张图像,每种天气类别的图像数量均为400张。
图4 晴阴雨雾天气图像集的部分样本图像
算法模型的测试采用图5所示的测试流程。由于某些天气类别中可能会同时存在浓雾天特征和晴朗天特征,若仅由浓雾天概率值作为最终识别结果的判断依据不够全面。为此引入了综合概率p,其表达式为
图5 算法模型的测试流程
(1)
式(1)中:p+和p-分别表示输出浓雾天(正例)和晴朗天(反例)的概率;综合概率p的几何意义是正例占所有预测概率值总和的比值,p越高说明浓雾天特征存在的可能性越大。采用综合概率p来区分浓雾天及非浓雾天图像。
为了更好地分析综合概率p对浓雾天、雨天、阴天和晴朗天测试图像上的区分效果,计算了每种天气类型中400幅图像的综合概率值平均数,并绘制图6所示的CNN-DFR10和CN-DFR5综合概率平均数的变化曲线。
由图6可知,随着浓雾天向晴朗天进行过渡,CNN-DFR10和CN-DFR5的综合概率平均值都在逐渐减小,浓雾天和非浓雾天的区分界线也比较明显,即纵坐标约0.8位置。由于综合概率的平均数仅反映了一组数据中的平均水平,并不能反映出数据的分布情况。为进一步分析CNN-DFR10和CN-DFR5算法模型的不同,选取综合概率值的中位数来进一步观察。中位数是按顺序排列的一组数据中处于中间位置的数,常用它来反映数据的集中趋势。
图7为综合概率中位数变化曲线,CNN-DFR10和CN-DFR5的中位数变化程度不同。CN-DFR5的中位数呈平稳下降的变化趋势,浓雾天和非浓雾天的区分界线也比较明显,即纵坐标约0.8处。相比之下,CNN-DFR10则趋于向两端极值靠拢,浓雾天和非浓雾天的区分界线不明显。综合分析图6、图7发现,随着浓雾天向晴朗天进行过渡,CNN-DFR10的两条曲线变化差异较大,而CN-DFR5的曲线变化差异小。不管是综合概率平均数还是中位数,CN-DFR5输出的综合概率值比CNN-DFR10更加稳定,更有利于区分浓雾天和非浓雾天图像。
根据图6、图7的变化曲线,设概率阈值等于0.9,当算法模型输出的综合概率p高于0.9时识别为“浓雾天”,否则为“非浓雾天”。在CNN-DFR10测试结果中,有210张雨天图像被错误地识别为浓雾天,其余天气类型的测试图像均被正确识别,识别准确率为86.9%。而在CN-DFR5识别结果中,仅有40张雨天图像被错误地识别为浓雾天,整体识别准确率为97.5%。表3为CNN-DFR10和CN-DFR5的测试结果,结果表明CN-DFR5的识别准确率更高。
图6 CNN-DFR10和CN-DFR5综合概率平均值变化曲线
图7 CNN-DFR10和CN-DFR5综合概率中位数变化曲线
表3 CNN-DFR10和CN-DFR5的测试结果
对算法运行时间也进行了测试对比。初期在中央处理器(central processing unit,CPU)i7的电脑上对1 600张测试集图像进行识别,CN-DFR5算法的运行速度比CNN-DFR10算法慢2 s左右,平均至单张图片为每张图片运算速度慢0.001 25 s左右。后续将算法移植至人工智能开发板上,使用深度学习专用的图形处理器(graphics processing unit,GPU)运行计算,实测两种算法的运算速度没有太大差异。
采用卷积神经网络、胶囊网络等机器学习技术分别设计了可用于行车辅助驾驶系统的CNN-DFR10 和CN-DFR5浓雾天识别算法模型,根据输出概率值高低来判断不同的天气状况,从而对浓雾天和非浓雾天进行区分。得出如下结论。
(1)采用向量方式将信息进行传播的CN-DFR5比采用标量方式的CNN-DFR10在区分不同的天气类别上更具优势。在识别“浓雾天”和“非浓雾天”的图像类别中,CN-DFR5比CNN-DFR10具有更高的识别准确率。
(2)采用机器学习方法对雾天进行识别,可以有效地避免对车道线和水平线的计算,使得辅助驾驶系统能够在复杂多变的道路环境中区分雾天。
(3)研究中未能将算法嵌入车辆辅助行驶系统开展实车测试,后续研究可针对两种算法模型进行车辆辅助驾驶系统的终端部署开发。