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