王紀(jì)萍
(南京審計(jì)大學(xué) 金審學(xué)院,江蘇 南京 210023)
以往視頻數(shù)據(jù)存儲(chǔ)和檢索平臺(tái)功能較為單一,性能低效,容量有限,較多地應(yīng)用在科學(xué)計(jì)算領(lǐng)域,在數(shù)據(jù)處理領(lǐng)域應(yīng)用較少。設(shè)計(jì)一款以Hadoop平臺(tái)為依托的海量視頻檢索系統(tǒng)所需硬件、軟件環(huán)境造價(jià)低,但功能卻很豐富,具有極高的拓展性和包容性,可根據(jù)視頻數(shù)據(jù)處理需要拓展功能,且性能高、容量大,在視頻數(shù)據(jù)處理方面優(yōu)勢(shì)明顯。
隨著智能安防技術(shù)的發(fā)展,智能視頻監(jiān)控系統(tǒng)的運(yùn)用愈發(fā)普遍,遍布大街小巷的“天網(wǎng)”系統(tǒng)和分布在不同場(chǎng)所的監(jiān)控?cái)z像頭,每時(shí)每刻都在不停錄像,捕捉視頻圖像。當(dāng)需要從這些視頻圖像中檢索跟蹤某一特定目標(biāo)時(shí),就需要從存儲(chǔ)的海量視頻中,分析、檢索、提取特定對(duì)象,這無(wú)異于大海撈針。設(shè)計(jì)一套能夠智能快速進(jìn)行海量篩選檢索的系統(tǒng)就顯得尤為重要。以往視頻圖像檢測(cè)的方法有很多,如顏色分類法、幀差法等,在這些方法基礎(chǔ)上開(kāi)發(fā)出的視頻檢索系統(tǒng),雖然可以進(jìn)行人車分類、視頻濃縮等處理,但并不能完成對(duì)特定目標(biāo)的檢索,實(shí)際應(yīng)用存在諸多局限,必須要設(shè)計(jì)一款功能強(qiáng)大、拓展性強(qiáng)的海量視頻檢索系統(tǒng)。
(1)強(qiáng)大的存儲(chǔ)需求
海量視頻檢索系統(tǒng)必須要具有強(qiáng)大的存儲(chǔ)功能,要能夠存儲(chǔ)海量視頻,因此,存儲(chǔ)系統(tǒng)功能必須要足夠強(qiáng)大。一是要具有較強(qiáng)的包容性,要能夠存儲(chǔ)各種類型的視頻文件;二是要有較強(qiáng)的寫入性能。要能夠同時(shí)滿足KB級(jí)的人臉或車輛圖像文件的讀寫、GB級(jí)的高清視頻文件的讀寫,并能夠快速讀取并批量存儲(chǔ)數(shù)據(jù)三是要具備動(dòng)態(tài)拓展性,要在存儲(chǔ)各種原始數(shù)據(jù)信息的同時(shí),支持動(dòng)態(tài)拓展,為存儲(chǔ)各種目標(biāo)圖像和視頻提供強(qiáng)大支持;四是要滿足跨平臺(tái)數(shù)據(jù)讀寫的需求,海量視頻檢索系統(tǒng)涉及到不同數(shù)據(jù)的操作處理,而這些處理是由不同的平臺(tái)完成的,系統(tǒng)必須要滿足跨平臺(tái)進(jìn)行數(shù)據(jù)讀取和寫入的需求。
(2)分布式轉(zhuǎn)碼需求
海量視頻檢索系統(tǒng)中,視頻和各種圖像數(shù)據(jù)每天以指數(shù)級(jí)的速度增長(zhǎng),會(huì)不斷消耗系統(tǒng)內(nèi)存,對(duì)系統(tǒng)運(yùn)行產(chǎn)生壓力。過(guò)去的海量視頻檢索系統(tǒng)多采用的是單節(jié)點(diǎn)的轉(zhuǎn)碼方式進(jìn)行視頻檢索,但這種方式不但效率低,還會(huì)加重系統(tǒng)運(yùn)行負(fù)擔(dān),使其出現(xiàn)宕機(jī)的情況,影響海量視頻數(shù)據(jù)檢索的實(shí)現(xiàn)。因此,要設(shè)計(jì)的海量視頻檢索系統(tǒng)需要滿足分布式轉(zhuǎn)碼需求,可通過(guò)系統(tǒng)將視頻轉(zhuǎn)碼任務(wù)分布到多個(gè)計(jì)算機(jī)上,由他們共同完成數(shù)據(jù)轉(zhuǎn)碼,實(shí)現(xiàn)多個(gè)節(jié)點(diǎn)的聯(lián)動(dòng)作業(yè),提高視頻檢索系統(tǒng)的檢索效率。
采用Hadoop進(jìn)行設(shè)計(jì),可滿足海量視頻檢索系統(tǒng)的現(xiàn)實(shí)需求和功能需求,Hadoop最大的特色就是對(duì)視頻數(shù)據(jù)進(jìn)行分布式的存儲(chǔ)和轉(zhuǎn)換處理,能夠?qū)崿F(xiàn)海量視頻檢索的高效運(yùn)行,并能實(shí)現(xiàn)在海量視頻中快速提取某一目標(biāo)。
以Hadoop平臺(tái)為依托建構(gòu)的海量視頻檢索系統(tǒng)包含多個(gè)組件,但其中最主要的核心組件有三,分別為HDFS、MapReduce、HBase,它們各自承擔(dān)不同的分布式海量視頻數(shù)據(jù)處理任務(wù),是支撐系統(tǒng)穩(wěn)定運(yùn)行的核心組件,如圖1所示。
圖1 Hadoop系統(tǒng)核心組件架構(gòu)
(1)HDFS系統(tǒng)架構(gòu)
在Hadoop海量視頻檢索系統(tǒng)設(shè)計(jì)中,將HDFS架構(gòu)在最底層,它的功能是連接獲取Hadoop平臺(tái)上傳輸過(guò)來(lái)的視頻數(shù)據(jù),對(duì)其進(jìn)行副本復(fù)制、出錯(cuò)處理等一系列存儲(chǔ)管理工作。該系統(tǒng)具有強(qiáng)大的分布式存儲(chǔ)管理優(yōu)勢(shì)。即便是幾百GB或幾百TB的超大型視頻文件,HDFS系統(tǒng)都可以輕松存儲(chǔ)。利用該系統(tǒng)的流式數(shù)據(jù)訪問(wèn)優(yōu)勢(shì),可輕松提升數(shù)據(jù)吞吐量,并能根據(jù)Hadoop集群的存儲(chǔ)需要隨時(shí)刪除或增加節(jié)點(diǎn)。在架構(gòu)HDFS系統(tǒng)系統(tǒng)時(shí),可按照Hadoop遠(yuǎn)程過(guò)程調(diào)用協(xié)議實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)之間的通信,確保HDFS系統(tǒng)各個(gè)節(jié)點(diǎn)之間的協(xié)調(diào)運(yùn)作。若用戶需存儲(chǔ)文件,就可以通過(guò)客戶端啟動(dòng)HDFS系統(tǒng),然后調(diào)用create方法。此時(shí)在遠(yuǎn)程通信機(jī)制的支持下,可以實(shí)現(xiàn)HDFS各節(jié)點(diǎn)間的網(wǎng)絡(luò)通訊,用戶只需要在節(jié)點(diǎn)域名空間內(nèi)新建地址文件,就可以獲得相應(yīng)存儲(chǔ)地址,即可進(jìn)行數(shù)據(jù)寫入存儲(chǔ)操作[1]。
(2)HBase系統(tǒng)架構(gòu)
這個(gè)面向列的存儲(chǔ)系統(tǒng),其作用是對(duì)以表的形式存儲(chǔ)的視頻數(shù)據(jù)進(jìn)行增刪查改、調(diào)整和故障恢復(fù)等操作。在架構(gòu)該系統(tǒng)時(shí),需要運(yùn)用多個(gè)區(qū)域服務(wù)器,通過(guò)服務(wù)器來(lái)響應(yīng)用戶提出的視頻存儲(chǔ)需求,然后與HDFS之間進(jìn)行交互協(xié)作,從后者讀寫數(shù)據(jù)。
(3)MapReduce系統(tǒng)架構(gòu)
MapReduce系統(tǒng)架構(gòu)的目的是為了完成對(duì)視頻數(shù)據(jù)的分布式計(jì)算和調(diào)度任務(wù)。其架構(gòu)主要包括JobTracker和TaskTracker兩部分,前者屬于任務(wù)控制節(jié)點(diǎn),負(fù)責(zé)發(fā)布和調(diào)度任務(wù),后者屬于任務(wù)的執(zhí)行節(jié)點(diǎn),執(zhí)行JobTracker指派的任務(wù),并在任務(wù)完成后,將結(jié)果反饋給JobTracker。整個(gè)系統(tǒng)的運(yùn)行流程為:JobTracke任務(wù)提交——任務(wù)初始化——TaskTracker任務(wù)執(zhí)行——Map輸出——Reduce分配——結(jié)束[2]。
如圖2所示,基于Hadoop系統(tǒng)的海量視頻檢索系統(tǒng)共分為六層:第一層是硬件層,這一層是服務(wù)器集群層,采用一臺(tái)主服務(wù)器Master和三臺(tái)從服務(wù)器Slave進(jìn)行架構(gòu)的方式,將它們布局在同一局域網(wǎng)中。服務(wù)器內(nèi)存為8GB,硬盤為120GBSATA;第二、三、四層分別為分布式數(shù)據(jù)存儲(chǔ)管理層、數(shù)據(jù)庫(kù)處理層和分布式數(shù)據(jù)計(jì)算層;第五層為業(yè)務(wù)邏輯層。負(fù)責(zé)通過(guò)對(duì)目標(biāo)視頻進(jìn)行預(yù)處理和特征提取等工作,實(shí)現(xiàn)視頻精準(zhǔn)檢索;第六層為用戶層,為用戶提供視頻檢索的接口和查詢服務(wù)。
圖2 Hadoop系統(tǒng)整體框架架構(gòu)
Hadoop系統(tǒng)的前端運(yùn)行極為簡(jiǎn)捷高效,用戶只需要進(jìn)入系統(tǒng)視頻檢索界面,提供需要檢索的目標(biāo)圖像,系統(tǒng)就會(huì)自動(dòng)對(duì)目標(biāo)圖像進(jìn)行特征提取。同時(shí),數(shù)據(jù)庫(kù)底層會(huì)自動(dòng)運(yùn)行,在海量數(shù)據(jù)中層層篩選,最終選定相似目標(biāo)圖像,并進(jìn)行相似度匹配。最終通過(guò)比對(duì)結(jié)果確定獲得的圖像是否是目標(biāo)圖像,至此,系統(tǒng)運(yùn)行結(jié)束,用戶完成檢索。如圖3所示。
圖3 Hadoop系統(tǒng)運(yùn)行流程
Hadoop海量視頻檢索系統(tǒng)實(shí)現(xiàn)的關(guān)鍵在于圖像特征的提取和匹配,這其中需要用到先進(jìn)的提取算法,本文在系統(tǒng)中嵌入了兩套不同的算法,這兩種算法都具有精確檢索的特征,用戶可根據(jù)實(shí)際需要選擇任一算法進(jìn)行視頻檢索。
Hadoop海量視頻檢索系統(tǒng)在待檢索目標(biāo)圖像特征提取時(shí)采用的是分布式提取方法,提取的特征主要包括目標(biāo)圖像的RGB顏色、目標(biāo)圖像的邊緣直方圖、目標(biāo)圖像的紋理特征等。提取。
(1)利用Hu不變矩算法獲得目標(biāo)圖像的特征向量
該算法的優(yōu)點(diǎn)在于不受圖像變換的影響,無(wú)論是旋轉(zhuǎn)還是縮放圖像,都不會(huì)影響其對(duì)圖像特征的提取。同時(shí),該方法對(duì)噪聲不敏感,能夠準(zhǔn)確描述目標(biāo)圖像的形狀特征,在海量視頻檢索領(lǐng)域應(yīng)用廣泛[3]。其公式表示如下:設(shè)二維數(shù)字圖像為f(x,y),圖像高度為n,圖像寬度為m,圖像水平方向的重點(diǎn)為x0,垂直方向重心為y0。那么(p+q)階的普通矩和中心矩公式分別如下:
(1)
(2)
在此公式的基礎(chǔ)上,對(duì)圖像的中心距歸一,歸一公式如下:
(3)
利用這個(gè)公式可以獲得7個(gè)不變矩,它們就可以作為目標(biāo)圖像的特征向量,有了圖像的特征向量,就可以將其轉(zhuǎn)換成相應(yīng)函數(shù)。
(2)采用Gabor小波變換法對(duì)目標(biāo)圖像紋理特征進(jìn)行提取
Gabor小波變換法具有多尺度、多層次分析和描述待檢索目標(biāo)圖像的優(yōu)點(diǎn),采用這種方法進(jìn)行圖像紋理特征提取,可以最大程度降低圖像紋理信息冗雜度,獲得有效紋理信息[4]。
第一步要獲取目標(biāo)圖像的紋理特征向量。設(shè)圖像函數(shù)為g(x,y),按照Gabor小波變換可將圖像表述為:
Wmn(x,y)=?g(x,y)fmn*(x-x1,y-y1)dxdy
(4)
在式(4)中,*表示的是共軛復(fù)數(shù),通過(guò)這個(gè)公式,可以得出目標(biāo)圖像Gabor小波變換的均值和方差,其均值和方差分別用μmn、σmn表示,可以得到二者的值,即如下:
μmn=?|Wmn(x,y)|dxdy
(5)
(6)
通過(guò)以上公式可計(jì)算目標(biāo)圖像的紋理特征在水平、垂直等不同方向及尺寸上的能量分布,得到圖像的紋理特征。如圖4所示。
圖4 Gabor小波變換法紋理特征提取
設(shè)待檢索目標(biāo)圖像數(shù)量為N幅,待檢索目標(biāo)圖像就可以用In表示,n指的是1,2,3,…,N。海量視頻數(shù)據(jù)中對(duì)應(yīng)的圖像的顏色、紋理及邊緣特征等分別用Cn、Tn、En來(lái)表示,那么待檢索目標(biāo)圖像I1的特征相應(yīng)在海量視頻圖像中對(duì)應(yīng)的就是C1、T1、E1[6]。待檢索目標(biāo)圖像與海量視頻數(shù)據(jù)中圖像顏色、紋理和邊緣相似度分別用DCN、DTn、DEn表示,然后按照以下公式分別計(jì)算他們的相似度:
(7)
(8)
(9)
利用Hadoop平臺(tái)的MapReduce分布式數(shù)據(jù)計(jì)算系統(tǒng)設(shè)計(jì)Map任務(wù)、Reduce任務(wù)。先將目標(biāo)圖像的特征值存儲(chǔ)到HBase的圖片表列中,然后選擇其中的行來(lái)執(zhí)行數(shù)據(jù)輸入任務(wù),同時(shí),將Rowkey作為key,圖片數(shù)據(jù)列則作為value,然后執(zhí)行Map任務(wù),獲得待檢索圖片的關(guān)鍵參數(shù)和相應(yīng)特征值,并自動(dòng)生成特征函數(shù)和向量[7]。然后按照上述相似度匹配公式,對(duì)待檢索目標(biāo)圖像與海量視頻庫(kù)中的圖像進(jìn)行三種特征的比對(duì)和匹配,最終可以獲得較為準(zhǔn)確的檢索結(jié)果。圖5為用戶在Hadoop海量視頻檢索系統(tǒng)中輸入待檢索目標(biāo)圖像獲得的結(jié)果。
圖5 Hadoop海量視頻檢索效果
本文以Hadoop平臺(tái)為依托設(shè)計(jì)海量視頻檢索系統(tǒng)硬件布局較為簡(jiǎn)單,采用的算法也并不復(fù)雜,但是依托于Hadoop平臺(tái)良好的性能和高效的數(shù)據(jù)存儲(chǔ)及分布式處理優(yōu)勢(shì),可以達(dá)到在海量視頻數(shù)據(jù)庫(kù)中快速高效檢索目標(biāo)圖像的目的。本文的研究也表明,相較于單機(jī)節(jié)點(diǎn)的海量檢索系統(tǒng),分布式的集群運(yùn)算系統(tǒng)更能滿足當(dāng)下海量視頻存儲(chǔ)及檢索的需求。未來(lái)應(yīng)加大對(duì)這一技術(shù)的運(yùn)用,將Hadoop海量視頻檢索系統(tǒng)應(yīng)用到更多領(lǐng)域,造福社會(huì)。