閆江南,楊 帥,崔育帥
(天津工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300387)
(1)研究背景及意義
日益突出的交通問題,使得我們越來越意識到優(yōu)化調(diào)度的方法存在滯后的毛病,除卻提高公交出行比例外,思考如何提高實(shí)時(shí)數(shù)據(jù)處理是極為重要的。因此一款智能交通系統(tǒng)的設(shè)計(jì)變得十分有意義,我們通過采集各個(gè)路段不同公交線路,車站站牌的人流量,加以不同時(shí)間段,季節(jié)分析,可以得到多維度的測量數(shù)據(jù),利用系統(tǒng)去進(jìn)行統(tǒng)計(jì)分析,從而對客流調(diào)度、乘客行為預(yù)測、商圈規(guī)劃都邁出了戰(zhàn)略性的一步。
通過建立正確的模型來分析客流特征,并用所嵌入的高清攝像頭進(jìn)行人群信息采集,實(shí)時(shí)地進(jìn)行數(shù)據(jù)回傳,利用改進(jìn)的算法可以大幅提高人數(shù)統(tǒng)計(jì)的精確度,從而滿足城市公交的智能化發(fā)展。
(2)國內(nèi)外研究情況
1. 國內(nèi)情況
國內(nèi)的統(tǒng)計(jì)情況可能略顯單?。阂皇侨斯じ嚪?,二是駐點(diǎn)式目測客流調(diào)查法[1]。這兩者無疑都消耗了巨大的人力、財(cái)力,而且還有可能造成統(tǒng)計(jì)上的不準(zhǔn)確,數(shù)據(jù)上的偏差等等,具有強(qiáng)烈干擾性。
2. 國外情況
關(guān)于西方國家常用的測重技術(shù)、紅外技術(shù)、圖像技術(shù),以下是一些闡述:
①車輛測重計(jì)數(shù)器:空氣彈簧的氣路上安裝有壓力傳感器[2],通過檢測氣囊的壓縮程度,對比支撐截面與溫度補(bǔ)償,傾斜補(bǔ)償?shù)鹊葦?shù)據(jù)換算成重量,再進(jìn)行計(jì)數(shù)。
②紅外線客流計(jì)數(shù)器:利用紅外光幕通過發(fā)射頭向區(qū)域外發(fā)散定波波長的紅外線,之后用傳感器收集反射回來的光線,從而可以識別上下車的方向,達(dá)到統(tǒng)計(jì)人數(shù)目的。
③3D傳感客流計(jì)數(shù)器:圖像識別與前兩種相比要顯得較為高端一些,同樣是通過傳感器檢測,不同的是掃描人體輪廓進(jìn)而得出立體的人體數(shù)據(jù),再參照立體反射面的駝峰形狀,進(jìn)而用單片機(jī)計(jì)算,從而判斷出人數(shù)。
(3)總結(jié)比較
傳統(tǒng)的采集方法及弊端:
調(diào)查周期,后期維護(hù),實(shí)時(shí)程度這每一項(xiàng)都是人工調(diào)查的硬傷,如果再加上天氣等不可控因素,就會(huì)導(dǎo)致調(diào)度人員無法做出準(zhǔn)確的反饋。而對于壓力側(cè)重計(jì)數(shù)這種方式,有著不能判斷上下車方向、多人情況偏差、可維護(hù)性差的缺陷。另外由于紅外設(shè)備的造價(jià)高昂,并且軍民一體可能引發(fā)技術(shù)敏感問題,所以導(dǎo)致其在具體應(yīng)用上受到很大限制。
由此可知,傳統(tǒng)的采集方法很可能無法滿足當(dāng)下的管理需求,如果使客流信息化,可統(tǒng)計(jì)性是亟待解決的問題。因而在本系統(tǒng)中運(yùn)用了車載設(shè)備來解決這個(gè)難點(diǎn)。
本系統(tǒng)將通過在公交車前后門的上部嵌入攝像頭,利用傳感器檢測從乘客身上反射回來的光線以及對乘客進(jìn)行一系列操作,包括形體捕捉和特征提取[3],從而識別并統(tǒng)計(jì)乘客上下車方向及人數(shù)。這種方法可以有效地規(guī)避環(huán)境光線,溫度等影響,對于識別多人,同反向,滯留等狀態(tài)具有較強(qiáng)的干擾性與極高的識別度。
本系統(tǒng)的主要功能是基于移動(dòng)端出行記錄數(shù)據(jù)與攝像頭定點(diǎn)數(shù)據(jù)的反饋采集,數(shù)據(jù)庫的存儲(chǔ)策略主要分兩條信息網(wǎng),一是以個(gè)人發(fā)散的軌跡網(wǎng),二是以站臺(tái)反饋的數(shù)據(jù)網(wǎng),人群與站臺(tái)屬于交界點(diǎn)的兩個(gè)直觀審查元素,又相互耦合,所以選擇一條出行記錄作為記錄分子:
圖1 記錄分子所記錄的內(nèi)容Fig.1 Recorded contents of molecule
記錄分子的數(shù)據(jù)來源于移動(dòng)端出行的記錄,系統(tǒng)通過對用戶的上車點(diǎn)與下車點(diǎn)進(jìn)行監(jiān)控[4],每當(dāng)用戶發(fā)出一條導(dǎo)航信息或者查看到站信息的時(shí)候,會(huì)對當(dāng)前用戶基礎(chǔ)信息、地理信息、站臺(tái)及線路等字段進(jìn)行時(shí)間戳標(biāo)記,方便對區(qū)域斷面數(shù)據(jù)做出整理統(tǒng)計(jì)。其主體功能由三部分組成:
(1)到站提醒
所謂移動(dòng)導(dǎo)航,目前只有兩種:GPS定位和基站定位[5]。GPS定位是通過 GPS衛(wèi)星鎖定手機(jī)的GPS芯片,這是最準(zhǔn)確的定位方法,誤差理論上可以達(dá)到一米的距離。同時(shí)基本上所有的軟件都是可以用GPS導(dǎo)航的。而基站定位則是通過手機(jī)的移動(dòng)數(shù)據(jù)獲取周圍的基站從而鎖定乘客的位置。這個(gè)誤差就很大,所以不能用這個(gè)導(dǎo)航。本系統(tǒng)中,把每一條公交線路抽象成一條線,線上的每個(gè)節(jié)點(diǎn)當(dāng)作公交站臺(tái)。當(dāng)乘客所在位置快到公交站臺(tái)的時(shí)候,當(dāng)作一個(gè)閾值范圍,并以手機(jī)廣播(broadcast)的方式進(jìn)行消息推送。
當(dāng)本系統(tǒng)在開發(fā)需要和服務(wù)器交互的應(yīng)用程序時(shí),基本上都需要獲取服務(wù)器端的數(shù)據(jù),一般來說有兩種方法:第一種是客戶端使用 Pull(拉)的方式,也就是隔一段時(shí)間就去服務(wù)器上獲取一下信息,看是否有更新的信息出現(xiàn)。第二種就是服務(wù)器使用Push(推送)的方式,如果服務(wù)器端收到新信息,則把最新的信息Push到客戶端上。這樣,客戶端就能自動(dòng)的接收到消息。
(2)地圖導(dǎo)航與POI檢索
對用戶而言,POI的存在,能快速找到目的地從而便捷出行。實(shí)現(xiàn)區(qū)域檢索大致分為以下幾個(gè)步驟:
①根據(jù)點(diǎn)的坐標(biāo)信息,分配到全國的區(qū)縣行政區(qū)劃中去;
②對于每個(gè)行政區(qū)劃中的點(diǎn)數(shù)據(jù),以行政區(qū)劃多邊形和點(diǎn)集為對象,建立Voronoi圖;
③記錄 Voronoi圖面積最小對應(yīng)的點(diǎn),并認(rèn)定其重要性最低;
④最后刪除重要性最低的點(diǎn),再次建立 Voronoi圖[6]。
這樣就可以理解為將所有的點(diǎn)要素?cái)?shù)據(jù)做一個(gè)重要性框選與排序。與此相比,導(dǎo)航只需要獲取到起點(diǎn)和終點(diǎn)的經(jīng)緯度信息,然后分別把起點(diǎn)和終點(diǎn)當(dāng)做這條導(dǎo)航路線的兩個(gè)節(jié)點(diǎn),并把這兩個(gè)節(jié)點(diǎn)加入到一個(gè)節(jié)點(diǎn)集合中去,然后再把該集合傳入到一個(gè)路線規(guī)劃監(jiān)聽接口類中,該接口類會(huì)根據(jù)內(nèi)部封裝的路徑算法,然后再把各個(gè)途徑各個(gè)節(jié)點(diǎn)加入到該集合中。如是再三,就可以確定每一個(gè)點(diǎn)的重要性信息。其構(gòu)造過程分為三個(gè)步驟:
①發(fā)起算路:算路設(shè)置起、終點(diǎn),算路偏好,是否模擬導(dǎo)航等參數(shù),然后在回調(diào)函數(shù)中設(shè)置跳轉(zhuǎn)至誘導(dǎo)。
②開始導(dǎo)航:創(chuàng)建誘導(dǎo)View,并接收回調(diào)事件。在activity生命周期內(nèi)調(diào)用誘導(dǎo)BNRouteGuiderManager對應(yīng)的生命周期函數(shù)。核心代碼為:
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);createHandler();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {}
View view = BNRouteGuideManager.getInstance().onCreate(this, new OnNavigationListener() {
@Override
public void onNaviGuideEnd() {
finish();
}
@Override
public void notifyOtherAction(int action-
Type, int arg1, int arg2, Object obj) {
}
});
③直至最后設(shè)置播報(bào)模式即可成功規(guī)劃線路。(3)擁擠度呈現(xiàn)
該功能基于乘客起始點(diǎn)的地理位置,對周圍不同范圍內(nèi)的公交線路進(jìn)行信息回傳,隨信號點(diǎn)位置大小排列,擁擠度利用傳統(tǒng)的紅綠黃三色對用戶進(jìn)行必要提示。
客流統(tǒng)計(jì)是系統(tǒng)實(shí)時(shí)采集數(shù)據(jù)的根本,其來源于車載攝像頭的實(shí)時(shí)分析,通過計(jì)算每個(gè)站臺(tái)視頻畫面中人數(shù)的流量從而對車上擁擠度進(jìn)行準(zhǔn)確判斷。而精確度的關(guān)鍵在于攝像頭所識別出的人數(shù)是否與實(shí)際匹配,其度量需要經(jīng)過三個(gè)步驟:目標(biāo)檢測、目標(biāo)跟蹤、乘客行為分析。
目標(biāo)檢測是計(jì)算機(jī)視覺處理極其重要的一環(huán),其焦點(diǎn)置于所選目標(biāo)的位置及劃定范圍,其基本過程與模式識別極為相似,包括了圖像數(shù)據(jù)、預(yù)處理、特征提取、分類器訓(xùn)練、目標(biāo)檢測五部分[7],其中的特征提取與分類器訓(xùn)練都是影響最后準(zhǔn)確度的主要因素,因此如何讓算法得到提升變得極為重要。
以公交車為例,在前后車門各安裝一組攝像頭,針對人體的頭部和肩部進(jìn)行特征提取,因?yàn)檐|干部分往往容易在人流密集時(shí)期被遮擋,所以將乘客明顯特征作為目標(biāo)正樣本,這樣會(huì)降低膚色、光照、噪聲以及陰影的影響。
為了獲得真正意義上的邊緣前景,增強(qiáng)其干擾性,對當(dāng)前幀的邊緣圖像與背景的邊緣圖像進(jìn)行了做差計(jì)算。之后利用圓檢測進(jìn)行輪廓識別,有效的進(jìn)行了目標(biāo)檢測,相比其他方法更易于操作,識別率高,為客流統(tǒng)計(jì)系統(tǒng)提供了強(qiáng)有力的依據(jù)。
一旦記錄分子有了數(shù)據(jù)基礎(chǔ),我們就可以對結(jié)果進(jìn)行統(tǒng)計(jì)分析。PC端的主體功能為:實(shí)現(xiàn)對用戶數(shù)據(jù)、站臺(tái)數(shù)據(jù)、遷徙路線的可視化分析,可以為決策者提供管理結(jié)局方案。
但是我們從什么角度進(jìn)行數(shù)據(jù)分析呢?眾所周知,公交客流受到諸多因素的影響,預(yù)測時(shí)段越短,客流特征變化的隨機(jī)性和不可預(yù)測性就會(huì)越強(qiáng)[8],只有找出短時(shí)客流變化中最具相關(guān)的影響元素,才能去做行為預(yù)測。
為了對數(shù)據(jù)進(jìn)行合理評估,本系統(tǒng)根據(jù)車載攝像頭采集的客流數(shù)據(jù),將上車人數(shù)記為點(diǎn) E,將下車人數(shù)記為點(diǎn) O,預(yù)計(jì)到站記為點(diǎn) S,到站時(shí)間記為點(diǎn) T,標(biāo)記站臺(tái)的斷面客流量,分析周圍商圈記錄人群的趨向,從而利用車載攝像頭采集的數(shù)據(jù)和GPS結(jié)合來對日時(shí)段、周時(shí)段、月時(shí)段的變化規(guī)律做出有效歸納,為公交調(diào)度提供良好的解決方案。
圖2 記錄客流數(shù)據(jù)的模擬圖Fig.2 Simulation graph of recording passenger flow data
(1)數(shù)據(jù)推送部分
系統(tǒng)中使用移動(dòng)通訊的云巴服務(wù)進(jìn)行開發(fā)。Android SDK會(huì)啟動(dòng)一個(gè)后臺(tái)的Service,創(chuàng)建并保持到服務(wù)器的長連接,從而保證了消息推送的實(shí)時(shí)性。云巴采用MQTT協(xié)議,其特點(diǎn)有:二進(jìn)制,非常精簡,適合做大量節(jié)點(diǎn)弱網(wǎng)絡(luò)差的場景,適用于現(xiàn)有移動(dòng)互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施;MQTT是天然的訂閱發(fā)布系統(tǒng),有權(quán)限的人都可以發(fā)消息;開源的協(xié)議和實(shí)現(xiàn);擴(kuò)展方便且輕量級。因?yàn)閰f(xié)議精簡,相比XMPP本身標(biāo)簽和編解碼不耗費(fèi)流量,使用云巴做實(shí)時(shí)通訊在節(jié)省流量的同時(shí)也減少了耗電。
圖3 數(shù)據(jù)推送流程圖Fig.3 Data push flow chart
(2)線路規(guī)劃部分
百度Andriod 導(dǎo)航SDK為Android移動(dòng)端應(yīng)用提供了一套簡單易用的導(dǎo)航服務(wù)接口,本系統(tǒng)引入地圖與POI功能對用戶的使用習(xí)慣進(jìn)行記錄,用戶可以將隨行地點(diǎn)收藏至常用地,利用歷史檢索進(jìn)行sug建議。針對個(gè)性化出行模式引入線路方案推薦,從而節(jié)省了用戶的時(shí)間成本。
(3)實(shí)時(shí)公交部分
圖4 線路規(guī)劃部分成果圖Fig.4 Partial results graph of line planning
本系統(tǒng)用到站距離與估測時(shí)間提示乘客合理安排自己的時(shí)間,以便能夠及時(shí)乘坐相應(yīng)的公車線路。對于擁擠程度本系統(tǒng)加入了信號燈標(biāo)識車上的人數(shù),用戶可通過處于[紅色,黃色,綠色]區(qū)間的顏色做出判斷是否乘車,一方面便利了民眾出行,另一方面有效地降低了交通擁堵發(fā)生的概率。期間設(shè)置了一個(gè)時(shí)間閾值,利用站臺(tái)與站臺(tái)所用時(shí)間做方差,限制請求頻率,及時(shí)地為乘客推送更新的線路信息。
圖5 實(shí)時(shí)公交部分成果圖Fig.5 Partial results graph of real time bus
(4)數(shù)據(jù)分析部分
按理來說只有單調(diào)的數(shù)據(jù)是無法為公交調(diào)度呈現(xiàn)出直觀參考的,為此本系統(tǒng)推行的方向是數(shù)據(jù)可視化,其主要旨在借助于圖形化手段,清晰有效地傳達(dá)與溝通信息。ECharts作為國內(nèi)應(yīng)用最廣泛的前端可視化生成工具,提供了豐富的圖表展現(xiàn)方式和便捷的圖表操作。
本系統(tǒng)通過對時(shí)節(jié)分段、線路分流的統(tǒng)計(jì)方法對所手機(jī)的信息進(jìn)行了圖表處理,有針對性地選擇合適的方案。公交客流的分布特性分析從時(shí)間分布特性,人群分布特性及影響因素[9]分析入手。由于線路類型、運(yùn)營時(shí)間、站點(diǎn)數(shù)目等的不同,各條公交線路的客流分布必然存在差異,因此有必要根據(jù)線路號,對其各個(gè)時(shí)段的客流量進(jìn)行進(jìn)行統(tǒng)計(jì)分析,以觀察各條線路客流的特征并做對比。
圖6 某線路各個(gè)時(shí)段客流量數(shù)據(jù)分析樣圖Fig.6 Analysis sample graph of passenger flow data of each different time section of a line
由于人群早出與晚歸流向基本處于相反的一致性,所以在工作日公交客流呈現(xiàn)比較明顯的特征,具有時(shí)空周期的規(guī)律性,給分析帶來了極大方便??紤]到用地環(huán)境這一因素,根據(jù)已有研究,乘客的下車概率會(huì)根據(jù)途經(jīng)站點(diǎn)的數(shù)量服從泊松分布[10],如公式(1)所示:
其中等式左邊的 i站點(diǎn)在上車 j站點(diǎn)下車的概率,λ表示出行途經(jīng)站點(diǎn)數(shù)量,當(dāng)i站點(diǎn)以后的數(shù)量小于平均站點(diǎn)數(shù)時(shí),λ = m - i 。
(5)商圈規(guī)劃
本系統(tǒng)在移動(dòng)端出行中加入了常用地點(diǎn)及收藏等功能,不僅僅是便利用戶體驗(yàn),更重要的方面在于記錄出行因子,用戶收藏的常用地點(diǎn)標(biāo)志著每日的出行軌跡,是用作考量公交調(diào)度的重要影響因素之一,由此建立起來的數(shù)據(jù)報(bào)表可以為商圈規(guī)劃提供參考依據(jù),用戶建立的每一條地址條目會(huì)被用來做行為預(yù)測的自變量,為智慧出行做出隱形的貢獻(xiàn)。
本文利用了車載攝像頭采集的人數(shù)流量與GPS數(shù)據(jù),加以時(shí)間上的同步性,匹配站臺(tái)、線路,對不同日時(shí)段、周時(shí)段、月時(shí)段進(jìn)行客流分析,找出了其時(shí)空分布的不均衡特性和周期變化規(guī)律。在目標(biāo)檢測領(lǐng)域應(yīng)用了改進(jìn)的Hough圓變換檢測[11]從而提升了算法精確度,利用收集的客流數(shù)據(jù)為系統(tǒng)的可視化統(tǒng)計(jì)提供了強(qiáng)力支持,為視頻客流分析領(lǐng)域提供了結(jié)合互聯(lián)網(wǎng)的新思路。