本發(fā)明涉及視頻數(shù)據(jù)存儲與檢索技術領域,特別是指一種分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng)。
背景技術:
近些年,隨著人們生活品質的提高,汽車已不再是遙不可及的物件,逐漸成為每家每戶必不可少的消費品。再加上汽車制造業(yè)的迅猛發(fā)展以及國家對于大力推動汽車產(chǎn)業(yè)發(fā)展的政策,我國汽車保有量逐年攀升。傳統(tǒng)的監(jiān)控視頻存儲系統(tǒng)通常將視頻數(shù)據(jù)存儲在分布式數(shù)據(jù)庫中,依靠分布式數(shù)據(jù)庫冗余存儲和數(shù)據(jù)分塊的特性可以提供大規(guī)模視頻數(shù)據(jù)高穩(wěn)定和高吞吐的存儲與檢索服務。
但是存儲大規(guī)模數(shù)據(jù)的分布式數(shù)據(jù)庫只能支持olap方式的數(shù)據(jù)服務,它們對于復雜的查詢請求無法及時回答,而只能支持主鍵查詢的毫秒級響應。傳統(tǒng)的監(jiān)控視頻數(shù)據(jù)存儲系統(tǒng)往往需要進行大量優(yōu)化工作來提高系統(tǒng)的檢索效率,盡管如此,檢索效率依然較低。
目前存在一些對于視頻數(shù)據(jù)存儲的研究,但其大多數(shù)要么只專注于一個具體領域的檢索優(yōu)化,如面向地理信息的檢索;要么關注于對特定存儲系統(tǒng)的優(yōu)化,不能滿足視頻數(shù)據(jù)存儲與檢索對于性能的需求而且與監(jiān)控視頻數(shù)據(jù)不能夠完全貼合。而已有的一些專注于視頻數(shù)據(jù)存儲的系統(tǒng),存在檢索性能問題,不能夠勝任對視頻數(shù)據(jù)快速檢索的需要。還有一些基于hbase的檢索系統(tǒng)不具備檢索視頻語義的功能,一些提供視頻語義檢索功能的系統(tǒng)沒有對hbase的索引結構優(yōu)化。此外,使用mapreduce任務提取圖像特征并檢索的方法要求輸入信息是圖像,不能直接對文本語義信息檢索。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提出一種分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng),能夠快速的根據(jù)視頻語義信息進行數(shù)據(jù)檢索并且可以快速批量獲取檢索到的視頻圖像數(shù)據(jù)。
基于上述目的本發(fā)明提供的一種分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng),包括:
視頻數(shù)據(jù)存儲模塊,與hbase分布式列式數(shù)據(jù)庫連接,用于將視頻數(shù)據(jù)存儲入hbase分布式列式數(shù)據(jù)庫;
分布式視頻數(shù)據(jù)語義檢索模塊,用于對視頻數(shù)據(jù)語義建立基于內存的結構化索引模型;
數(shù)據(jù)通信模塊,用于多個視頻數(shù)據(jù)生產(chǎn)者、多個所述視頻數(shù)據(jù)存儲模塊與所述分布式視頻數(shù)據(jù)語義檢索模塊之間的數(shù)據(jù)通信。
在一些實施方式中,所述視頻數(shù)據(jù)存儲模塊將視頻語義信息融入rowkey中,使多次的hbase基于rowkey的數(shù)據(jù)訪問請求轉換為一條或多條rowkey范圍掃描請求。
在一些實施方式中,所述分布式視頻數(shù)據(jù)語義檢索模塊采用跳表結構來存儲同一攝像頭同一類型語義的所有視頻數(shù)據(jù)的時間戳信息;對于圖像類型的視頻數(shù)據(jù),對圖像的發(fā)生時間進行排序;對于視頻類型的視頻數(shù)據(jù),對視頻的起始時間進行排序。
在一些實施方式中,所述跳表結構基于隨機函數(shù)的概率選擇模型,跳表的隨機平均查找長度為c(log1/pn-1)=(log1/pn-1)/p,其中n為跳表存儲數(shù)據(jù)個數(shù),p為選取概率;該函數(shù)在p=0.5附近取得極小值,選取概率p設置為0.5。
在一些實施方式中,采用比特數(shù)組來對所述跳表結構的查詢訪問進行過濾。
在一些實施方式中,對帶有時間戳的語義信息進行映射,每個攝像頭的每個語義對應一個比特數(shù)組,而該語義出現(xiàn)時間與該語義的最小時間相減的值為該視頻數(shù)據(jù)存儲在比特數(shù)組的下標,當某個時間戳內有視頻數(shù)據(jù),則將其對應的比特數(shù)組位置為1,否則為0。
在一些實施方式中,采用壓縮下標的方法對所述比特數(shù)組進行觸發(fā)式壓縮,當比特數(shù)組容量超過設置的閾值,將對比特數(shù)組進行壓縮。
在一些實施方式中,使用布谷鳥哈希散列函數(shù)對所述分布式視頻數(shù)據(jù)語義檢索模塊中的散列表進行優(yōu)化,首先,將字符串類型的數(shù)據(jù)通過映射函數(shù)
在一些實施方式中,所述數(shù)據(jù)通信模塊采用二進制的方式對消息進行序列化;所述數(shù)據(jù)通信模塊還采用基于redis的訂閱模式來傳遞視頻數(shù)據(jù)生產(chǎn)者與所述分布式視頻數(shù)據(jù)語義檢索模塊之間的消息;所述數(shù)據(jù)通信模塊還采用歷史消息持久化的方式將視頻數(shù)據(jù)生產(chǎn)者與所述分布式視頻數(shù)據(jù)語義檢索模塊之間通信的所有消息持久化到有序隊列中,當有新節(jié)點加入或者需要重新構建索引的時候,拉取歷史消息隊列中的數(shù)據(jù)進行檢索構建。
從上面所述可以看出,本發(fā)明提供的分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng),能夠快速的根據(jù)視頻語義信息進行數(shù)據(jù)檢索并且可以快速獲取視頻與圖像類型檢索結果集數(shù)據(jù),在實現(xiàn)視頻數(shù)據(jù)存儲的同時顯著提升檢索效率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例的分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng)結構示意圖;
圖2為本發(fā)明實施例中視頻數(shù)據(jù)存儲模塊rowkey設計方案圖示意圖;
圖3為本發(fā)明實施例中的跳表結構示意圖;
圖4為本發(fā)明實施例中測試跳表結構平均查找長度隨隨機概率變化點圖;
圖5為本發(fā)明實施例中的比特數(shù)組示意圖;
圖6為本發(fā)明實施中使用改進布谷鳥散列算法的散列結構示意圖;
圖7為本發(fā)明實施中的數(shù)據(jù)通信模塊結構圖;
圖8為本發(fā)明實施中的rowkey檢索流程示意圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,以下結合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。
本發(fā)明實施例提供了一種分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng)。參考圖1,為本發(fā)明實施例的分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng)結構示意圖。
所述分布式交通監(jiān)控視頻數(shù)據(jù)存儲與快速檢索系統(tǒng),包括:與hbase分布式列式數(shù)據(jù)庫連接的視頻數(shù)據(jù)存儲模塊、基于內存的分布式視頻數(shù)據(jù)語義檢索模塊以及數(shù)據(jù)通信模塊。其中:
視頻數(shù)據(jù)存儲模塊用于將視頻數(shù)據(jù)存儲入hbase分布式列式數(shù)據(jù)庫,并且保證存儲與訪問的高效性。
分布式視頻數(shù)據(jù)語義檢索模塊,用于對視頻數(shù)據(jù)語義建立基于內存的結構化索引模型,加快基于語義檢索的效率。
數(shù)據(jù)通信模塊,用于多個視頻數(shù)據(jù)生產(chǎn)者、多個所述視頻數(shù)據(jù)存儲模塊與所述分布式視頻數(shù)據(jù)語義檢索模塊之間的數(shù)據(jù)通信。
具體的,視頻數(shù)據(jù)存儲模塊包括下列操作內容:
(11)為打破隨機rowkey和遞增rowkey設計方式在基于語義檢索上的低效性,使用基于語義的rowkey設計方法,將語義信息融入到rowkey之中,使得從檢索模塊獲取rowkey列表的時候,這些rowkey在物理上是相鄰的,這樣多次的hbase基于rowkey的數(shù)據(jù)訪問請求可以轉換為一條或幾條rowkey范圍掃描請求,降低數(shù)據(jù)庫負載同時提升檢索性能。該模塊rowkey設計方案如圖2所示。這樣的rowkey設計方案使得相同攝像頭相同語義的視頻數(shù)據(jù)按照時間順序分布于hbase數(shù)據(jù)庫中,這樣每次檢索請求通過檢索模塊獲取的是物理上連續(xù)的rowkey范圍,這樣只需要依次獲取這個范圍內的視頻數(shù)據(jù)即可,只需要進行一次或幾次數(shù)據(jù)庫訪問,該過程如圖8所示。
具體的,分布式視頻數(shù)據(jù)語義檢索模塊包括下列操作內容:
(21)為加快語義信息時間范圍檢索的效率,同時兼顧在語義信息數(shù)據(jù)量巨大的時候系統(tǒng)維護的開銷,采用有序跳表結構來存儲同一攝像頭同一類型語義的所有視頻數(shù)據(jù)的時間戳信息,對于圖像類型的視頻數(shù)據(jù),對圖像的發(fā)生時間進行排序,而對于視頻類型的視頻數(shù)據(jù),對視頻的起始時間進行排序。圖像與視頻類型視頻數(shù)據(jù)跳表結構存儲示意圖如圖3所示。
(22)由于散列表在存儲的數(shù)據(jù)結構未知且數(shù)據(jù)量較大的情況下,存在存儲效率低下的問題,為提高對大量類別數(shù)據(jù)的存儲效率與檢索效率,使用布谷鳥哈希散列函數(shù)對散列表進行優(yōu)化。
其中,所述操作內容(21)包括下列操作內容:
(21a)由于跳表結構的平均查找長度與跳表的選取概率p設置有關,為了確保跳表的檢索效率最優(yōu),需要對選取概率p進行優(yōu)化設置。所使用跳表結構基于隨機函數(shù)的概率選擇模型,跳表的隨機平均查找長度為c(log1/pn-1)=(log1/pn-1)/p,其中n為跳表存儲數(shù)據(jù)個數(shù),p為選取概率。跳表結構平均查找長度隨隨機概率變化點圖如圖4所示。該函數(shù)在p=0.5附近取得極小值,選取概率p設置為0.5。
(21b)由于跳表結構在查詢范圍不存在數(shù)據(jù)時,會造成兩次查詢空轉,消耗系統(tǒng)性能,為了加快跳表結構對于查詢結構集為空的檢索場景檢索效率,采用比特數(shù)組來對跳表結構的查詢訪問進行過濾。比特數(shù)組示意圖如圖5所示。
進一步的,所述操作內容(21b)包括下列操作內容:
(21ba)由于比特數(shù)組是一種二進制的數(shù)組結構,為了使用比特數(shù)組存儲時間戳信息,對帶有時間戳的語義信息進行映射,每個攝像頭的每個語義都會對應著一個比特數(shù)組,而該語義出現(xiàn)時間與該語義的最小時間相減的值為該視頻數(shù)據(jù)存儲在比特數(shù)組的下標,當某個時間戳內有視頻數(shù)據(jù),則將其對應的比特數(shù)組位置為1,否則則為0。
(21bb)為解決比特數(shù)組在數(shù)據(jù)量較大的時候會有存儲占用空間較大的問題,權衡檢索高效性與空間效率,采用壓縮下標的方法對比特數(shù)組進行觸發(fā)式壓縮,當比特數(shù)組容量超過設置的閾值,將對比特數(shù)組進行壓縮,比特數(shù)組中的每一位表示的時間范圍增大,如之前每一位只能表示這一秒有沒有數(shù)據(jù),現(xiàn)在每一位表示兩秒鐘有沒有數(shù)據(jù)。每一位表示的范圍增大一倍,比特數(shù)組的占用空間下降一倍。
其中,所述操作內容(22)包括下列操作內容:
(22a)由于散列表在存儲的數(shù)據(jù)結構未知且數(shù)據(jù)量較大的情況下,存在存儲效率低下的問題,為提高對大量類別數(shù)據(jù)的存儲效率與檢索效率,使用布谷鳥哈希散列函數(shù)對散列表進行優(yōu)化。由于散列結構存儲字符串類型數(shù)據(jù),布谷鳥哈希算法要求有兩個散列函數(shù)計算元素存儲位置,采用兩次映射的方式,首先將字符串類型的數(shù)據(jù)通過映射函數(shù)
具體的,數(shù)據(jù)通信模塊包括下列操作內容:
(31)為了保證數(shù)據(jù)生產(chǎn)者與檢索模塊之間通信的高效性,采用二進制的方式對消息進行序列化,使得消息序列化后體積較小適合網(wǎng)絡傳輸。使用protocolbuffer數(shù)據(jù)交換協(xié)議作為底層協(xié)議。
(32)由于數(shù)據(jù)生產(chǎn)者與檢索模塊是多對多的關系,為了保證視頻數(shù)據(jù)生產(chǎn)者與分布式視頻數(shù)據(jù)語義檢索模塊之間的空間非耦合和同步非耦合,采用基于redis的訂閱模式來傳遞視頻數(shù)據(jù)生產(chǎn)者與分布式視頻數(shù)據(jù)語義檢索模塊之間的消息。視頻數(shù)據(jù)生產(chǎn)者與分布式視頻數(shù)據(jù)語義檢索模塊通過訂閱指定主題和向指定主題發(fā)送消息來達到通信的目的。
(33)為了保證數(shù)據(jù)生產(chǎn)者與檢索模塊之間的時間非耦合,采用歷史消息持久化的方式將視頻數(shù)據(jù)生產(chǎn)者與分布式視頻數(shù)據(jù)語義檢索模塊之間通信的所有消息持久化到有序隊列中,當有新節(jié)點加入或者需要重新構建索引的時候,拉取歷史消息隊列中的數(shù)據(jù)進行檢索構建。數(shù)據(jù)通信模塊結構圖如圖7所示。
所屬領域的普通技術人員應當理解:以上任何實施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權利要求)被限于這些例子;在本發(fā)明的思路下,以上實施例或者不同實施例中的技術特征之間也可以進行組合,步驟可以以任意順序實現(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明它們沒有在細節(jié)中提供。
在闡述了具體細節(jié)(如顏色和車牌類型語義數(shù)據(jù))以描述本發(fā)明的示例性實施例的情況下,對本領域技術人員來說顯而易見的是,可以在沒有這些具體細節(jié)的情況下或者這些具體細節(jié)有變化的情況下實施本發(fā)明。因此,這些描述應被認為是說明性的而不是限制性的。
盡管已經(jīng)結合了本發(fā)明的具體實施例對本發(fā)明進行了描述,但是根據(jù)前面的描述,這些實施例的很多替換、修改和變型對本領域普通技術人員來說將是顯而易見的。例如,存儲其他類型的語義數(shù)據(jù)并且通過這些語義數(shù)據(jù)進行檢索(例如,車輛的類型、車輛的大小)可以使用所討論的實施例。
本發(fā)明的實施例旨在涵蓋落入所附權利要求的寬泛范圍之內的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內,所做的任何省略、修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。