陳文竹,陳岳林,蔡曉東,王 迪
(桂林電子科技大學(xué),廣西 桂林 541004)
一種多路海量視頻流數(shù)據(jù)并行化處理方法研究
陳文竹,陳岳林,蔡曉東,王 迪
(桂林電子科技大學(xué),廣西 桂林 541004)
針對(duì)視頻監(jiān)控系統(tǒng)中傳統(tǒng)的處理方法計(jì)算機(jī)資源能力不足,無法滿足海量高效的視頻流數(shù)據(jù)內(nèi)容分析的問題,引入Storm并行計(jì)算平臺(tái),提出了一種彈性的基于多路視頻流的并行化處理方法,并通過一種高效的內(nèi)存共享機(jī)制,集成人車分類算法到分布式處理平臺(tái),使算法與高性能并行計(jì)算資源有效融合。通過對(duì)比實(shí)驗(yàn)表明,該并行化處理方案高效穩(wěn)定,集群運(yùn)行良好,負(fù)載均衡,能滿足大規(guī)模視頻流數(shù)據(jù)處理的需要。
視頻流;Storm;內(nèi)存共享;人車分類;并行計(jì)算
智能視頻監(jiān)控[1]是圖像處理領(lǐng)域一個(gè)重要研究課題,廣泛應(yīng)用于智能交通、智能安防等領(lǐng)域。對(duì)攝像頭記錄的視頻數(shù)據(jù)內(nèi)容進(jìn)行智能分析,對(duì)其中的行人和車輛等信息進(jìn)行檢測分類,進(jìn)而實(shí)現(xiàn)基于視頻內(nèi)容的檢索,在視頻監(jiān)控中具有重要意義。目前有許多有關(guān)人車分類算法的研究,文獻(xiàn)[2]提出了一種基于多粒度感知SVM的復(fù)雜場景人車分類方法,有效避免光照、色彩目標(biāo)等變化對(duì)目標(biāo)檢測分類造成的影響。文獻(xiàn)[3]提出了一種基于視頻的行人車輛檢測與分類方法,解決了目標(biāo)分割不完整、檢測準(zhǔn)確率低的問題。文獻(xiàn)[4]提出了一種基于運(yùn)動(dòng)區(qū)域的行人檢測與跟蹤算法,能夠快速準(zhǔn)確地對(duì)行人進(jìn)行檢測跟蹤,然而當(dāng)視頻數(shù)據(jù)為海量時(shí),計(jì)算資源的瓶頸往往限制了算法的應(yīng)用,基于串行的算法優(yōu)化無法明顯提高海量視頻圖像處理的高效性,因此有必要引入并行化計(jì)算。
基于Hadoop的開源分布式計(jì)算架構(gòu)是當(dāng)前并行處理平臺(tái)的代表,文獻(xiàn)[5]詳細(xì)介紹了Hadoop的分布式計(jì)算框架。文獻(xiàn)[6-7]提出了基于Hadoop的分布式海量視頻處理方法,對(duì)非結(jié)構(gòu)化視頻數(shù)據(jù)去耦合處理,實(shí)現(xiàn)了海量視頻的分布式轉(zhuǎn)碼。文獻(xiàn)[8]提出了一種基于Hadoop的分布式視頻離線處理方法,并應(yīng)用于視頻監(jiān)控系統(tǒng)中。不過Hadoop只適用于海量文件的批處理,數(shù)據(jù)一次寫入多次讀取,雖然具有高容錯(cuò)、可擴(kuò)展、吞吐量大的特性,但是實(shí)時(shí)響應(yīng)差且數(shù)據(jù)處理延遲較長,當(dāng)處理數(shù)據(jù)為連續(xù)不斷的視頻流時(shí),Hadoop平臺(tái)無法滿足流式處理的需求。不同于Hadoop的批處理特性,基于內(nèi)存的Storm[9-10]流式計(jì)算平臺(tái),數(shù)據(jù)通過網(wǎng)絡(luò)直接導(dǎo)入內(nèi)存,減少了磁盤IO時(shí)耗,從根本上提升了海量數(shù)據(jù)處理的響應(yīng)能力,為海量視頻處理提供了新的途徑。
1.1 Storm簡介
Storm是實(shí)時(shí)的并具備高容錯(cuò)的分布式計(jì)算系統(tǒng),主要由一個(gè)主節(jié)點(diǎn)(Nimbus)和一群工作節(jié)點(diǎn)(Worker)組成,同時(shí)每個(gè)工作節(jié)點(diǎn)上運(yùn)行一個(gè)監(jiān)督節(jié)點(diǎn)(Supervisor),通過Zookeeper進(jìn)行協(xié)調(diào)。主節(jié)點(diǎn)負(fù)責(zé)任務(wù)分配,并監(jiān)控狀態(tài)。監(jiān)督節(jié)點(diǎn)會(huì)監(jiān)聽所分配子節(jié)點(diǎn)機(jī)器的任務(wù)狀態(tài),根據(jù)需要啟動(dòng)/關(guān)閉工作進(jìn)程。
Storm中,各個(gè)組件間的消息流動(dòng)形成邏輯上的拓?fù)浣Y(jié)構(gòu),故運(yùn)行一個(gè)實(shí)時(shí)應(yīng)用程序通過提交拓?fù)?Topology)完成。如圖1所示,Spout是消息的生產(chǎn)者,負(fù)責(zé)數(shù)據(jù)的抓取,從來源處讀取數(shù)據(jù)放入拓?fù)?,然后以元組(Tuple)的形式發(fā)送到數(shù)據(jù)流中,Bolt封裝了所有的消息處理邏輯,通過流分組(Stream Grouping)將Spouts與Bolts連接起來。
圖1 拓?fù)鋱D
1.2 人車分類
人車分類主要分為4個(gè)部分:感興趣前景區(qū)域的提取,目標(biāo)跟蹤預(yù)測,特征提取,目標(biāo)分類。流程如圖2所示。前景區(qū)域的提取是視頻分析的最初階段,將運(yùn)動(dòng)目標(biāo)從背景中分離,為下一階段的跟蹤與識(shí)別做準(zhǔn)備。目標(biāo)跟蹤是對(duì)場景中的感興趣目標(biāo)進(jìn)行預(yù)測與定位,可以更準(zhǔn)確地得到目標(biāo)的運(yùn)動(dòng)狀態(tài)。通過特征提取與目標(biāo)識(shí)別對(duì)運(yùn)動(dòng)信息進(jìn)行篩選,對(duì)人車信息進(jìn)行識(shí)別。
圖2 人車分類流程圖
在Storm集群中每個(gè)處理的元組相互獨(dú)立,算法的并行實(shí)際是基于文件的并行實(shí)現(xiàn)。本文使用多幀差分法提取前景區(qū)域,卡爾曼濾波實(shí)現(xiàn)目標(biāo)跟蹤預(yù)測,采用HOG算子與SVM算法實(shí)現(xiàn)目標(biāo)的識(shí)別分類,在實(shí)現(xiàn)每段視頻數(shù)據(jù)處理完整性的前提下也能準(zhǔn)確檢測出人車目標(biāo)。
本文利用Storm并行化處理框架實(shí)現(xiàn)基于海量視頻流的人車分類,核心思想是將計(jì)算任務(wù)分配給多個(gè)節(jié)點(diǎn),通過任務(wù)并行化達(dá)到提升性能的目的。主要包括如下步驟:緩存視頻流獲取、自定義VideoStreamSpout類組件、算法融合。
2.1 緩存視頻流獲取
遠(yuǎn)程攝像頭捕捉到的視頻數(shù)據(jù),通過網(wǎng)絡(luò)傳輸?shù)奖镜卦破脚_(tái)處理。流媒體在傳輸?shù)倪^程中,由于帶寬等的影響,不可避免地會(huì)出現(xiàn)數(shù)據(jù)丟失或失序的現(xiàn)象,而且數(shù)據(jù)采集的速度和數(shù)據(jù)處理的速度不一定同步,會(huì)造成數(shù)據(jù)堵塞。RTSP[11-12](實(shí)時(shí)流媒體協(xié)議)能夠提供可控制的、按需傳輸?shù)膶?shí)時(shí)數(shù)據(jù),監(jiān)控?cái)z像頭產(chǎn)生的視頻流通過本地RTSP流轉(zhuǎn)服務(wù)器,可以獨(dú)立實(shí)現(xiàn)多路管道中的視頻流數(shù)據(jù)的緩存。
視頻流為幀與幀之間連續(xù)相關(guān)的非結(jié)構(gòu)化數(shù)據(jù)流,物理分割會(huì)造成幀不完整、分割后缺少關(guān)鍵幀(I幀)的問題,因此需要對(duì)視頻流數(shù)據(jù)解耦合。提出了一種基于關(guān)鍵幀的視頻流緩存方法,如圖3所示,視頻圖像以序列為單位進(jìn)行組織,一個(gè)序列是一段圖像編碼后的數(shù)據(jù)流,以關(guān)鍵幀開始到下一個(gè)關(guān)鍵幀結(jié)束。根據(jù)關(guān)鍵幀的位置進(jìn)行緩存,可以保證所有的緩存塊都有必要的幀信息,不會(huì)出現(xiàn)缺少關(guān)鍵幀無法解碼的問題。
圖3 視頻流緩存方法
2.2 自定義VideoStreamSpout類組件
自定義VideoStreamSpout類組件,通過繼承BaseRichSpout接口實(shí)現(xiàn)數(shù)據(jù)讀取,數(shù)據(jù)讀取流程如圖4所示。如2.1節(jié)所述獲取獨(dú)立的緩存視頻流,當(dāng)緩存流達(dá)到元組要求就以隊(duì)列形式推送。open()方法打開緩存流,將數(shù)據(jù)封裝成一個(gè)個(gè)Tuple,通過nextTuple()方法不間斷發(fā)送新的Tuple到消息隊(duì)列。為保證數(shù)據(jù)的連續(xù)性,每個(gè)Tuple會(huì)隨機(jī)分發(fā)唯一的ID。拓?fù)涮峤缓髸?huì)一直運(yùn)行直到被手動(dòng)殺死。
圖4 數(shù)據(jù)讀取
此外,Storm在檢測到一個(gè)元組被成功處理時(shí)調(diào)用 ack()方法,否則調(diào)用fail()方法,這樣保證了數(shù)據(jù)處理的可靠性。
2.3 算法融合
計(jì)算任務(wù)主要在VideoStreamBolt環(huán)節(jié)實(shí)現(xiàn),VideoStreamBolt組件與VideoStreamSpout組件之間通過松耦合的管道機(jī)制實(shí)現(xiàn)流傳輸,這種調(diào)度機(jī)制極大提升了并行計(jì)算的穩(wěn)定性和可擴(kuò)展性。Storm的拓?fù)浣Y(jié)構(gòu)通過Java語言實(shí)現(xiàn),Java語言因其簡單、面向?qū)ο?、可移植、平臺(tái)無關(guān)等特性,已成為分布式計(jì)算領(lǐng)域的主流程序設(shè)計(jì)語言。影響Java語言算法實(shí)現(xiàn)的最大問題是速度,在原始的Java解釋器中,C語言的速度是解釋過的Java語言的20倍左右,用Java語言來完成對(duì)性能敏感的高性能密集計(jì)算目前不是最好的選擇。
視頻的解碼及人車分類算法分別使用FFMPEG視頻圖像編解碼庫與Opencv開源計(jì)算機(jī)視覺處理庫實(shí)現(xiàn),采用C/C++ 語言編寫,在不改變并行結(jié)構(gòu)及算法效率的情況下,Java的JNI(Java Native Interface)接口實(shí)現(xiàn)了Java數(shù)據(jù)與 C++ 本地庫的數(shù)據(jù)交互,但頻繁的數(shù)據(jù)拷貝會(huì)大大降低數(shù)據(jù)傳遞的效率及穩(wěn)定性,且當(dāng)交換數(shù)據(jù)塊較大時(shí),會(huì)造成內(nèi)存泄漏,對(duì)計(jì)算機(jī)內(nèi)存造成較大損耗。同時(shí)頻繁的數(shù)據(jù)拷貝造成算法的延時(shí)在流式計(jì)算中會(huì)產(chǎn)生數(shù)據(jù)堵塞。本文提出了一種優(yōu)化的高效并行內(nèi)存共享機(jī)制,可以最大化優(yōu)化代碼的運(yùn)算速度,具體結(jié)構(gòu)如圖5所示。
圖5 并行內(nèi)存共享機(jī)制
在該機(jī)制中,Java端作為程序的起始端,負(fù)責(zé)任務(wù)的分發(fā)及資源調(diào)度,構(gòu)建并行計(jì)算環(huán)境。當(dāng)有數(shù)據(jù)交互發(fā)生時(shí),Java端開辟堆內(nèi)存空間與JNI層共享,并將數(shù)據(jù)信息導(dǎo)入共享內(nèi)存,通過地址值的傳遞,實(shí)現(xiàn)本地算法與Java端的數(shù)據(jù)交互,同時(shí),也可以通過并行內(nèi)存共享機(jī)制,將本地算法處理完成后的人車等目標(biāo)信息導(dǎo)入Java端。在不打破Storm并行計(jì)算框架和Java應(yīng)用程序環(huán)境的情況下,通過內(nèi)存共享機(jī)制,Java端與C++本地算法實(shí)現(xiàn)端數(shù)據(jù)同步變化,相比于普通的數(shù)組傳遞,效率更高更快,減少了數(shù)據(jù)堵塞的產(chǎn)生,且適合長期使用、頻繁訪問的大塊內(nèi)存的共享。
本實(shí)驗(yàn)在操作系統(tǒng)為centos6.6的64位華碩服務(wù)器下實(shí)現(xiàn),硬件環(huán)境如下:CPU為2個(gè)6核Intel(R) Xeon(R) CPU E5-2620處理器,內(nèi)存為64 Gbyte,通過KVM虛擬化技術(shù)搭建Storm集群,集群中設(shè)置1個(gè)Nimbus節(jié)點(diǎn)和3個(gè)Supervisor節(jié)點(diǎn),網(wǎng)絡(luò)環(huán)境為10.0.0.1網(wǎng)段的局域網(wǎng)。軟件環(huán)境為apache-storm-0.9.2-incubating。測試視頻為編碼方式是H.264,像素為1 920×1 080高清視頻流數(shù)據(jù)。
3.1 基于高效內(nèi)存共享機(jī)制的性能分析。
驗(yàn)證內(nèi)存共享機(jī)制的高效性,測試在相同環(huán)境下本文方法與基于數(shù)組傳遞的方法處理不同大小的視頻數(shù)據(jù)時(shí)耗如表1所示。
表1 內(nèi)存共性機(jī)制高效性分析測試
文件大小/Mbyte本文方法基于內(nèi)存拷貝機(jī)制方法總時(shí)耗/ms平均每幀處理時(shí)間/ms總時(shí)耗/ms平均每幀處理時(shí)間/ms32689572117863857641371562237403859962025042154887656
從表1可以看出,兩種機(jī)制分別實(shí)現(xiàn)人車分類算法,本文方法明顯優(yōu)于基于內(nèi)存拷貝機(jī)制的方法,且隨著數(shù)據(jù)量的增大,本文方法中每幀視頻數(shù)據(jù)平均處理時(shí)間相對(duì)穩(wěn)定,能滿足JNI調(diào)用本地算法高效性需求。
3.2 Storm集群下視頻處理高效性分析
吞吐量指系統(tǒng)單位時(shí)間內(nèi)處理數(shù)據(jù)的大小,是衡量并行系統(tǒng)實(shí)時(shí)高效性的重要指標(biāo)。記錄在Storm單機(jī)模式與集群模式下,隨著數(shù)據(jù)量的增加,完成視頻處理所需時(shí)間,對(duì)比兩種模式下的結(jié)果如圖6所示。
圖6 吞吐量分析測試
由圖6可知,當(dāng)視頻數(shù)據(jù)流比較小時(shí),由于任務(wù)分發(fā)數(shù)據(jù)傳輸?shù)榷夹枰馁M(fèi)一定的計(jì)算機(jī)資源和時(shí)間,單機(jī)模式下數(shù)據(jù)流處理時(shí)間低于集群模式的處理時(shí)間。但是隨著數(shù)據(jù)流的增大,任務(wù)分發(fā)所需時(shí)間遠(yuǎn)小于視頻處理的時(shí)耗,集群模式處理時(shí)間明顯縮短。
3.3 負(fù)載均衡性分析
負(fù)載均衡是并行計(jì)算中的一項(xiàng)重要指標(biāo),數(shù)據(jù)計(jì)算過多分布于同一計(jì)算節(jié)點(diǎn),形成數(shù)據(jù)傾斜,會(huì)造成計(jì)算資源的浪費(fèi),影響集群穩(wěn)定性。Storm并行框架的數(shù)據(jù)處理基于內(nèi)存進(jìn)行,在任務(wù)執(zhí)行過程中使用nmon工具統(tǒng)計(jì)各節(jié)點(diǎn)內(nèi)存使用情況如圖7所示。
圖7 集群內(nèi)存使用情況
圖中IP為10.0.88.55的計(jì)算機(jī)為Nimbus節(jié)點(diǎn),分配 8 Gbyte 內(nèi)存空間,其他為工作節(jié)點(diǎn)分配4 Gbyte內(nèi)存空間。Nimbus節(jié)點(diǎn)需要分配計(jì)算任務(wù)并監(jiān)控集群狀態(tài),內(nèi)存使用率高于工作節(jié)點(diǎn),保持穩(wěn)定。各工作節(jié)點(diǎn)在硬件資源分配相同的條件下,在任務(wù)開始階段內(nèi)存上升平穩(wěn),隨后趨于穩(wěn)定,由此可知各工作節(jié)點(diǎn)內(nèi)存使用率大致相同,沒有出現(xiàn)某一節(jié)點(diǎn)內(nèi)存使用過高的情形,說明在任務(wù)執(zhí)行過程中,集群內(nèi)存使用相對(duì)合理,沒有出現(xiàn)數(shù)據(jù)傾斜的情況,負(fù)載均衡。
針對(duì)海量監(jiān)控視頻流數(shù)據(jù)實(shí)時(shí)分析的需求,設(shè)計(jì)了基于多路視頻流的并行處理框架,提高了視頻流數(shù)據(jù)處理的效率。其次,通過高效的并行內(nèi)存共享機(jī)制將人車分類算法與Storm實(shí)時(shí)計(jì)算平臺(tái)融合,解決了算法實(shí)現(xiàn)與分布式計(jì)算框架互連互通的問題。最后,通過對(duì)比實(shí)驗(yàn)測試分析,分布式集群能高效地完成視頻流數(shù)據(jù)處理,穩(wěn)定性良好。
在未來的研究中,對(duì)于如何提高人車分類算法的魯棒性及準(zhǔn)確性,以及如何解決由于緩存數(shù)據(jù)塊的獨(dú)立性造成檢測重復(fù)目標(biāo)過多的問題,都有待于進(jìn)一步解決。
[1] 鄭世寶. 智能視頻監(jiān)控技術(shù)與應(yīng)用[J].電視技術(shù),2009,33(1):94-96.
[2] 吳金勇,趙勇,王一科,等. 基于多粒度感知SVM的復(fù)雜場景人車分類方法[J].北京大學(xué)學(xué)報(bào):自然科學(xué)版,2013,49(3):404-408.
[3] 楊陽,唐惠明.基于視頻的行人車輛檢測與分類[J].計(jì)算機(jī)工程,2014,40(11):135-138.
[4] 姚倩,安世全,姚路. 三幀差法和Mean-shift結(jié)合的行人檢測與跟蹤研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,35(1):223-227.
[5] 李建江,崔健,王聃,等. MapReduce并行編程模型研究綜述[J].電子學(xué)報(bào),2011,39(11):2635-2642.
[6] KIM M,CUI Yun,HAN Seungho,LEE H K. Towards efficient desion and implementation of a Hadoop-based distributed video transcoding system in cloud computing environment[J].International Journal of Multimedia and Ubiquitous Engineering,2013(2):213-224.
[7] RYU C,LEE D,JANG M,et al. Extensible video processing framework in apache Hadoop[C]//Proc. IEEE International Conference on Cloud Computing Techology and Science.[S.l.]:IEEE Press,2013:305-308.
[8] 高東海,李文生,張海濤. 基于Hadoop的離線視頻處理技術(shù)研究與實(shí)現(xiàn)[J].軟件,2013,34(11):5-9.
[9] YANG Wenjie,LIU Xingang,ZHANG Lan. Big data real-time processing based on storm[C]//Proc. 12th IEEE International Conference on Trust,Security and Privacy in Computing and Communications. [S.l.]:IEEE Press,2013:1784-1787.
[10] FRACHTENBERG E,PETRINI F,F(xiàn)ERNANDEZ J,et al. STORM:scalable resource management for large-scale parallel computers[J].IEEE Trans.Computers,2006,55(12):1572-1587.
[11] KHAN S Q,GAGLIANELLO R,LUNA M. Experiences with blending HTTP,RTSP,and IMS[J].Communications Magazine,2007,45(3):122-128.
[12] 李校林,劉海波,張杰,等. RTP/RTCP,RTSP在無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2011,35(19):89-92.
責(zé)任編輯:任健男
Parallel Processing Method for Multiplex Massive Video Streaming
CHEN Wenzhu, CHEN Yuelin, CAI Xiaodong, WANG Di
(GuilinUniversityofElectronicTechnology,GuangxiGuilin541004,China)
For solving the problem of the traditional method can’t apply to analysising massive video streaming contents efficiently in video surveillance, Storm distributed computation platform is introduced, and a flexible parallel processing method is presented to process multi-channel video streaming. A highly efficient mechanism of sharing memory is used to merge pedestrian vehicle classification algorithm with high performance parallel computing resources. The experiment shows that the parallel processing method can not only have the characteristics of stable and efficient, but also the platform works good. It proves that the method suits for large scale video streaming processing.
video streaming; Storm; sharing memory; pedestrian vehicle classification; distributed computing
廣西自然科學(xué)基金項(xiàng)目(2013GXNSFAA019326)
TN911.7;TP391
A
10.16280/j.videoe.2015.19.028
2015-01-16
【本文獻(xiàn)信息】陳文竹,陳岳林,蔡曉東,等.一種多路海量視頻流數(shù)據(jù)并行化處理方法研究[J].電視技術(shù),2015,39(19).