基于CNN的城市道路交通事件检测算法

2022-04-20 08:46施俊庆陈林武李素兰孟国连夏顺娅
公路交通科技 2022年3期
关键词:池化层池化卷积

施俊庆,陈林武,李素兰,孟国连,夏顺娅

(1. 浙江师范大学 工学院, 浙江 金华 321004;2. 浙江师范大学 浙江省城市轨道交通智能运维技术与装备重点试验室, 浙江 金华 321004;3. 武汉市桥梁维修管理处, 湖北 武汉 430014)

0 引言

城市道路发生交通事件之后,往往会造成道路通行能力下降,形成偶发性交通拥堵。如果不能及时有效地处理交通事件,可能会造成交通拥堵恶化,导致路网内的大面积拥堵,严重时可导致交通瘫痪。及时有效地检测并疏导城市道路交通事件,是缓解城市交通拥堵的有效途径,也是交通管控的重要组成部分。

交通事件检测分为非自动检测和自动检测两种。非自动检测以人工的方式来检测并报告交通事件。自动检测通过识别和分析交通流参数的变化来判别交通事件,主要包括比较算法、统计算法和时间序列算法等[1]。比较算法中的加州算法是最早也是最典型的交通事件自动检测(Automatic Incident Detection, AID)算法,该算法根据相邻检测器之间的占有率差值判别交通事件[2]。在此之后又相继出现了多种算法,如对加利福尼亚算法进行改进的多目标事件检测算法(APID)[3]、贝叶斯算法[4]、标准正态偏差算法[5]、随机森林法[6]、小波变换理论算法[7-8]和粒子群算法SVM模型[9]等。上述方法在高速公路以及城市快速路系统中得到了很好的应用[10]。

大多数AID算法都以感应线圈检测器数据为主。随着GPS设备的不断完善,通过浮动车数据(Floating Car Data, FCD)能够更为精确实时地获取车辆信息(如位置、速度和行驶方向等),且成本更低,为事件检测提供了新的契机[10]。同时,有研究证明浮动车能够充分监控道路中的交通变化[11],已被广泛用于交通状态的判别[12-15]。文献[12-13]利用浮动车数据进行了交通状态的判别,研究了拥堵传播规律。文献[14]分析了高速公路上FCD比例对交通状态判别的影响,结果显示使用5%~10%渗透率的FCD就能准确估测交通状态。

近年来,卷积神经网络(Convolutional Neural Network, CNN)在多目标识别和分类领域中的优异性能,使其备受关注,在交通预测和评估领域得到了广泛应用,比如道路车速预测[16-17],行程时间预测[18]和交通流预测[19]等。针对事件检测领域,通常将CNN与视频监控数据相结合来进行交通事件的检测[20];也有研究将采集到的检测器数据转化为对应的二维灰度图片数据,实现多路段异常交通状态的判断,但算法未能充分考虑数据的周期性变化[21]。

然而,现阶段的大多数算法并不能很好地诠释道路网络的空间相关性,且大多数算法是围绕高速公路或城市快速路的交通事件检测展开研究,少有对信号控制条件下的城市道路交通事件进行研究。本研究利用浮动车数据,分析交通流的时空依赖性,重构城市道路交通流时空特征信息,提出了一种基于CNN的城市道路交通事件检测算法,并利用武汉市江汉区实测数据对算法性能进行验证。

1 基于CNN的交通事件检测算法设计

传统神经网络各层连接形式均为全连接,同时隐藏层层数相对较少。CNN与传统神经网络的主要区别在于它在全连接层之前增加卷积-池化层,通过重复使用卷积和池化操作进行特征提取,使得网络中的高层结构能够更好地获得底层信息,从而组合低层特征来构造高层特征。

在构建CNN交通事件检测算法时,首先提取算法输入张量,其次构建CNN隐藏层结构,提取数据特征,然后训练检测模型,学习交通信息的时空关联性,最后对算法性能进行测试,分析评价算法检测效果。

1.1 交通信息张量提取

Ma等[16]用一个时空矩阵来记录时间序列下不同道路空间中的交通信息。本研究将道路按照交叉口分段设置,通过时空矩阵来描述完整的道路交通流时变信息。因此,CNN的输入张量可用X∈Rn×k×u表示,其中n表示通道数,k×u为时空矩阵。道路网中单通道矩阵X形式如公式(1)所示。

(1)

式中,xku为路段u在时间k下的交通信息数据值。

1.2 隐藏层与输出层计算

CNN的隐藏层包括卷积层、池化层和全连接层等,通过前向传播和后向传播两个阶段,对结构层中的参数进行更新。前向传播是将输入层信息经过各隐藏层计算,传输至输出层给出输出结果。反向传播是通过梯度下降法对CNN中各层参数进行更新修正,极小化损失函数,最大限度地保证输出结果与预期结果相一致[22]。

卷积层是CNN模型中最为核心的一层,由若干个神经单元组成。假设与卷积层(第l层)直接相连的输入张量为Xl∈Rn×p×q,其中,p和q分别为矩阵高度和宽度。第l层激活函数输出al的计算如公式(2)所示。

al=f(Wl⊗Xl+bl),

(2)

式中,f为激活函数;Wl∈Rm×h×h为卷积核的权矩阵(即,滤波器);m为滤波器个数;h为滤波器的尺寸;bl为卷积层的偏执;⊗为卷积运算。常见的激活函数有ReLU,Sigmoid,Tanh和Softmax等。其中,激活函数ReLU:f(x)=max(x,0)相较于其他函数收敛速度更快[23],因此本研究选取ReLU作为卷积层激活函数。

全连接层各层之间所有神经元相互连接,并使用激活函数实现非线性映射。第l层激活函数输出al的计算如公式(3)所示。

al=f(zl)=f(WlXl+bl),

(3)

式中,zl为全连接层(第l层)的原始输出;Xl为全连接层输入。

输出层使用Softmax函数计算不同类别的概率分布,并选择最大概率类别作为输出,具体计算如公式(4)所示[23]。

(4)

式中pj为第j类别输出的概率;zj为第j类别输出值;O为类别总数,且所有类别概率累加和为1。

1.3 隐藏层的权值修正

输出与期望之间的误差计算如式(5)所示。

(5)

全连接层之间的参数梯度如式(6)所示:

δ(l-1)=[δl(wl)T]·f′(zl-1),

∇wl=δl(al-1)T,

∇bl=δl,

(6)

式中,δl为第l层原始输出的误差;·为矩阵Hadamard乘积。

对于池化层,直接将误差反向传播至上一层,无需校准全矩阵。

对于卷积层,各参数的梯度计算如式(7)所示。

∇wl=al-1*δl,

(7)

式中*为互相关运算。

各层的权值修正如式(8)所示。

bj=bj-β∇bj,

(8)

式中,β为学习速率;λ为正则化参数;M为样本数。

1.4 算法流程

Step 1:初始化各层网络及其参数(权值、阈值、滤波器尺寸、池化窗口尺寸等)和学习速率,转至Step 2。

Step 2:输入数据按前向传播过程依次经过卷积层、池化层、全连接层,并计算得到输出数据,转至Step 3。

Step 4:误差是否大于期望值。是,按反向传播过程将误差传回网络中,依次求得全连接层、池化层、卷积层误差,并更新各层的参数(权值、偏执等),转至Step 5;否,结束训练,固定模型各参数。

Step 5:根据各层误差更新相关权值,转至Step 2。

1.5 算法评价指标

2 试验与分析

2.1 原始数据分析

本研究采用武汉市2019年4,5,6这3个月的浮动车数据(约1.8万辆出租车)和江汉区青年路的交通事故数据(约1 000条),对所提出的检测算法进行测试。研究区域道路结构如图1所示。

图1 道路结构

以某一起事故为例,2019年4月10日20:48:05接到报警“青年路常青路路口鄂A小型汽车号牌的士与渣土车擦碰”。根据事件信息,选取4月9日和4月10日20:15—21:45之间90 min的浮动车数据,计算该路段的行程速度,如图2所示,与相同时段无事故时相比,事故路段浮动车速度有一个明显的下降过程。

图2 路段速度变化

研究道路事故统计如图3所示,速度特性如图4所示。根据事故数据的初步统计,事故发生时间、地点随机性较大,每日事故量差距较小,且事故程度适中,总体工作日事故发生频率较高。本研究使用的浮动车数据采样时间为10~15 s,并以每5 min为间隔上传1次。因而本研究根据获取得到的所有FCD,以5 min为单位计算道路区间平均速度,由图4可以发现,每日平均速度变化趋势较为稳定,周末相较于工作日早高峰有所延后。

图3 交通事故周分布

图4 路段速度变化

2.2 参数设置

将研究区域(青年路及部分相交道路)按交叉口划分为24个子路段,根据FCD上传时间间隔,以5 min为单位计算各子路段平均速度,将1天划分为288个时段。为提高算法精度,以20 min为单位,将1天划分为285个时间片段,如第1个时间片段为00:00—00:20,第2个时间片段为00:05—00:25,依此类推。

由图4可知,周末交通流在时间上的变化与工作日有所差异,为减少数据差异性,本研究选用工作日的部分数据进行训练及测试,包括交通事故时段数据、400个高峰时段数据以及800个平峰时段数据。其中,交通事故时段数据为402起事故对应的浮动车数据(剔除缺失时段数据后)。数据集中,70%用于训练,30%用于测试。

输入结构设置为(2,4,24),其中第1个通道用于记录连续20 min内各子路段的交通信息;第2个通道用于记录第1通道中各行数据所属时段,其数值为各时段编号(1-288)。

对于模型的输出层,本研究设定输出类别为0,1或2∶0表示为平峰期交通状态,1代表道路中有交通事故发生,2表示为高峰期交通状态(0和2均为无交通事件类别)。

构建CNN算法时,需要确定的关键参数有:卷积-池化层的超参数(滤波器和池化窗口大小)以及深度[10],由于没有统一的方法来确定超参数的结构,因此本研究参考文献[22,24],选择滤波器尺寸为3×3,池化窗口大小为2×2以及最大池化函数。

CNN的深度也直接影响着算法的学习效率及性能。由于池化窗口大小为2×2,每次经过池化后算法中的节点数会减半,针对本研究的输入结构最多需要2层卷积-池化结构层。另外,假设学习速率β=0.01,正则化参数λ=5,误差期望值为0.01。

本研究构建的CNN事件检测模型各层具体参数情况如表1所示。

表1 CNN事件检测算法结构及参数设置

2.3 试验结果分析

为了检验本研究所提出的算法用于交通事件检测的有效性,本研究根据测试集对训练好的事件检测模型进行验证,通过对比BP算法的检测效果,验证模型的实用性,具体结果如表2所示,其中,CNN1为表1结构。对比表2 中的结果,可以发现,相较于BP神经网络(全连接形式),本研究所提出的算法(CNN1)通过卷积-池化结构层来代替BP算法的全连接,能减少网络中参数数量,取得更高精度的计算效果。各项评价指标均有所提升,检测率提升了5.74%,误报率降低了1.02%,精确度提升了4.28%,综合效果提升了5.13%。结果表明本研究算法能够以更低的误报率及更高的检测率识别异常交通流。

表2 检测结果

同时,为了区分不同结构层对检测精度的影响,本研究设置了两组对照组(单卷积-池化结构层)来比较结构层数量对检测性能的影响,分别为CNN2卷积层(64,4,24),池化层(64,2,12);CNN3卷积层(128,4,24),池化层(128,2,12);综合比较表2中3种卷积池化结构中,CNN1结构相较CNN2结构各指标均有优势,检测率和综合效果分别高出0.04%和2.92%;而相较于CNN3结构,误报率高出0.06%,精确度降低0.72%,但检测率高出5.33%,综合效果高出2.77%,可见CNN1的检测性能最好。并且CNN1算法识别类别0的精确度为100%,类别1的精确度为85.33%,类别2的精确度为98.21%。

对比上述试验可得,CNN能够更好地识别交通流的时空特性,比传统的神经网络具有更高的检测性能。

3 结论

本研究构建了基于CNN的交通事件检测算法,以浮动车为数据源,将计算得到的道路时间序列速度信息重构为具有时空特征的多维输入张量,利用多隐藏层进行特征提取,学习数据在时间及空间上的关联性,实现对城市道路交通事件的自动检测。试验结果表明,所提出的算法能够实现对突发事件的检测,具有较高的检测率与精确度,较低的误报率,具有较强的实用性和有效性。

由于构建大规模深度学习数据集的困难性,本研究在有限数据集的基础上进行了CNN多路段事件检测的探索性研究,对大规模的城市网络下的实时检测效果验证有待进一步拓展研究。

猜你喜欢
池化层池化卷积
基于高斯函数的池化算法
卷积神经网络中的自适应加权池化
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络模型研究分析*
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
卷积神经网络的分析与设计
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
基于全卷积神经网络的SAR图像目标分类*