丁 洁,刘晋峰,杨祖莨,阎高伟
(太原理工大学 电气与动力工程学院,太原 030024)
随着国民经济的快速发展,近年来机动车保有量大幅度增加,造成了严重的交通拥堵[1]。有关研究表明,拥堵发生时低速行驶的车辆会排放更多废气。当车速为5 km/h以下时,尾气氮氧化物排放系数为7;而当车速为35 km/h以上时,尾气氮氧化物排放系数为3[2]。
对于交通拥堵的检测,目前主要采用的是通过GPS定位检测、微波检测、红外检测和线圈检测等物理检测手段来获取交通流参数[3],通过如车辆数量、车辆平均行驶速度等参数进行交通拥堵判断。然而,这些传统方法均存在造价高、对路面破坏较大等问题。
随着计算机视觉的发展及公路上全路段视频监控的实现,为基于视频图像的拥堵检测提供可能[4]。目前基于视频图像的交通拥堵检测方法大部分是对车辆数量进行检测。例如对感兴趣区域进行处理[5],提取车辆目标以统计车辆数,再根据车辆数进行交通拥堵的判断。再如,利用背景差分法和帧差法分析图像的纹理变化情况,从而得出道路空间占有率和时间占有率以判断道路拥堵的情况[6]。以上拥堵检测方法易受环境变化的影响,如光照强度及路面反光等,无法应用于不同的场景中。
近年来,卷积神经网络(convolutional neural network,CNN)在图像处理领域的应用逐渐增多,其有着自动提取图像特征、鲁棒性很强等优点[7]。Lecun等[8]针对手写字符识别,首次提出了LeNet-5图像识别模型,获得了极佳的效果。Alex通过加深网络层数、使用CUDA进行训练等方式获得了效果更好的AlexNet[9]。而后,谷歌提出的GoogLeNet与牛津大学提出的VGG(visual geometry group)模型以较小的卷积核尺寸增强了网络的实用性及简洁性,分别获得2014年ILSVRC竞赛的第一名、第二名,但是VGG在多个迁移学习任务中的表现优于GoogLeNet[10]。之后基于CNN的分类模型有了长足发展,He等[11]在2016年提出了用于图像识别的深度残差模型ResNet,通过使用残差结构优化了深层CNN模型。Howard等[12]于2017年提出了轻量级模型MobileNet,其通过深度可分离卷积优化了模型结构,使检测速度大大提高。目前,已有研究人员将经典卷积神经网络结构应用于道路拥堵识别中,如罗荣辉等[13]通过改进AlexNet模型的网络结构来检测道路拥堵情况,检测速度达到了0.012 s/帧,但是其存在模型臃肿、检测速度较慢的缺点。因此,卷积神经网络在道路拥堵识别中的应用仍有待发展。
基于以上研究,笔者提出一种利用深度学习卷积神经网络的方法进行道路拥堵判断,实现对道路拥堵的准确检测,并且检测速度得到改进。在文章第一部分设计了所使用的卷积神经网络模型结构,并对模型进行训练。在第二部分进行了对比实验,利用多种卷积神经网络模型的分类结果进行比较,并对网络结构进行了消融实验。第三部分对实验结果进行了讨论。
本文中所设计的基于CNN的分类模型主要由3个模块组成,如图1所示分别为:图片预处理模块、卷积神经网络模块和结果优化模块。下面将对模块内容进行详细介绍。
图1 模块组成Fig. 1 Module composition
图片预处理模块主要进行的步骤为:
1)对图片数据进行增强,包括了随机翻转、变换亮度等,以丰富数据集;
2)对图像统一缩放为64×64大小,以便于输入至卷积层中。
其中,训练集中某图片操作结果如图2所示。
图2 图片预处理效果图Fig. 2 The preprocessing effect of a picture
本文中所设计的三层卷积神经网络结构如图3所示。
图3 CNN模型结构Fig. 3 CNN model structure
在图3的结构中,选用了5×5与3×3的小卷积核进行特征提取,减少了参数数量,加快了训练与识别的速度。在每一层中使用Leaky-ReLU激活函数与Batch-Normalization。图4为ReLU与Leaky-ReLU函数图像,相较于普通使用的ReLU激活函数,Leaky-ReLU更全面地保留了特征信息。
图4 ReLU与Leaky-ReLU的函数图像Fig. 4 Function image of ReLU and Leaky-ReLU
式(1)为Leaky-ReLU函数公式,ai是(1,+∞)区间内的固定参数。Leaky-ReLU给所有负值赋予一个非零斜率,保留了一定的特征效果。而结构图3中的Batch-Normalization层通过规范化卷积的输出,使得激活函数的输入值能进入对输入比较敏感的区域,避免了梯度消失问题[14]。
(1)
本文中所设计的优化模块网络结构如图5所示。
图5 优化模块结构Fig. 5 Optimization module structure
在图5的结构中,Flatten层可将卷积层3的输出“压平”,把多维输入一维化,实现卷积层到全连接层的过渡;Dense层则为全连接层,对卷积的结果进行特征的进一步提取。其中,第一个Dense层含有128个神经元,可将卷积层3中卷积层提取的局部特征进行全连接,实现特征的融合;由于本文中针对的交通拥堵分类是二分类问题,因此第二个Dense层只含有一个神经元,作用为融合所有特征,便于之后进行类别概率计算。损失函数为二分类交叉熵损失Sigmoid_cross_entropy,其公式为:
(2)
式中:t为Dense层的输出,S(t)为输出类别概率,这样就将卷积层的输出变换为二分类概率。
优化模块主要采用了DropOut算法以减轻过拟合的产生,并提高模型的泛化型。DropOut算法示意图如图6所示。
图6 DropOut在神经元中的作用Fig. 6 The role of DropOut in neurons
如图6所示,左图为未使用DropOut时正常的神经网络传递方式,其传递公式为:
(3)
图6右图为随机放弃40%神经元后的传递方式,其传递公式为[15]:
(4)
(5)
(6)
式中的Bernouli函数会生成随机向量0或者1,起到DropOut的作用。
DropOut可以解决过拟合的原因在于[16]:
1)训练时可产生多种网络:在训练过程中,如果使用相同的数据去训练不同的网络,会得到不同的结果,那么将这些结果取平均后,可以有效避免过拟合。DropOut可以在每次训练时随机放弃一些神经元,模拟产生多种不同的网络结构;
2)减少某些神经元的敏感性:神经网络应该在学习时更具有鲁棒性,DropOut能让一些神经元不是每次都在网络中出现,这样就有效减轻了网络对特定信息的依赖。
在对模型进行训练时,使用9 457张图片作为数据集,其中,5 000张图片为训练集,2 320张图片为验证集,2 137张图片为测试集。所用图片采集于山西省太原市街道内,数据集中包括了不同角度、不同光照条件下的场景图片,如图7所示,包含了不同角度、在白天夜晚条件下的场景。
图7 不同角度、不同光照条件下的场景Fig. 7 Scenes under different angles and different lighting conditions
在训练神经网络模型时,学习速率为0.001,每次迭代选择32张训练集图片进行训练,训练轮次epochs=1 000,图8为训练过程中的损失与准确率指标的展示。
图8 训练过程Fig. 8 Training process
图8结果表明,经过1 000轮训练后,本文模型所达到的验证准确率为99%。
为了验证优化模块的有效性,对模型结构进行了消融实验,如表1所示,验证模型1不使用DropOut方法,其余结构不变;验证模型2不使用Leaky-ReLU激活函数而使用普通的ReLU激活函数,其余结构不变。
表1 消融实验
对验证模型1、验证模型2在同样的训练集下,以学习速率为0.001,每次迭代选择32张训练集图片进行训练,训练轮次epochs=1 000,图9、图10为验证模型的训练结果展示。
图9 验证模型1训练过程 Fig. 9 Training process of model 1
图10 验证模型2训练过程Fig. 10 Training process of model 2
图9、图10表明,验证模型1、验证模型2在训练后均已收敛,且训练集的验证准确率达99%以上。
本文的实验环境为Intel Core i7-8750H CPU(2.20 GHz)、Nvidia GeForce GTX 1050TI GPU(4G显存)和16 GB RAM。对测试集中1 123张交通拥堵图片、1 014张交通通畅图片共计2 137张图片进行分类后,所得结果如表2所示。
表2 本文模型分类结果
由表2中测试集图片的分类结果可得本文使用的模型的分类准确率为98.1%。经测试,分类模型处理单张图片的速度为0.004 s。
使用验证模型1对测试集图片进行分类的结果如表3所示。
表3 验证模型1分类结果
由表3中测试集图片的分类结果可得验证模型1的分类准确率为90.6%,效果明显劣于使用了DropOut的本文模型。归结其原因在于,对于使用了DropOut的网络结构,其网络在训练时,相当于进行了训练数据的扩充。这是由于总可以在训练集中找到一个样本,使得该样本在原始网络上的输出结果也能达到DropOut后的效果,所以每一次DropOut都相当于增加了样本,使得网络能够多尺度、更丰富地使用特征,分类效果变得更好。
使用验证模型2对测试集图片进行分类的结果如表4所示。
表4 验证模型2分类结果
由表4中测试集图片的分类结果可得验证模型2的分类准确率为97.1%,效果略差于使用了Leaky-ReLU的本文模型。主要原因在于Leaky-ReLU相较于普通的ReLU激活函数,通过给所有负值赋予一个非零斜率保留了更多的特征,因此分类效果更佳。
为了进一步表明所使用的神经网络模型结构的优势,使用深度学习中经典的VGG16、ResNetv1、InceptionV3和MobileNet模型进行对比验证。VGG16、ResNetv1和InceptionV3均是广泛应用的卷积神经网络分类模型,其以网络结构规整、分类性能良好应用在各个领域。而MobileNet则是轻量化模型,更注重处理速度。使用训练集对VGG16、ResNetv1、InceptionV3和MobileNet模型进行训练,学习速率为0.001,每次迭代选择32张训练集图片进行训练。由于这些模型结构比较庞大,为了保证网络的收敛,增加了训练轮次,训练轮次epochs=100 000,并且在同一个测试集上进行测试,其对交通拥堵的分类结果如表5~8所示。
表5 VGG16分类结果
由表5中测试集图片的分类结果可得利用VGG16模型的分类准确率为95.4%。经测试,使用VGG16模型处理单张图片的速度为0.027 s。
表6 ResNetv1分类结果
由表6中测试集图片的分类结果可得利用ResNetv1模型的分类准确率为94.5%。经测试,使用ResNetv1模型处理单张图片的速度为0.017 s。
表7 InceptionV3分类结果
由表7中测试集图片的分类结果可得利用InceptionV3模型的分类准确率为96.8%。经测试,使用InceptionV3模型处理单张图片的速度为0.025 s。
表8 MobileNet分类结果
由表8中测试集图片的分类结果可得利用MobileNet模型的分类准确率为92%。经测试,使用MobileNet模型处理单张图片的速度为0.005 s。
将本文中所使用的模型称为Our-net。对比表2~8的结果,并计算FPS(frames per second)后如表9所示。
表9 分类结果对比
由于本文所设计的模型卷积网络层数较少,因此参数数量也较少。能在保持精确分类的条件下,分类速度大大优于VGG16、ResNetv1和InceptionV3模型,FPS达到了250,比其他模型的最佳结果仍高50;而在维持分类速度的条件下,分类精度大大优于MobileNet等模型,模型准确率达到了98.1%,比其他模型的最佳结果仍高1.3%。
针对交通拥堵问题,应用卷积神经网络进行道路图片分类。得到的结果表明,本文中设计的CNN模型的检测效果大大优于利用VGG16、ResNetv1、InceptionV3和MobileNet模型分类方法,且检测速度有较大的提高,能够有效地对交通拥堵进行判断分类,最终交通拥堵检测精度达到了98.1%,检测速度达到250 FPS,为交通管理者进行准确道路管理提供了一个新的方案。