段武清,許春聰,王繼業(yè)
(1.解放軍78020部隊,云南 昆明 650223;2.解放軍75837部隊,廣東 廣州 510630)
近年來,隨著信息時代的到來,信息多元化程度加深。多媒體信息成為互聯(lián)網(wǎng)上的主要的信息載體[1]。網(wǎng)絡直播商業(yè)化應用進入了大眾的視線,一大批移動視頻直播平臺獲得了長足發(fā)展[2]。傳統(tǒng)網(wǎng)絡視頻采集、識別和處理面臨新的挑戰(zhàn)和機遇。如何有效利用新的技術和方法來驅動和滿足視頻數(shù)據(jù)處理的需求已成為一個現(xiàn)實而迫切的問題。本文設計了一種基于大數(shù)據(jù)技術實現(xiàn)的海量網(wǎng)絡視頻處理系統(tǒng),該系統(tǒng)采用多機集群并行方式對視頻數(shù)據(jù)進行處理,算法基于MapReduce模型實現(xiàn),能有效解決海量網(wǎng)絡視頻處理問題。本文分四部分,第一部分介紹分布式系統(tǒng)與云;第二部分介紹MapReduce計算模型;第三部分介紹系統(tǒng)功能、技術流程和應用;最后為結語。
GFS[3]是Google公司采用的一種分布式文件系統(tǒng),它完全滿足當前所稱“云”結構[4]的要求。眾多文獻[5-7]將與GFS結構類似的分布式系統(tǒng)稱為“云”,主要因為該類系統(tǒng)的構成特點與自然界的云極為相似。下面以GFS為例,將其特征與自然界的云做一個對比。
我們回想一下自然界的云。看到天上飄著的白云,我們自然會想到它漂浮不定、經(jīng)常變換,它容易分散也容易集聚;此外,據(jù)常識我們知道每朵云都是由成千上萬漂浮在空中的小水滴組成的。因此,云具有動態(tài)、易變、易分離組合且內(nèi)部成員數(shù)量眾多等特點,可以說云是由像灰塵一樣微小的小水珠隨意組成、隨風飄動的聚合體。上述為自然界的云,在計算機界,人們定義的云其特征如文獻[4]所述,我們可以簡明扼要地將其概括為:接入方式靈活多樣,不論在哪里接入,不論多少客戶接入,都能立即得到服務,而且服務是無限量提供的,服務的種類可以無限量增加,也可以根據(jù)需要隨時進行調整和刪除。文獻[3]所述GFS結構完全滿足動態(tài)、易變、易分離組合,且系統(tǒng)中機器數(shù)量眾多等特征,這些特征與上述“云”特征完全吻合。GFS可以隨時增加或刪除節(jié)點;很容易將一個GFS系統(tǒng)分離為兩個,或將兩個組合為一個;而且,GFS能管理的成員計算機數(shù)量猶如一朵云中的小水滴一樣多。
GFS的發(fā)明開創(chuàng)了一個新的時代,使得“云”在計算機界真正能夠實現(xiàn)。GFS結構創(chuàng)新的主要貢獻在于將計算機本身的角色功能進行了又一次的擴展和分離。我們知道計算機最初僅用于數(shù)值計算和存儲數(shù)據(jù),如果說一部分計算機被分離出來專門用于數(shù)據(jù)轉發(fā)(這些計算機被稱為交換機或路由器),就導致了計算機網(wǎng)絡的誕生和發(fā)展,那么當一部分計算機被分離出來充當管理者專門負責管理其他計算機的工作,就誕生了“云”。我們知道人類社會區(qū)別于其他物種的一個很大特點就在于工作上有分工,不僅有不同工種的分工,而且還有管理者與被管理者的分工,也就是說我們?nèi)祟惿鐣杏幸徊咳怂麄兊墓ぷ魇菍iT管理別人,讓被管理者更好地工作。那為什么讓一部分計算機充當管理者的角色就能夠達到“云”的效果。本文認為原因如下:①由于當前計算機性能不斷提升,每臺充當管理者的計算機(通常稱Master)能支持的被管理成員數(shù)量巨大,一臺計算機能同時管理成千上萬個成員。如果讓一臺計算機管理1千個成員,那么采用二級管理,全系統(tǒng)所能管理的計算機數(shù)為1百萬臺,如果讓一臺計算機管理1萬個成員,采用二級管理,能管理計算機數(shù)為1億臺,三級管理能管理1萬億臺。②速度快。每臺充當管理者的計算機能在很短的時間內(nèi),幾十毫秒甚至幾毫秒內(nèi)就能知道它所管轄的成員在哪里、上面有什么(資源)、它能干什么(提供什么服務),并且給他指派任務。③并行性。每臺充當管理者的計算機對外能同時為多個客戶提供多種不同的服務,同時對內(nèi)能進行多個成員的管理。具備上述三點,一個分布式系統(tǒng)就能對足夠多的成員數(shù)量、足夠大的存儲空間和足夠豐富的服務類型進行管理,從而使得該系統(tǒng)具備對外提供無限量計算、存儲和其他服務的能力,并且這些服務都是實時的。
圖1是GFS結構示意圖,GFS中有三種不同的計算機角色:①管理者節(jié)點(Master),數(shù)量一般有兩個,一個正常工作,一個備用,當正常工作的節(jié)點出現(xiàn)故障后備用節(jié)點即刻啟動,因而整個系統(tǒng)幾乎可以做到不出現(xiàn)死機。②數(shù)據(jù)節(jié)點,也稱工作者節(jié)點(Worker),被Master管理,數(shù)量可以是任意多個(只要Master管理能力足夠強)。③負責數(shù)據(jù)交換的節(jié)點,目前一般被專門稱為路由器或交換機(圖1中未給出)。
GFS的工作過程如下:當一個客戶機要訪問系統(tǒng)中的某個文件,他首先將該文件的文件名稱發(fā)給Master,Master根據(jù)該名稱查找目錄,然后告訴客戶機該文件的位置,客戶機根據(jù)文件地址和標識訪問具有該地址的工作者節(jié)點,工作節(jié)點根據(jù)文件標識和地址偏移找到文件中的數(shù)據(jù)返回給客戶機。
MapReduce[8]算法模型是一種處理和生成大規(guī)模數(shù)據(jù)集的算法模型,采用MapReduce模型實現(xiàn)的程序自動地具有了并行性且能在一個由普通商用計算機組成的集群上執(zhí)行。文獻[7]介紹了該算法在GFS上的實現(xiàn)。圖2為MapReduce算法過程圖,實際上,MapReduce過程可簡單總結為:將一個由客戶機提出的計算任務在Master的管理下分配到多臺機器上執(zhí)行,執(zhí)行完后由Master指派結果收集者從多臺機器上收集結果并發(fā)送給提出請求的客戶機。該圖中Map階段分配任務,Reduce階段收集執(zhí)行結果。
上述執(zhí)行過程主要包括如下步驟:①由用戶程序將輸入的文件分成M個片段。分片完畢后,用戶程序向Master發(fā)出數(shù)據(jù)處理請求。Master收到數(shù)據(jù)處理請求后,在Worker節(jié)點群中尋找空閑節(jié)點作為執(zhí)行任務或收集結果的節(jié)點。在Map階段,Master將需要執(zhí)行的M個任務指派到M個空閑Worker節(jié)點上;在Reduce階段,Master將R個結果收集任務指派到R個Worker節(jié)點上。其中M、R取值不大于Worker節(jié)點總數(shù)。②一個被指派作為任務執(zhí)行者的Worker(也稱Map Worker)讀取相應的文件分片,并將輸入數(shù)據(jù)解析成key/value配對(根據(jù)用戶定義的Map函數(shù)確定),然后交用戶定義的Map函數(shù)執(zhí)行,執(zhí)行后得到中間級key/value配對,接著Map函數(shù)將這些值存入內(nèi)存并定期寫到本地磁盤的R個位置上。這些存儲中間級key/value配對的磁盤位置被Map函數(shù)周期性地上報到Master,Master收到后將這些位置通知執(zhí)行結果收集的Worker(也稱Reduce Worker)。③Reduce Worker收到Master的通知后,對這些存儲中間級key/value的磁盤位置進行遠程讀取,并將讀到的數(shù)據(jù)寫入結果文件。當所有的Map Worker和Reduce Worker都工作結束后,Master喚醒用戶程序,由用戶讀取最終結果。
GFS與部署在其上的MapReduce算法模型構成了大數(shù)據(jù)處理的一個基礎。文獻[8]介紹,目前Google已有上百個應用部署到GFS云上,而且各應用完全不相互影響。GFS云就像一棵果樹,但與自然界中的果樹不同的是這棵樹上結的果實種類是不定的,果的類別由具體的應用決定,構造什么樣的應用就能結什么樣的果。對此,我們可以得到這樣的啟示:如果要處理大數(shù)據(jù),首先建好一棵由計算機硬件集群和相應的軟件算法模型構成的樹,然后在上面運行不同的應用就能得到不同的果,例如當前流行的搜索、文本識別、語音識別等等,都可以看成是在同一套計算機硬件集群和相應的軟件算法模型構成的樹上結出的不同的果。翻譯、視頻處理、音頻處理、郵件服務等應用與此類似。如果“樹”的規(guī)模足夠大,這些應用可以同時運行而彼此互不影響,“果”的種類也可以不段增加。按此類比,本文設計的海量視頻處理系統(tǒng)在設計上實現(xiàn)了一棵樹,這棵樹上僅是結了視頻處理這樣一個“果”。
系統(tǒng)由兩部分組成,一部分為客戶機集合,數(shù)量不定,用于視頻數(shù)據(jù)采集;另一部分為用于視頻數(shù)據(jù)處理的分布式計算機集群(結構類似GFS,采用MapReduce算法模型)。每個客戶機上部署數(shù)據(jù)輸入和視頻數(shù)據(jù)處理控制界面。Master節(jié)點負責與客戶機進行交互,并負責對所有Worker節(jié)點進行資源管理和任務分配;Worker節(jié)點完成對視頻數(shù)據(jù)的具體處理。
系統(tǒng)可實現(xiàn)對海量視頻內(nèi)容利用關鍵字進行檢索;能對視頻中的特定人物和事物通過特征設定、特征提取和比對進行位置追蹤。相比以往,系統(tǒng)采用GFS結構和MapReduce算法模型后處理速度得以較大提升,能較好適應互聯(lián)網(wǎng)上飛速劇增的視頻數(shù)據(jù)的處理需求,具有很強的可擴展性。
系統(tǒng)處理流程如圖3所示,由視頻輸入、視頻格式標準化轉換、視頻片段按幀分解、目標特征識別、目標特征提取和比對、視頻內(nèi)容重復性檢測、視頻片段信息量計算及結果顯示等部分組成。
3.2.1 視頻輸入
該部分按照網(wǎng)絡上多媒體數(shù)據(jù)來源的不同,分Media Server、Web Server和Ftp Server三個子模塊進行處理(圖中未給出),各部分均對輸入視頻提供多種格式支持,包括asf、avi、flv、mkv、mp4和rmvb等。視頻數(shù)據(jù)進入系統(tǒng)后由該部分進行分布式存儲管理,分別存儲于系統(tǒng)各個Worker節(jié)點上。
3.2.2 視頻片段幀提取
該模塊對一個視頻文件進行特定位置上的幀提取,為下一步進行目標特征識別和提取做準備。其中,特定位置可以在系統(tǒng)中進行預先指定和調整。
3.2.3 目標特征識別和提取
本部分在Worker節(jié)點上實現(xiàn),由用戶定義的Map函數(shù)完成,主要功能為檢測視頻中出現(xiàn)的人臉、文字、物品及建筑物等特征信息并進行識別提取,具體包括:①外部特征提取,對數(shù)據(jù)的時間、地域、來源等特征的提??;②內(nèi)部特征提取,對數(shù)據(jù)文件大小、固定點位上的圖(幀)、固定偏移上的數(shù)據(jù)片及一些自定義特征的提??;③特征向量與信息指紋生成,將①②計算結果組合為視頻特征向量,并計算出一個信息指紋作為該文件在系統(tǒng)中的唯一標識,方便視頻檢索。
3.2.4 視頻內(nèi)容重復性檢測
視頻內(nèi)容重復性檢測即圖3所示,檢測視頻內(nèi)容是否重復。該部分對步驟(3)計算得到的視頻特征向量利用重復檢測算法Bof[9]對視頻內(nèi)容進行檢測,若存在相似度大于設定值的視頻,則認為其重復并進行標注。
3.2.5 視頻片段信息量計算
本文采用計算視頻數(shù)據(jù)信息量的方式在海量視頻中搜索目標視頻。具體算法為:將該視頻所具有的人物、時間、地點、事件等多個屬性都作為描述視頻的一個維,并賦予一定的權重,計算時先比較新輸入視頻各維的屬性與該維上預設屬性的相似性并給出一個值,然后將各維上相似性比較后得到的值乘以各維的權重再求和得到該視頻信息量。用信息量衡量視頻的重要程度,信息量越大的視頻越接近目標視頻。
3.2.6 結果顯示部分
結果顯示部分顯示按關鍵字搜索到的相似視頻,結果按相似程度或屬性維度進行排序。
3.3.1 文字識別
文字識別即將視頻中的文字提取出來成為文本。視頻中包含的文字主要有兩種情況,分別為字幕和圖上文字。采用如下方式處理:對于字幕,能從視頻文件中分離的直接分離后處理;對于不能分離的,采用文獻[10]所述的方法提取;對于不能正確識別,但很可能是文字的,進行圖片截取處理。
3.3.2 人識別
識別出視頻中有人的部分,方便后續(xù)人工處理。識別采用兩種方式:一種進行人臉識別,另一種進行人身體識別。由于本系統(tǒng)僅限于識別出視頻中的人,而不區(qū)分被識別者是誰,因此采用較簡單的基于人臉特征點的識別算法[11]實現(xiàn)。人身體識別參照人臉識別并輔以其他特定算法實現(xiàn)。整個算法以人臉識別為主,身體識別為輔。
本文基于大數(shù)據(jù)技術設計實現(xiàn)了一種海量網(wǎng)絡視頻處理系統(tǒng)。該系統(tǒng)采用與GFS類似的結構,設計了MapReduce模式的視頻處理并行算法。系統(tǒng)具有良好的可擴展性和容錯性,無論在視頻的存儲能力還是檢索速度上,其性能均優(yōu)于之前的集中式處理系統(tǒng)??梢灶A見,該系統(tǒng)將是未來較長一段時間內(nèi)處理海量網(wǎng)絡視頻的一個有力工具。
[1] 周凱,朱一杰,龔松杰,等.互聯(lián)網(wǎng)環(huán)境下大數(shù)據(jù)多媒體信息檢索研究[J].科技資訊,2015,13(24):23-24.
[2] 王江山.透視中國網(wǎng)絡直播當前的問題與發(fā)展[J].新聞研究導刊,2016(13).
[3] GHEMAWATS S,GOBIOOFF H,LEUNG S T.The google file system[J].Acm Sigops Operating Systems Review,2003,37(5):29-43.
[4] 陳康,鄭緯民.云計算:系統(tǒng)實例與研究現(xiàn)狀[J].軟件學報,2009,20(5):1337-1348.
[5] 林闖,蘇文博,孟坤,等.云計算安全:架構、機制與模型評價[J].計算機學報,2013,36(9):1765-1784.
[6] 秦榮生.大數(shù)據(jù)、云計算技術對審計的影響研究[J].審計研究,2014(6):23-28.
[7] 程學旗,靳小龍,王元卓,等.大數(shù)據(jù)系統(tǒng)和分析技術綜述[J].軟件學報,2014,25(9):1889-1908.
[8] DEAN J,GHEMAWAT S.MapReduce:A flexible data processing tool[J].Communication of the ACM,2010,53(1):72-77.
[9] 陳永健.基于內(nèi)容的大規(guī)模圖像檢索關鍵技術研究[D].湖北:華中科技大學,2011.
[10] Shewale P P,Kinikar M.Novel method for character recognition in natural scene images[J].International Journal of Advanced Computer and Mathematical Sciences,2014,2(5):14-18.
[11] 潘仁林.基于幾何特征的三維人臉識別方法研究[D].廈門:廈門大學,2014.