?

基于Spark的分布式車流量檢測方法設計與實現

2018-03-08 08:52牛新征
計算機測量與控制 2018年2期
關鍵詞:差法車流量分布式

張 洪,趙 平,伍 玲,牛新征

(1.電子科技大學 信息與軟件工程學院,成都 610054;2.自貢市公安局交通警察支隊,四川 自貢 643000;3.電子科技大學 計算機科學與工程學院,成都 611731)

0 引言

近年來,社會經濟發展的同時,推動了城市化道路的發展進程。城市道路中的車流量快速增長,促使智能交通系統(ITS,Intelligent Transport System)備受重視,基于視頻的車流量檢測[1-2]作為ITS的重要組成部分,它可以為城市道路的智能化調控(道路建設、紅綠燈智能控制等)提供基礎數據依據。將視頻處理技術應用到車流量檢測的方法主要有:幀差法[3]、背景差法[4]、光流法[5-6]等。

文獻[5]檢測精度高,但算法存在復雜度高以及計算量大等缺點。文獻[3]改進傳統幀差法實現檢測車流量,在預設的檢測帶內檢測出運動目標,并將運動目標轉換成數據對象,根據數據對象的變化進行車輛檢測。文獻[6]采用改進的三幀差法與光流法結合實現檢測運動對象的目的,從而減小處理的計算復雜度。文獻[4]采用改進的背景差法實現運動目標檢測,該算法對背景建模和閾值選取提出優化與改進,提升了檢測準確率和應對復雜場景的能力。

交通視頻數量的不斷增加,無疑為車流量檢測提出了更大的挑戰。處理批量大視頻數據的關鍵問題在于加快檢測速度,隨著云計算技術的不斷發展,解決處理大視頻數據的速度問題成為了可能,文獻[7-8]將基于云的視頻分析與GPU結合運用到交通監控系統中,成功的改善了視頻監控的處理速度問題。同時,MPI、MapReduce[9]等并行計算模型以及Hadoop、Spark[10]等大數據分布式計算框架的出現,為龐大且復雜的視頻數據在普通PC機上完成計算提供了較好的支持,也為視頻大數據提供良好的解決方案。文獻[11]將Spark運用到大規模視頻處理中,能較好的解決視頻處理速度問題。

本文創新性的將Spark分布式計算框架與傳統運動目標檢測算法(幀差法)結合,設計并實現一種準確率達90.5%,速度比傳統幀差法快528%的檢測方法。在保證準確率的同時,改善傳統幀差法在檢測批量交通視頻出現的處理速率慢的問題。

1 分布式車流量檢測系統結構與原理

1.1 分布式車流量檢測系統結構

分布式車流量檢測系統分為數據存儲層,數據計算層和系統應用層。數據存儲層為數據計算層提供數據支持,數據計算層為系統應用層提供核心算法支持,系統應用層為系統提供應用服務支持。具體來說,數據存儲作為數據輸入層,提供車流量檢測的數據輸入。系統數據使用HDFS實現數據的分布式存儲,以達到數據高可利用率和高容錯性目的;數據計算作為數據邏輯處理層,提供車流量檢測的核心算法實現。數據計算層使用幀差法完成車流量檢測、目標跟蹤與車輛統計功能,整個計算過程基于Spark分布式計算框架,將分布式車流量檢測任務分配與計算節點選擇都交給Spark,以達到簡化系統編程實現,以及從系統結構層面提升車流量檢測速度的目的;系統應用作為視頻處理結果的基本運用,提供車流量檢測的核心應用,包括車流量檢測和車輛信息持久化。車輛信息持久化基于HBase數據庫,以達到提升數據的高可用性與高可靠性的目的。系統結構如圖1所示。

1.2 運動目標檢測原理

視頻目標檢測與跟蹤通常包括:視頻圖像采集、圖像預處理、運動目標檢測、運動目標跟蹤、運動目標提取等主要部分,如圖2所示。

1.3 分布式車流量檢測算法原理

本文設計的分布式車流量檢測方法將Hadoop生態系統中的HDFS和HBase分別作為視頻文件和處理結果的存儲平臺??紤]到傳統視頻目標檢測算法的復雜度,本文選擇幀差法用于運動目標檢測,并采用運動目標位移量作為車輛跟蹤的依據。按照算法的處理流程,方法主要分為4個模塊:分布式視頻獲取模塊,視頻預處理與車輛檢測模塊,車輛跟蹤模塊,車流量統計入庫模塊。

2 分布式車流量檢測方法設計與實現

本文提出的方法可分為4個部分:視頻獲取、圖像預處理與車輛檢測、車輛跟蹤與統計、車輛信息持久化。車流量檢測算法流程如圖3 所示,分布式任務執行流程如圖4所示。具體實現步驟如下:

1)任務初始化:主控節點初始化車流量檢測任務,并序列化任務發送給可用的計算節點;

2)視頻獲?。河嬎愎濣c反序列化任務,獲取待檢測交通視頻存儲位置,并讀取視頻;

3)設置虛擬檢測線:計算節點根據待處理視頻大小設置虛擬檢測線位置;

4)圖像預處理與車輛檢測:計算節點對待處理的兩幀圖像進行預處理,并完成車輛檢測;

5)車輛跟蹤與統計:計算節點根據當前幀的車輛位移實現車輛跟蹤,并判斷車輛是否經過虛擬檢測線;

6)車輛信息持久化:計算節點將視頻的檢測結果返回主控節點,主控節點接收結果并持久化到HBase。

圖3 車流量檢測算法流程圖

分布式車流量檢測方法軟件編程主要基于Java語言,并配合開源分布式計算框架Spark和開源視頻圖像庫Java CV、FFmpeg。其中,視頻文件編解碼使用FFmpeg開源庫實現;幀差法的車輛檢測、跟蹤與統計使用Java CV開源視頻圖像處理庫實現;分布式數據獲取、任務分配、車流量檢測與檢測結果匯總使用Spark框架實現;車輛信息持久化存儲與獲取使用HBase API實現。

圖4 分布式車流量檢測任務執行流程圖

2.1 分布式視頻獲取

待處理的視頻文件存儲在HDFS中,Spark不能對視頻實現簡單的分割處理。因此,本文采用兩種方案完成視頻文件的獲取,第一種為讀取批量視頻文件,每個計算任務處理一個完整的視頻文件;另一種為讀取批量視頻,并采用視頻幀分割方法完成視頻讀取,每個計算任務處理一定量的視頻幀圖像數據集合。

根據兩種視頻讀取方案設計出兩種分布式檢測算法:基于視頻幀分割的Spark分布式車流量檢測算法(FBSVD,Frame-Based Spark Vehicle Detector)和基于完整視頻處理的Spark分布式車流量檢測算法(VBSVD,Video-Based Spark Vehicle Detector)。

第一種視頻讀取方案,只需獲取HDFS中視頻文件映射到本地的絕對路徑集合,并將視頻路徑信息發送給計算節點。

第二種視頻讀取方案,必須切割視頻幀圖像數據。首先,傳入任務總數,其中任務總數根據分布式集群中計算節點的CPU總核數進行設定,經驗表明任務總數適宜為集群中CPU總核數的2-3倍;然后,根據任務總數計算出各節點需要獲取到的視頻幀區間;最后,計算節點在執行任務時解碼視頻獲得需要處理的視頻幀圖像區間集合。具體操作偽代碼如下:

BeginInput任務數量N獲取待處理視頻總幀數n;根據N計算每個任務需處理的視頻幀數g;根據任務id獲取本任務需要讀取的視頻開始幀s;ifs+g>nthen本任務需要讀取的結束幀g=s+g;else本任務需要讀取的結束幀g=n;Output處理幀圖像集合End

2.2 圖像預處理與車輛檢測

本文通過使用圖像預處理技術做基礎操作,并使用幀差法檢測運動目標。具體實現步驟如下:

1)預處理:使用圖像二值化、高斯濾波、膨脹和腐蝕等方式完成待處理的兩幀圖像的預處理操作;

2)車輛檢測:使用第a幀和第a-1灰度圖像作差,根據差圖像判斷車輛目標的存在。

兩幀差分法檢測運動目標公式如下:

D=|I(x,y,a)-I(x,y,a-1)|

(1)

式中,I(x,y,a),I(x,y,a-1)分別表示第a幀和第a-1幀的灰度圖像,D為差分結果圖像。

檢測出運動目標之后,對檢測出的所有運動目標區域的面積記為Si,目標區域的寬高比記為a,然后使用閾值檢測的方式,判斷運動目標區域是否為車輛記為h,判斷公式如下:

(2)

式中,T1,T2和T3為經驗值,本文分別取為5000,2和0.5。

2.3 車流量跟蹤與統計

車流量跟蹤與統計實現步驟如下:

1)虛擬檢測線設置:實驗設定為檢測單向車道車流量,經過多次測試總結,檢測線設置為視頻高度的0.54倍,寬度的0.5倍;

2)車輛跟蹤:將檢測到的車輛加入待定車輛集合,并預計每個車輛在下一幀出現的可能方位。在檢測到當前幀出現的車輛目標時,判斷當前車輛的位移是否在待定車輛集合中某一車輛目標的合理位移范圍內,從而實現目標跟蹤;

3)車輛統計:當跟蹤的目標經過了預設的檢測線時,取消目標跟蹤,并將車輛數加1。

2.4 車流量信息持久化

通過車流量統計檢測到的車輛信息,匯總檢測視頻中的車流量數量,以及檢測的各車量信息,包括:車輛出現在視頻中的哪一幀,以及在二維圖像中的x,y坐標等,寫入HBase分布式數據庫。

2.5 分布式車流量檢測算法實現

算法實現按照分布式集群節點類型,分為Master節點主控功能和Worker節點任務計算功能。其中,Master節點作用為任務初始化、任務發起和任務結果回收入庫的功能,Worker節點作用為任務接收、任務執行和任務結果回送的功能。具體實現的核心偽代碼描述如下:

BeginInputV1,V2,…,VkMaster節點:初始化應用。序列化待處理視頻存儲位置,并將其發送給計算節點;Worker節點:反序列化任務處理視頻Vi位置;獲取視頻Vi的幀數n;for1ton預處理相鄰兩幀圖像;相鄰兩幀的差幀dFrame:dFrame=Is-In-1;獲取差幀中的運動區域集合M;whileM≠φdo ifSmi≥T1&&α>T2then if檢測該區域為已跟蹤的車輛then if車輛經過了檢測線then c=c+1;記錄該車輛信息到車輛集合N;Output所有視頻的車流量統計結果N’End

3 實驗結果與分析

為了檢驗本文提出的VBSVD算法的性能和有效性,實驗對兩個交通路段的批量5 min交通視頻進行測試,數據集名稱和包含真實車數如表1所示(路段A的測試集記為A-x,路段B的測試集記為B-x)。設計了三組實驗評價VBSVD:1)與本文提出的FBSVD算法和幀差法之間在測試集A-4和B-4的比較;2)VBSVD在不同測試集的比較;3)VBSVD算

表1 測試集信息表

法使用不同CPU核數測試B-4,相對于傳統幀差法測試B-4的比較。

實驗采用普通四臺PC機作為實驗測試的分布式集群平臺,其中三臺計算節點(Inter 4核,8 GB內存,CentOS 7操作系統),一臺主控節點(Inter 2核,2 GB內存,CentOS 7操作系統)。

表2展示了本文提出的FBSVD、VBSVD以及傳統幀差法針對A-4的準確率和檢測時間結果,圖5展示了3種檢測算法在路段A的不同數據集的處理時間對比。結果表明,VBSVD算法與傳統幀差法具有相同的檢測準確率,VBSVD算法比FBSVD算法準確率高3.3%;VBSVD算法比傳統幀差法檢測速度快510%,傳統幀差法比FBSVD快252%。

表2 傳統幀差法、FBSVD、VBCVD測試A-4的結果表

圖5 傳統幀差法、FBSVD、VBCVD測試路段A的不同數據集的時間對比

算法檢測車輛/輛準確率/%時間/s幀差法68794.62528.9FBSVD67292.56329.3VBSVD68794.6462.3

圖6 傳統幀差法、FBSVD、VBCVD測試路段B的不同數據集的時間對比

表3展示了本文提出的FBSVD、VBSVD以及傳統幀差法針對B-4的準確率和檢測時間結果。對于路段B的不同數據集,3種檢測算法的處理時間對比如圖6所示。結果表明,傳統幀差法與VBSVD算法具有相同的檢測準確率,傳統幀差法比FBSVD準確率高0.9%;VBSVD算法比傳統幀差法檢測速度快547%,傳統幀差法比FBSVD快251%。

表4 VBSVD算法測試路段A的不同測試集的結果表

表5 VBSVD算法測試路段B的不同測試機的結果表

表5展示了VBSVD算法針對路段A的不同測試數據集的檢測時間和檢測準確率結果。表6展示了本文提出的VBSVD針對路段B的不同測試數據集的檢測時間和檢測準確率結果。

圖7展示了對于數據集B-4,在不同CPU使用數量的情況下,VBSVD算法相對于傳統幀差法的處理加速比。

圖7 VBSVD針對不同數據集B-4使用在不同CPU核數情況下的加速比

實驗結果表明,本文提出的VBSVD算法比傳統幀差法檢測速度平均快528%,主要原因是:VBSVD算法充分利用集群中的計算節點的CPU和內存資源,采用分布式多路檢測的方式提升檢測速度。傳統幀差法比FBSVD算法比快251%,主要原因是:FBSVD算法對視頻幀進行切割,導致了時間消耗。

實驗結果分析證明:視頻文件具有不易切分的特點,宜將視頻整體處理;VBSVD算法使用的分布式集群中CPU數量越多提升的檢測速度越明顯,當CPU核的數量為待處理數據集的1/3或1/2時,效果最好。

4 結束語

針對大規模交通視頻下的批處理車流量檢測存在計算開銷大以及檢測時間過長的問題,本文通過對Apache Spark的研究,并將Spark應用到車流量檢測當中,實現了批量交通視頻的車流量檢測并行化。相對于傳統檢測方法,本文提出的VBSVD算法能依靠分布式集群的計算節點同時處理批量交通視頻,完成檢測任務。經實驗表明,VBSVD算法簡單可行,準確率高,檢測速度快,為檢測批量交通視頻提供了較好的解決方案。

[1]TianB,YaoQ,GuY,etal.Videoprocessingtechniquesfortrafficflowmonitoring:Asurvey[A].IEEEInternationalConferenceonIntelligentTransportationSystems[C]. 2011, 1103-1108.

[2]PerkasaO,WidyantoroDH.Video-basedsystemdevelopmentforautomatictrafficmonitoring[A].IEEEInternationalConferenceonElectricalEngineering&ComputerScience[C]. 2014,240-244.

[3] 張 玲, 陳麗敏, 何 偉,等. 基于視頻的改進幀差法在車流量檢測中的應用[J]. 重慶大學學報:自然科學版, 2004, 27(5):31-33.

[4] 張 詠, 李太君, 李枚芳. 利用改進的背景差法進行運動目標檢測[J]. 現代電子技術, 2012, 35(8):74-77.

[5] 楊國亮, 王志良, 牟世堂,等. 一種改進的光流算法[J]. 計算機工程, 2006, 32(15):187-188.

[6]HanX,GaoY,LuZ,etal.Researchonmovingobjectdetectionalgorithmbasedonimprovedthreeframedifferencemethodandopticalflow[A].IEEEInternationalConferenceonInstrumentationandMeasurement,Computer,Communication,andControl[C]. 2016: 580-584.

[7]AbdullahT,AnjumA,TariqMF,etal.Trafficmonitoringusingvideoanalyticsinclouds[A].IEEE/ACM7thInternationalConferenceonUtilityandCloudComputing[C]. 2014: 39-48.

[8]AnjumA,AbdullahT,TariqM,etal.Videostreamanalysisinclouds:anobjectdetectionandclassificationframeworkforhighperformancevideoAnalytics[J].IEEETransactionsonCloudComputing, 2016 (99):1-14.

[9]DeanJ,GhemawatS.Simplifieddataprocessingonlargeclusters[J].ProceedingsofOperatingSystemsDesignandImplementation(OSDI), 2004, 51(1):107-113.

[10]ZahariaM,ChowdhuryM,DasT,etal.Resilientdistributeddatasets:afault-tolerantabstractionforin-memoryclustercomputing[A].UsenixConferenceonNetworkedSystemsDesignandImplementation[C].USENIXAssociation, 2012.

[11]YangS,WuB.Largescalevideodataanalysisbasedonspark[A].IEEEInternationalConferenceonCloudComputingandBigData[C]. 2015:209-212.

猜你喜歡
差法車流量分布式
基于RTDS的分布式光伏并網建模研究
基于預處理MUSIC算法的分布式陣列DOA估計
關于用逐差法計算紙帶加速度合理性的討論
分布式并聯逆變器解耦電流下垂控制技術
“鬧”中取靜點差法
“點差法”雖好 應用須謹慎
參考答案
家庭分布式儲能的發展前景
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合