施俊慶,陳林武,李素蘭,孟國(guó)連,夏順?gòu)I
(1. 浙江師范大學(xué) 工學(xué)院, 浙江 金華 321004;2. 浙江師范大學(xué) 浙江省城市軌道交通智能運(yùn)維技術(shù)與裝備重點(diǎn)試驗(yàn)室, 浙江 金華 321004;3. 武漢市橋梁維修管理處, 湖北 武漢 430014)
城市道路發(fā)生交通事件之后,往往會(huì)造成道路通行能力下降,形成偶發(fā)性交通擁堵。如果不能及時(shí)有效地處理交通事件,可能會(huì)造成交通擁堵惡化,導(dǎo)致路網(wǎng)內(nèi)的大面積擁堵,嚴(yán)重時(shí)可導(dǎo)致交通癱瘓。及時(shí)有效地檢測(cè)并疏導(dǎo)城市道路交通事件,是緩解城市交通擁堵的有效途徑,也是交通管控的重要組成部分。
交通事件檢測(cè)分為非自動(dòng)檢測(cè)和自動(dòng)檢測(cè)兩種。非自動(dòng)檢測(cè)以人工的方式來(lái)檢測(cè)并報(bào)告交通事件。自動(dòng)檢測(cè)通過(guò)識(shí)別和分析交通流參數(shù)的變化來(lái)判別交通事件,主要包括比較算法、統(tǒng)計(jì)算法和時(shí)間序列算法等[1]。比較算法中的加州算法是最早也是最典型的交通事件自動(dòng)檢測(cè)(Automatic Incident Detection, AID)算法,該算法根據(jù)相鄰檢測(cè)器之間的占有率差值判別交通事件[2]。在此之后又相繼出現(xiàn)了多種算法,如對(duì)加利福尼亞算法進(jìn)行改進(jìn)的多目標(biāo)事件檢測(cè)算法(APID)[3]、貝葉斯算法[4]、標(biāo)準(zhǔn)正態(tài)偏差算法[5]、隨機(jī)森林法[6]、小波變換理論算法[7-8]和粒子群算法SVM模型[9]等。上述方法在高速公路以及城市快速路系統(tǒng)中得到了很好的應(yīng)用[10]。
大多數(shù)AID算法都以感應(yīng)線圈檢測(cè)器數(shù)據(jù)為主。隨著GPS設(shè)備的不斷完善,通過(guò)浮動(dòng)車(chē)數(shù)據(jù)(Floating Car Data, FCD)能夠更為精確實(shí)時(shí)地獲取車(chē)輛信息(如位置、速度和行駛方向等),且成本更低,為事件檢測(cè)提供了新的契機(jī)[10]。同時(shí),有研究證明浮動(dòng)車(chē)能夠充分監(jiān)控道路中的交通變化[11],已被廣泛用于交通狀態(tài)的判別[12-15]。文獻(xiàn)[12-13]利用浮動(dòng)車(chē)數(shù)據(jù)進(jìn)行了交通狀態(tài)的判別,研究了擁堵傳播規(guī)律。文獻(xiàn)[14]分析了高速公路上FCD比例對(duì)交通狀態(tài)判別的影響,結(jié)果顯示使用5%~10%滲透率的FCD就能準(zhǔn)確估測(cè)交通狀態(tài)。
近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)在多目標(biāo)識(shí)別和分類(lèi)領(lǐng)域中的優(yōu)異性能,使其備受關(guān)注,在交通預(yù)測(cè)和評(píng)估領(lǐng)域得到了廣泛應(yīng)用,比如道路車(chē)速預(yù)測(cè)[16-17],行程時(shí)間預(yù)測(cè)[18]和交通流預(yù)測(cè)[19]等。針對(duì)事件檢測(cè)領(lǐng)域,通常將CNN與視頻監(jiān)控?cái)?shù)據(jù)相結(jié)合來(lái)進(jìn)行交通事件的檢測(cè)[20];也有研究將采集到的檢測(cè)器數(shù)據(jù)轉(zhuǎn)化為對(duì)應(yīng)的二維灰度圖片數(shù)據(jù),實(shí)現(xiàn)多路段異常交通狀態(tài)的判斷,但算法未能充分考慮數(shù)據(jù)的周期性變化[21]。
然而,現(xiàn)階段的大多數(shù)算法并不能很好地詮釋道路網(wǎng)絡(luò)的空間相關(guān)性,且大多數(shù)算法是圍繞高速公路或城市快速路的交通事件檢測(cè)展開(kāi)研究,少有對(duì)信號(hào)控制條件下的城市道路交通事件進(jìn)行研究。本研究利用浮動(dòng)車(chē)數(shù)據(jù),分析交通流的時(shí)空依賴(lài)性,重構(gòu)城市道路交通流時(shí)空特征信息,提出了一種基于CNN的城市道路交通事件檢測(cè)算法,并利用武漢市江漢區(qū)實(shí)測(cè)數(shù)據(jù)對(duì)算法性能進(jìn)行驗(yàn)證。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)各層連接形式均為全連接,同時(shí)隱藏層層數(shù)相對(duì)較少。CNN與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的主要區(qū)別在于它在全連接層之前增加卷積-池化層,通過(guò)重復(fù)使用卷積和池化操作進(jìn)行特征提取,使得網(wǎng)絡(luò)中的高層結(jié)構(gòu)能夠更好地獲得底層信息,從而組合低層特征來(lái)構(gòu)造高層特征。
在構(gòu)建CNN交通事件檢測(cè)算法時(shí),首先提取算法輸入張量,其次構(gòu)建CNN隱藏層結(jié)構(gòu),提取數(shù)據(jù)特征,然后訓(xùn)練檢測(cè)模型,學(xué)習(xí)交通信息的時(shí)空關(guān)聯(lián)性,最后對(duì)算法性能進(jìn)行測(cè)試,分析評(píng)價(jià)算法檢測(cè)效果。
Ma等[16]用一個(gè)時(shí)空矩陣來(lái)記錄時(shí)間序列下不同道路空間中的交通信息。本研究將道路按照交叉口分段設(shè)置,通過(guò)時(shí)空矩陣來(lái)描述完整的道路交通流時(shí)變信息。因此,CNN的輸入張量可用X∈Rn×k×u表示,其中n表示通道數(shù),k×u為時(shí)空矩陣。道路網(wǎng)中單通道矩陣X形式如公式(1)所示。
(1)
式中,xku為路段u在時(shí)間k下的交通信息數(shù)據(jù)值。
CNN的隱藏層包括卷積層、池化層和全連接層等,通過(guò)前向傳播和后向傳播兩個(gè)階段,對(duì)結(jié)構(gòu)層中的參數(shù)進(jìn)行更新。前向傳播是將輸入層信息經(jīng)過(guò)各隱藏層計(jì)算,傳輸至輸出層給出輸出結(jié)果。反向傳播是通過(guò)梯度下降法對(duì)CNN中各層參數(shù)進(jìn)行更新修正,極小化損失函數(shù),最大限度地保證輸出結(jié)果與預(yù)期結(jié)果相一致[22]。
卷積層是CNN模型中最為核心的一層,由若干個(gè)神經(jīng)單元組成。假設(shè)與卷積層(第l層)直接相連的輸入張量為Xl∈Rn×p×q,其中,p和q分別為矩陣高度和寬度。第l層激活函數(shù)輸出al的計(jì)算如公式(2)所示。
al=f(Wl?Xl+bl),
(2)
式中,f為激活函數(shù);Wl∈Rm×h×h為卷積核的權(quán)矩陣(即,濾波器);m為濾波器個(gè)數(shù);h為濾波器的尺寸;bl為卷積層的偏執(zhí);?為卷積運(yùn)算。常見(jiàn)的激活函數(shù)有ReLU,Sigmoid,Tanh和Softmax等。其中,激活函數(shù)ReLU:f(x)=max(x,0)相較于其他函數(shù)收斂速度更快[23],因此本研究選取ReLU作為卷積層激活函數(shù)。
全連接層各層之間所有神經(jīng)元相互連接,并使用激活函數(shù)實(shí)現(xiàn)非線性映射。第l層激活函數(shù)輸出al的計(jì)算如公式(3)所示。
al=f(zl)=f(WlXl+bl),
(3)
式中,zl為全連接層(第l層)的原始輸出;Xl為全連接層輸入。
輸出層使用Softmax函數(shù)計(jì)算不同類(lèi)別的概率分布,并選擇最大概率類(lèi)別作為輸出,具體計(jì)算如公式(4)所示[23]。
(4)
式中pj為第j類(lèi)別輸出的概率;zj為第j類(lèi)別輸出值;O為類(lèi)別總數(shù),且所有類(lèi)別概率累加和為1。
輸出與期望之間的誤差計(jì)算如式(5)所示。
(5)
全連接層之間的參數(shù)梯度如式(6)所示:
δ(l-1)=[δl(wl)T]·f′(zl-1),
?wl=δl(al-1)T,
?bl=δl,
(6)
式中,δl為第l層原始輸出的誤差;·為矩陣Hadamard乘積。
對(duì)于池化層,直接將誤差反向傳播至上一層,無(wú)需校準(zhǔn)全矩陣。
對(duì)于卷積層,各參數(shù)的梯度計(jì)算如式(7)所示。
?wl=al-1*δl,
(7)
式中*為互相關(guān)運(yùn)算。
各層的權(quán)值修正如式(8)所示。
bj=bj-β?bj,
(8)
式中,β為學(xué)習(xí)速率;λ為正則化參數(shù);M為樣本數(shù)。
Step 1:初始化各層網(wǎng)絡(luò)及其參數(shù)(權(quán)值、閾值、濾波器尺寸、池化窗口尺寸等)和學(xué)習(xí)速率,轉(zhuǎn)至Step 2。
Step 2:輸入數(shù)據(jù)按前向傳播過(guò)程依次經(jīng)過(guò)卷積層、池化層、全連接層,并計(jì)算得到輸出數(shù)據(jù),轉(zhuǎn)至Step 3。
Step 4:誤差是否大于期望值。是,按反向傳播過(guò)程將誤差傳回網(wǎng)絡(luò)中,依次求得全連接層、池化層、卷積層誤差,并更新各層的參數(shù)(權(quán)值、偏執(zhí)等),轉(zhuǎn)至Step 5;否,結(jié)束訓(xùn)練,固定模型各參數(shù)。
Step 5:根據(jù)各層誤差更新相關(guān)權(quán)值,轉(zhuǎn)至Step 2。
本研究采用武漢市2019年4,5,6這3個(gè)月的浮動(dòng)車(chē)數(shù)據(jù)(約1.8萬(wàn)輛出租車(chē))和江漢區(qū)青年路的交通事故數(shù)據(jù)(約1 000條),對(duì)所提出的檢測(cè)算法進(jìn)行測(cè)試。研究區(qū)域道路結(jié)構(gòu)如圖1所示。
圖1 道路結(jié)構(gòu)
以某一起事故為例,2019年4月10日20:48:05接到報(bào)警“青年路常青路路口鄂A小型汽車(chē)號(hào)牌的士與渣土車(chē)擦碰”。根據(jù)事件信息,選取4月9日和4月10日20:15—21:45之間90 min的浮動(dòng)車(chē)數(shù)據(jù),計(jì)算該路段的行程速度,如圖2所示,與相同時(shí)段無(wú)事故時(shí)相比,事故路段浮動(dòng)車(chē)速度有一個(gè)明顯的下降過(guò)程。
圖2 路段速度變化
研究道路事故統(tǒng)計(jì)如圖3所示,速度特性如圖4所示。根據(jù)事故數(shù)據(jù)的初步統(tǒng)計(jì),事故發(fā)生時(shí)間、地點(diǎn)隨機(jī)性較大,每日事故量差距較小,且事故程度適中,總體工作日事故發(fā)生頻率較高。本研究使用的浮動(dòng)車(chē)數(shù)據(jù)采樣時(shí)間為10~15 s,并以每5 min為間隔上傳1次。因而本研究根據(jù)獲取得到的所有FCD,以5 min為單位計(jì)算道路區(qū)間平均速度,由圖4可以發(fā)現(xiàn),每日平均速度變化趨勢(shì)較為穩(wěn)定,周末相較于工作日早高峰有所延后。
圖3 交通事故周分布
圖4 路段速度變化
將研究區(qū)域(青年路及部分相交道路)按交叉口劃分為24個(gè)子路段,根據(jù)FCD上傳時(shí)間間隔,以5 min為單位計(jì)算各子路段平均速度,將1天劃分為288個(gè)時(shí)段。為提高算法精度,以20 min為單位,將1天劃分為285個(gè)時(shí)間片段,如第1個(gè)時(shí)間片段為00:00—00:20,第2個(gè)時(shí)間片段為00:05—00:25,依此類(lèi)推。
由圖4可知,周末交通流在時(shí)間上的變化與工作日有所差異,為減少數(shù)據(jù)差異性,本研究選用工作日的部分?jǐn)?shù)據(jù)進(jìn)行訓(xùn)練及測(cè)試,包括交通事故時(shí)段數(shù)據(jù)、400個(gè)高峰時(shí)段數(shù)據(jù)以及800個(gè)平峰時(shí)段數(shù)據(jù)。其中,交通事故時(shí)段數(shù)據(jù)為402起事故對(duì)應(yīng)的浮動(dòng)車(chē)數(shù)據(jù)(剔除缺失時(shí)段數(shù)據(jù)后)。數(shù)據(jù)集中,70%用于訓(xùn)練,30%用于測(cè)試。
輸入結(jié)構(gòu)設(shè)置為(2,4,24),其中第1個(gè)通道用于記錄連續(xù)20 min內(nèi)各子路段的交通信息;第2個(gè)通道用于記錄第1通道中各行數(shù)據(jù)所屬時(shí)段,其數(shù)值為各時(shí)段編號(hào)(1-288)。
對(duì)于模型的輸出層,本研究設(shè)定輸出類(lèi)別為0,1或2∶0表示為平峰期交通狀態(tài),1代表道路中有交通事故發(fā)生,2表示為高峰期交通狀態(tài)(0和2均為無(wú)交通事件類(lèi)別)。
構(gòu)建CNN算法時(shí),需要確定的關(guān)鍵參數(shù)有:卷積-池化層的超參數(shù)(濾波器和池化窗口大小)以及深度[10],由于沒(méi)有統(tǒng)一的方法來(lái)確定超參數(shù)的結(jié)構(gòu),因此本研究參考文獻(xiàn)[22,24],選擇濾波器尺寸為3×3,池化窗口大小為2×2以及最大池化函數(shù)。
CNN的深度也直接影響著算法的學(xué)習(xí)效率及性能。由于池化窗口大小為2×2,每次經(jīng)過(guò)池化后算法中的節(jié)點(diǎn)數(shù)會(huì)減半,針對(duì)本研究的輸入結(jié)構(gòu)最多需要2層卷積-池化結(jié)構(gòu)層。另外,假設(shè)學(xué)習(xí)速率β=0.01,正則化參數(shù)λ=5,誤差期望值為0.01。
本研究構(gòu)建的CNN事件檢測(cè)模型各層具體參數(shù)情況如表1所示。
表1 CNN事件檢測(cè)算法結(jié)構(gòu)及參數(shù)設(shè)置
為了檢驗(yàn)本研究所提出的算法用于交通事件檢測(cè)的有效性,本研究根據(jù)測(cè)試集對(duì)訓(xùn)練好的事件檢測(cè)模型進(jìn)行驗(yàn)證,通過(guò)對(duì)比BP算法的檢測(cè)效果,驗(yàn)證模型的實(shí)用性,具體結(jié)果如表2所示,其中,CNN1為表1結(jié)構(gòu)。對(duì)比表2 中的結(jié)果,可以發(fā)現(xiàn),相較于BP神經(jīng)網(wǎng)絡(luò)(全連接形式),本研究所提出的算法(CNN1)通過(guò)卷積-池化結(jié)構(gòu)層來(lái)代替BP算法的全連接,能減少網(wǎng)絡(luò)中參數(shù)數(shù)量,取得更高精度的計(jì)算效果。各項(xiàng)評(píng)價(jià)指標(biāo)均有所提升,檢測(cè)率提升了5.74%,誤報(bào)率降低了1.02%,精確度提升了4.28%,綜合效果提升了5.13%。結(jié)果表明本研究算法能夠以更低的誤報(bào)率及更高的檢測(cè)率識(shí)別異常交通流。
表2 檢測(cè)結(jié)果
同時(shí),為了區(qū)分不同結(jié)構(gòu)層對(duì)檢測(cè)精度的影響,本研究設(shè)置了兩組對(duì)照組(單卷積-池化結(jié)構(gòu)層)來(lái)比較結(jié)構(gòu)層數(shù)量對(duì)檢測(cè)性能的影響,分別為CNN2卷積層(64,4,24),池化層(64,2,12);CNN3卷積層(128,4,24),池化層(128,2,12);綜合比較表2中3種卷積池化結(jié)構(gòu)中,CNN1結(jié)構(gòu)相較CNN2結(jié)構(gòu)各指標(biāo)均有優(yōu)勢(shì),檢測(cè)率和綜合效果分別高出0.04%和2.92%;而相較于CNN3結(jié)構(gòu),誤報(bào)率高出0.06%,精確度降低0.72%,但檢測(cè)率高出5.33%,綜合效果高出2.77%,可見(jiàn)CNN1的檢測(cè)性能最好。并且CNN1算法識(shí)別類(lèi)別0的精確度為100%,類(lèi)別1的精確度為85.33%,類(lèi)別2的精確度為98.21%。
對(duì)比上述試驗(yàn)可得,CNN能夠更好地識(shí)別交通流的時(shí)空特性,比傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)具有更高的檢測(cè)性能。
本研究構(gòu)建了基于CNN的交通事件檢測(cè)算法,以浮動(dòng)車(chē)為數(shù)據(jù)源,將計(jì)算得到的道路時(shí)間序列速度信息重構(gòu)為具有時(shí)空特征的多維輸入張量,利用多隱藏層進(jìn)行特征提取,學(xué)習(xí)數(shù)據(jù)在時(shí)間及空間上的關(guān)聯(lián)性,實(shí)現(xiàn)對(duì)城市道路交通事件的自動(dòng)檢測(cè)。試驗(yàn)結(jié)果表明,所提出的算法能夠?qū)崿F(xiàn)對(duì)突發(fā)事件的檢測(cè),具有較高的檢測(cè)率與精確度,較低的誤報(bào)率,具有較強(qiáng)的實(shí)用性和有效性。
由于構(gòu)建大規(guī)模深度學(xué)習(xí)數(shù)據(jù)集的困難性,本研究在有限數(shù)據(jù)集的基礎(chǔ)上進(jìn)行了CNN多路段事件檢測(cè)的探索性研究,對(duì)大規(guī)模的城市網(wǎng)絡(luò)下的實(shí)時(shí)檢測(cè)效果驗(yàn)證有待進(jìn)一步拓展研究。