李曉蕾
(寧波財(cái)經(jīng)學(xué)院,浙江 寧波 315175)
在交通道路維護(hù)中,實(shí)時(shí)交通監(jiān)控是一項(xiàng)復(fù)雜而富有挑戰(zhàn)的任務(wù)。傳統(tǒng)的交通監(jiān)控系統(tǒng)的監(jiān)控方案從高清攝像機(jī)中獲取或存儲(chǔ)數(shù)字視頻到計(jì)算機(jī)中,其流媒體數(shù)據(jù)通過mysql等數(shù)據(jù)庫技術(shù)保存數(shù)據(jù),而交警則通常采用手動(dòng)記錄行駛的車輛,通過路邊運(yùn)動(dòng)攝像機(jī)對(duì)車輛進(jìn)行計(jì)數(shù)的方法來進(jìn)行人工監(jiān)控。如果視頻分析沒有自動(dòng)完成,則需要大量的人工操作,并需要多方協(xié)同來手動(dòng)分析視頻中的場(chǎng)景。這些方法的人力成本和時(shí)間成本都相對(duì)昂貴。特別是交通事件的發(fā)生最常見的問題是車輛的顏色、尺寸和類型,這些信息用人力往往很難準(zhǔn)確地捕捉到,并且時(shí)常存在誤差?;谝曨l流的分析可以輔助交警或者交通管理人員對(duì)交通現(xiàn)場(chǎng)進(jìn)行快速處理,可以極大提升交通道路的安全性,因此視頻流分析技術(shù)一大重要應(yīng)用場(chǎng)景便是自動(dòng)化安全和監(jiān)視系統(tǒng)。執(zhí)法機(jī)構(gòu)、交通監(jiān)控工作站和組織都可以將視頻分析技術(shù)用于公共安全。與手動(dòng)應(yīng)用程序相比,自動(dòng)視頻分析需要較少的成本和人力來分析視頻流,因此得到了學(xué)術(shù)界和工業(yè)界的青睞。許樂等研究者用自動(dòng)化的視頻分析研究不同自動(dòng)化系統(tǒng)視頻圖格式,實(shí)現(xiàn)格式之間的轉(zhuǎn)化,減輕了數(shù)據(jù)維護(hù)人員的工作量[1]。視頻分析還可以幫助檢測(cè)人臉、車輛顏色和車牌等物體,完成自動(dòng)對(duì)象檢測(cè)、目標(biāo)分類等復(fù)雜的計(jì)算機(jī)任務(wù)[2]。其中對(duì)象檢測(cè)是交通監(jiān)控系統(tǒng)和執(zhí)法機(jī)構(gòu)應(yīng)用中最常見的技術(shù)之一,最常見的算法是模板匹配[3],使用高斯混合模型(GMM)進(jìn)行背景分離[4]和級(jí)聯(lián)分類器[5]。模板匹配僅適用于模板中定義的對(duì)象,但是這類方法計(jì)算量巨大,不適用于新對(duì)象時(shí)常出現(xiàn)或者消失的場(chǎng)景,因此不適用于交通視頻。背景幀提取方法是一種檢測(cè)在背景中移動(dòng)的對(duì)象并分離出來的方案,但是背景分離和幀差異也面臨計(jì)算成本高昂的問題,通常不適用于實(shí)時(shí)處理。江鵬宇用級(jí)聯(lián)分類器AdaBoost算法對(duì)運(yùn)動(dòng)目標(biāo)區(qū)域進(jìn)行行人檢測(cè),減小視頻中背景的干擾,加快檢測(cè)速度,并利用卡爾曼濾波算法和匈牙利最優(yōu)匹配算法對(duì)視頻監(jiān)控中的行人進(jìn)行跟蹤{6}。近年來Hadoop快速發(fā)展,為大規(guī)模數(shù)據(jù)處理提供了高效的解決方案。畢莎莎針對(duì)實(shí)時(shí)云轉(zhuǎn)碼系統(tǒng)中已轉(zhuǎn)碼的視頻媒體文件重新使用率不高的情況,引入轉(zhuǎn)碼緩存機(jī)制,采用云存儲(chǔ)空間緩存視頻,根據(jù)視頻資源的流行度和請(qǐng)求間隔來實(shí)時(shí)替換出效能值較小的視頻[7]。劉云恒等學(xué)者采用基于Hadoop技術(shù)的視頻大數(shù)據(jù)處理平臺(tái),并采用以Map-Reduce算法為基礎(chǔ)的人臉檢索與識(shí)別算法來實(shí)現(xiàn)公安視頻大數(shù)據(jù)的智能信息處理[8]。
使用基于Hadoop的GPU集群進(jìn)行視頻流分析可以從不同的資源(如GPS、社交媒體、物聯(lián)網(wǎng)、平板電腦、Web服務(wù)和視頻)生成大量數(shù)據(jù)[9]。在傳統(tǒng)的數(shù)據(jù)庫技術(shù)中,分析處理和存儲(chǔ)視頻數(shù)據(jù)是一項(xiàng)艱巨的任務(wù)[10],為了處理大量視頻數(shù)據(jù),可以在不同節(jié)點(diǎn)之間分配處理。大范圍內(nèi)可能有數(shù)百個(gè)甚至更多的攝像機(jī)在本地服務(wù)器上捕獲流和過程。視頻流分析需要大規(guī)模的計(jì)算,當(dāng)前很多企業(yè)采用云計(jì)算來完成這類海量計(jì)算,云計(jì)算可提高實(shí)時(shí)監(jiān)控交通視頻數(shù)據(jù)的效率。商業(yè)供應(yīng)商還提供視頻分析應(yīng)用程序。一個(gè)最常見的做法便是將Hadoop用于將視頻幀拆分為較小的單元,并以并行模式將它們轉(zhuǎn)換為一系列圖像幀。 HDFS通過多個(gè)物理磁盤群集存儲(chǔ)大量數(shù)據(jù)。分割成較小單元后的序列文件分布在HDFS的節(jié)點(diǎn)上,以提高處理速度。原始視頻流分為64 MB(默認(rèn))大小的塊[11]。錄像模塊將視頻流傳輸?shù)奖O(jiān)管站,并將視頻存儲(chǔ)在其本地存儲(chǔ)中。視頻流是從不同的地方捕獲,并由IP無線傳輸模塊通過媒體服務(wù)器傳輸?shù)奖O(jiān)控站。實(shí)況視頻流由監(jiān)管站處理,并存儲(chǔ)結(jié)果以供進(jìn)一步分析。有關(guān)車速、事故和交通擁堵,以及城市主要站點(diǎn)和線路可以存儲(chǔ)在Hive里。當(dāng)?shù)缆窊矶掳l(fā)生時(shí),Hive表可以向旅行者建議替代路線,當(dāng)檢測(cè)到道路交通事故時(shí),系統(tǒng)會(huì)向附近的醫(yī)院和公路救援隊(duì)發(fā)送警報(bào)。
對(duì)于交通視頻數(shù)據(jù)分析,交通異常的檢測(cè)是最重要的部分之一,在國(guó)內(nèi)的交通事故中,90%以上交通事故都和道路擁堵有關(guān)。因此本文重點(diǎn)研究Hadoop下交通擁堵的檢測(cè)和分級(jí)。
本文提出算法的主要核心是根據(jù)Hadoop中交通視頻得到的路網(wǎng)歷史數(shù)據(jù),對(duì)每個(gè)車道的合理速度值進(jìn)行整理和清晰,根據(jù)整個(gè)路段中每個(gè)時(shí)段不同方向上的信息,對(duì)每個(gè)路段每個(gè)時(shí)段的擁堵概率進(jìn)行先驗(yàn)判斷。通常來說,每個(gè)道路的擁堵狀態(tài)都具有一定的周期性特點(diǎn),特別是對(duì)于工作日而言,其出行規(guī)律具有較高的相似性。因此本文采用將1天24 h分為若干個(gè)時(shí)間段,統(tǒng)計(jì)各個(gè)時(shí)間段的擁堵概率。其主要流程如下:
(1)原始數(shù)據(jù)預(yù)處理:由于原始數(shù)據(jù)在采集過程中可能存在數(shù)據(jù)丟失、數(shù)據(jù)監(jiān)測(cè)出錯(cuò)等情況,因此首先用預(yù)處理進(jìn)行修正。將交通視頻的流量、速度和交通指揮部門的歷史數(shù)據(jù)進(jìn)行對(duì)比,將超過閾值范圍內(nèi)的流量和速度定義為錯(cuò)誤數(shù)據(jù)進(jìn)行修正,為了簡(jiǎn)化處理的復(fù)雜度,本文將超過閾值范圍內(nèi)的數(shù)據(jù)和缺失的統(tǒng)計(jì)數(shù)據(jù)用歷史平均數(shù)據(jù)來代替。
(2)交通擁堵判斷:本文將一天分解為144個(gè)時(shí)間段,每隔10 min是一個(gè)時(shí)間單位,在此基礎(chǔ)上計(jì)算如下指標(biāo):
車道占有率:
(1)
(2)
式中,N是一個(gè)方向上的車道個(gè)數(shù),車道占有率定義為汽車占用道路的時(shí)間比,i代表第i個(gè)車道,T代表觀測(cè)時(shí)間。
(3)
(4)
式中,speedi代表i車道的速度,vi代表i車道的流量。將交通部門在某一車道的歷史速度求解平均值,如果當(dāng)前速度speedi低于歷史平均值,則認(rèn)為可能出現(xiàn)了擁堵。
(3)擁堵率計(jì)算
某個(gè)時(shí)間點(diǎn)內(nèi)擁堵率計(jì)算如下:
(5)
式中,h代表對(duì)應(yīng)的時(shí)間段id,M是h時(shí)間內(nèi)通過車速低于歷史平均值的次數(shù),N是統(tǒng)計(jì)數(shù)據(jù)中歷史數(shù)據(jù)個(gè)數(shù)。
(4)計(jì)算路段異常度
本文將路段異常度定義為某天道路擁堵的異常程度,該指標(biāo)的數(shù)值越高,則路況越擁堵,發(fā)生交通狀況的可能性也大幅提高,因此需要交警部門進(jìn)行疏導(dǎo),從而避免事故的發(fā)生。異常度的計(jì)算流程如圖1所示。
圖1 異常度計(jì)算流程Fig.1 Calculation flow of abnormality degree
從圖1可以看出,在當(dāng)前速度大于閾值V時(shí),D=0-P(H),即異常度為負(fù)值(代表沒有交通異常發(fā)生),而當(dāng)當(dāng)前速度低于閾值V時(shí),則異常度為正值。
(5)數(shù)據(jù)實(shí)時(shí)更新
隨著時(shí)間的推移,道路周邊基礎(chǔ)設(shè)施如寫字樓的建成、地鐵的運(yùn)營(yíng)等因素,歷史擁堵數(shù)據(jù)會(huì)發(fā)生變化,因此需要采用實(shí)時(shí)更新的方式來保證歷史數(shù)據(jù)的準(zhǔn)確性。當(dāng)然交通視頻歷史數(shù)據(jù)的更新本身較為耗費(fèi)計(jì)算資源,為了減少不必要的重復(fù)計(jì)算,本文提出的分片更新算法如圖2所示。
圖2 歷史數(shù)據(jù)更新算法示意圖Fig.2 Schematic diagram of historical data update algorithm
更新算法的核心是將時(shí)間跨度范圍內(nèi)最早日期的擁堵狀況與當(dāng)前的狀況進(jìn)行比較,如果交通情況從擁堵恢復(fù)為不擁堵則記為M=-1,否則記為M=1。
從上述關(guān)于異常擁堵的算法中,可以看到由于本文算法對(duì)實(shí)踐切割相對(duì)較細(xì),因此要獲得全天144個(gè)時(shí)間段的擁堵情況,需要計(jì)算車道占有率、車道交通流量、車道平均速度,其計(jì)算復(fù)雜度較高,為了提高計(jì)算效率,本文采用分布式并行的方案來加快算法的運(yùn)行時(shí)間。本文采用Hadoop的MapReduce架構(gòu),利用HDFS將數(shù)據(jù)冗余備份,由于MapReduce的本地化數(shù)據(jù)技術(shù)能盡量減少網(wǎng)絡(luò)IO,而且節(jié)點(diǎn)可以自適應(yīng)實(shí)現(xiàn)負(fù)載均衡,因此本節(jié)的重心放在MapReduce的計(jì)算模型。
對(duì)于車道占有率,在MapReduce計(jì)算的Map階段,我們將數(shù)據(jù)按行切分,將代表時(shí)間段的字段COLLECT_TIME劃分到不同時(shí)間槽中,具體的時(shí)間段用time_id作為key,occ代表擁堵情況。在Reduce階段,對(duì)于相同的key求解value的算術(shù)平均值就可以獲得平均占有率。
對(duì)于車道流量,本文在一個(gè)時(shí)間段內(nèi)的某條道路進(jìn)行計(jì)算,設(shè)road_id為道路的id,flow為流量,因此將road_id和time_id設(shè)置為key,flow設(shè)置為value,對(duì)于相同的key求解所有value的和就得到了總流量。
對(duì)于車輛的平均速度,本文利用同一個(gè)道路上不同路段的way_id的數(shù)據(jù)speed、flow進(jìn)行匯集,將way設(shè)置為key、speed,flow設(shè)置為value,在reduce階段,式(3)和(4)可以分別算出車道平均速度和總速度。
本文選取浙江省某市的交通視頻監(jiān)控的200個(gè)采集點(diǎn)的數(shù)據(jù)進(jìn)行分析,其交通視頻監(jiān)控設(shè)備如圖3所示。
圖3 交通視頻監(jiān)控畫面Fig.3 Traffic video monitoring screen
標(biāo)注出該組的道路編號(hào),車道標(biāo)號(hào)way_id,車道流量為total_flow,speed是總速度,occ是車道占有率,本文的實(shí)驗(yàn)流程如下:
(1)數(shù)據(jù)預(yù)處理,如前文所述,由于視頻數(shù)據(jù)在分析過程中,可能存在一定的誤判或者丟失,因此為了提高數(shù)據(jù)的容錯(cuò)能力,本文先進(jìn)行預(yù)處理。其預(yù)處理規(guī)則見表1。
表1 錯(cuò)誤數(shù)據(jù)判別原則Tab.1 Error data discrimination principle
將上述數(shù)據(jù)按照“閾值關(guān)系理論” 進(jìn)行處理, 不符合要求的數(shù)據(jù)標(biāo)記為無效數(shù)據(jù)并進(jìn)行修正。
將經(jīng)過預(yù)處理的數(shù)據(jù)按照144 個(gè)10 min時(shí)間段從0點(diǎn)到24點(diǎn)的順序進(jìn)行排列,按照式(1~5)計(jì)算出當(dāng)前的歷史擁堵概率。 結(jié)果如圖4所示。從圖中可以看出,上午11∶00到11∶45擁堵概率接近45%, 下午18∶00 到19∶00擁堵概率在70%左右。
本文在選取了2019年8月16日的交通數(shù)據(jù)進(jìn)行異常度分析,其結(jié)果如圖4所示。
圖4 擁堵情況計(jì)算結(jié)果Fig.4 Calculation results of congestion
圖5 異常度計(jì)算Fig.5 Calculation of abnormality degree
通過異常度計(jì)算(如圖5所示),可知,異常度的取值在[0,1]之間,可以看到9∶50,13∶00,21∶00出現(xiàn)了明顯的異常,通過調(diào)取該市當(dāng)時(shí)的交通監(jiān)控視頻,我們發(fā)現(xiàn)這幾個(gè)時(shí)間點(diǎn)都出現(xiàn)了不同程度的交通事故,引起了車輛的緩行,最后導(dǎo)致道路流量產(chǎn)生了異常。
在計(jì)算復(fù)雜度上,本文采用傳統(tǒng)的分布式架構(gòu)方案進(jìn)行對(duì)比,在10臺(tái)8核16G的分布式服務(wù)器和對(duì)等的Hadoop集群中,選取2018年8月16日的交通視頻進(jìn)行計(jì)算,用計(jì)算延遲和處理時(shí)間來代表算法結(jié)果,統(tǒng)計(jì)如表2。
表2 計(jì)算延遲統(tǒng)計(jì)表Tab.2 Statistics of calculation delay
可以看到,本文提出的基于Hadoop方案的計(jì)算延遲可以控制在每10 min 2.1 s,基本可以滿足實(shí)時(shí)分析的需求,同時(shí)可以看到傳統(tǒng)分布式算法的計(jì)算延遲和計(jì)算總時(shí)間隨著時(shí)間的加長(zhǎng)有惡化的趨勢(shì),但是本文方案可以有效避免這一情況。
本文對(duì)Hadoop大數(shù)據(jù)背景下的交通視頻監(jiān)控技術(shù)進(jìn)行了深入研究,并對(duì)交通路況異常擁堵進(jìn)行了分析, 然后闡述了基于交通視頻數(shù)據(jù)的異常堵點(diǎn)檢測(cè)算法的設(shè)計(jì)方案,利用擁堵概率、交通異常度等概念為交通狀態(tài)分析提出了精確指標(biāo)。 針對(duì)海量交通監(jiān)控視頻,本文設(shè)計(jì)了基于Hadoop組件MapReduce的并行實(shí)現(xiàn)算法,最后通過浙江省某市的實(shí)際交通數(shù)據(jù)驗(yàn)證算法的有效性和準(zhǔn)確性。經(jīng)過實(shí)驗(yàn)證明,本文算法可以有效計(jì)算出交通擁堵情況和異常情況,對(duì)大數(shù)據(jù)背景下海量交通監(jiān)控視頻的分析提供有益參考。