一種基于大數(shù)據(jù)的檢索方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及大數(shù)據(jù)處理,特別涉及一種基于大數(shù)據(jù)的檢索方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)和多媒體技術(shù)的蓬勃發(fā)展,圖像檢索逐漸成為用戶獲取信息的一種重 要方式。圖像容量一般都較大。在很多領(lǐng)域的應(yīng)用中會(huì)產(chǎn)生大量的圖像文件,隨著高清化 的普及,圖像數(shù)據(jù)量勢(shì)必會(huì)更大。需要對(duì)這些應(yīng)用中產(chǎn)生的海量圖像數(shù)據(jù)進(jìn)行高效的存儲(chǔ) 和快速精確的檢索。然而,目前的B/S架構(gòu)的檢索系統(tǒng)檢索速度慢,并發(fā)性較差,且當(dāng)圖像 數(shù)據(jù)和索引文件出現(xiàn)快速爆炸性增長(zhǎng)時(shí)會(huì)造成性能瓶頸。
【發(fā)明內(nèi)容】
[0003] 為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種基于大數(shù)據(jù)的檢索方法, 包括:
[0004] 采用分布式文件來存儲(chǔ)圖像的索引數(shù)據(jù),將所有索引數(shù)據(jù)寫入索引數(shù)據(jù)文件中, 然后將索引數(shù)據(jù)文件分布存儲(chǔ)到分布式文件系統(tǒng)的各個(gè)節(jié)點(diǎn);
[0005] 采用MapReduce并行編程模型實(shí)現(xiàn)索引數(shù)據(jù)的檢索,將檢索空間劃分成多個(gè)子空 間,然后通過任務(wù)調(diào)度在各子空間進(jìn)行并行檢索,最后匯總形成最終檢索結(jié)果。
[0006] 優(yōu)選地,在圖像寫入階段,將圖像數(shù)據(jù)直接寫入分布式文件系統(tǒng),而索引數(shù)據(jù)采用 緩沖機(jī)制,當(dāng)緩沖隊(duì)列滿或計(jì)時(shí)器時(shí)間到達(dá)時(shí)統(tǒng)一寫入索引數(shù)據(jù)文件,并實(shí)現(xiàn)分布式存儲(chǔ); 在主節(jié)點(diǎn)內(nèi)存中建立索引數(shù)據(jù)緩沖區(qū),索引數(shù)據(jù)記錄項(xiàng)以順序?qū)懛绞綄懭?,緩沖區(qū)中以索 引數(shù)據(jù)記錄為單位,索引數(shù)據(jù)以追加的方式寫入緩沖,當(dāng)緩沖隊(duì)列滿或計(jì)時(shí)器時(shí)間到達(dá)時(shí), 以緩沖區(qū)為單位進(jìn)行分布式位置分配,將整個(gè)緩沖區(qū)的索引數(shù)據(jù)記錄通過對(duì)緩沖區(qū)頭結(jié)構(gòu) 中的標(biāo)識(shí)信息作散列運(yùn)算,找到索引數(shù)據(jù)文件在分布式文件系統(tǒng)中的對(duì)應(yīng)存儲(chǔ)節(jié)點(diǎn),并將 索引數(shù)據(jù)文件存儲(chǔ)到相應(yīng)的節(jié)點(diǎn)上。
[0007] 優(yōu)選地,所述通過任務(wù)調(diào)度在各子空間進(jìn)行并行檢索,還包括:
[0008] 指定索引數(shù)據(jù)的η個(gè)數(shù)值屬性~的順序,其中i e [1···η],并將數(shù)值屬性A1值域 劃分為D1個(gè)子域,建立多屬性的排序?qū)哟螛洌?br>[0009] 第1層為根節(jié)點(diǎn);第2層為屬性A1的所有子域,按照從左到右由小到大排序;第3 層對(duì)第2層的每一個(gè)節(jié)點(diǎn)均按屬性A2的子域從左到右由小到大排序;第(η+1)層對(duì)第η層 的每一個(gè)節(jié)點(diǎn)按屬性總的子域從左到右由小到大排序,則第(η+1)層共有B個(gè)葉子節(jié)點(diǎn),B 值計(jì)算公式為
[0010] 對(duì)所有葉子節(jié)點(diǎn)按照從左到右的順序分別進(jìn)行編號(hào),對(duì)任意元組t在屬性心、 A2、…、An上的取值均映射到圖中的一個(gè)葉子節(jié)點(diǎn),將該葉子節(jié)點(diǎn)的編號(hào)記作元組的排序值 Re [1…B],且任何包含屬性六^^、…、An的檢索條件也具有唯一的排序值W ;
[0011] 確定元組的排序之后,在每一個(gè)數(shù)據(jù)節(jié)點(diǎn)建立一個(gè)長(zhǎng)度為B的葉節(jié)點(diǎn)索引,對(duì)本 地元組的存在情況進(jìn)行指示,檢查本地所有的元組,若至少存在一個(gè)排序值為R e [1…B] 的元組,則將葉節(jié)點(diǎn)索引的第R位設(shè)置為1,否則設(shè)為O ;
[0012] 檢索進(jìn)行時(shí),首先根據(jù)檢索條件在指定屬性上的取值,生成檢索條件的排序值 W,檢索在數(shù)據(jù)節(jié)點(diǎn)進(jìn)行時(shí),通過指示葉節(jié)點(diǎn)索引來判斷該數(shù)據(jù)節(jié)點(diǎn)是否滿足檢索條件的 元組記錄,查找指示葉節(jié)點(diǎn)的第R'位,若為1,繼續(xù)在該節(jié)點(diǎn)檢索;若為0,直接返回空值。
[0013] 本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0014] 本發(fā)明提出了一種基于大數(shù)據(jù)的檢索方法,通過分布式系統(tǒng)對(duì)圖像數(shù)據(jù)的存儲(chǔ)和 檢索過程進(jìn)行了優(yōu)化,提高了檢索效率,克服了性能瓶頸。
【附圖說明】
[0015] 圖1是根據(jù)本發(fā)明實(shí)施例的基于大數(shù)據(jù)的檢索方法的流程圖。
【具體實(shí)施方式】
[0016] 下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描 述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán) 利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié) 以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中 的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0017] 本發(fā)明的一方面提供了一種基于大數(shù)據(jù)的檢索方法,實(shí)現(xiàn)海量圖像大數(shù)據(jù)的分布 式存儲(chǔ)和精確快速檢索。圖1是根據(jù)本發(fā)明實(shí)施例的基于大數(shù)據(jù)的檢索方法流程圖。
[0018] 針對(duì)海量圖像數(shù)據(jù)的存儲(chǔ)和檢索需求,本發(fā)明組建計(jì)算機(jī)集群,在集群上搭建高 效、可靠、可擴(kuò)展的Hadoop平臺(tái),組成Hadoop集群。Hadoop集群采用主從式結(jié)構(gòu),由一個(gè)主 節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)構(gòu)成。主節(jié)點(diǎn)用于集群中所有的任務(wù)調(diào)度和任務(wù)分配。從節(jié)點(diǎn)對(duì)主節(jié)點(diǎn) 分配的任務(wù)進(jìn)行計(jì)算和數(shù)據(jù)存儲(chǔ)。從節(jié)點(diǎn)周期性地向主節(jié)點(diǎn)報(bào)告心跳,若主節(jié)點(diǎn)在一定的 時(shí)間期限內(nèi)未收到從節(jié)點(diǎn)的心跳信息,則視該節(jié)點(diǎn)為無效節(jié)點(diǎn),然后自動(dòng)對(duì)計(jì)算任務(wù)進(jìn)行 重新部署和分配。
[0019] 在此架構(gòu)之上,數(shù)據(jù)存儲(chǔ)層利用分布式文件數(shù)據(jù)庫的數(shù)據(jù)管理對(duì)海量圖像數(shù)據(jù)進(jìn) 行分布式存儲(chǔ)和建立分布式訪問索引,數(shù)據(jù)處理層采用MapReduce編程模型將圖像數(shù)據(jù)進(jìn) 行分塊,在Hadoop集群中的節(jié)點(diǎn)上進(jìn)行處理,提取圖像特征、進(jìn)行圖像匹配等計(jì)算。這些對(duì) 用戶是完全透明的,用戶只需在客戶端提交檢索請(qǐng)求,Web服務(wù)器接收用戶輸入的實(shí)例或圖 像特征,將其提交給Hadoop集群進(jìn)行計(jì)算,然后通過Web服務(wù)器返回檢索結(jié)果。
[0020] 圖像檢索系統(tǒng)主要由分布式特征提取、分布式檢索和用戶接口等部分組成。首 先將圖像文件存儲(chǔ)在HDFS分布式文件系統(tǒng)的圖像庫中。然后對(duì)圖像文件進(jìn)行預(yù)處理,將 圖像數(shù)據(jù)分割成一個(gè)個(gè)元素,然后從元素中提取元素特征。對(duì)圖像進(jìn)行特征提取后,利用 MapReduce計(jì)算模型建立特征索引,并將索引文件和圖像文件存儲(chǔ)在分布式文件數(shù)據(jù)庫上。 用戶向系統(tǒng)提交查詢請(qǐng)求,用戶接口對(duì)提交的實(shí)例或圖像特征進(jìn)行特征提取,與特征索引 庫中的圖像特征進(jìn)行相似度比較后將匹配結(jié)果發(fā)送給用戶。因此,用戶可以根據(jù)自己的滿 意度向系統(tǒng)給出自己的反饋樣本信息,將用戶知識(shí)融入到查詢中,系統(tǒng)根據(jù)反饋樣本再次 進(jìn)行檢索,直至滿足用戶的圖像檢索需求。
[0021] 海量圖像數(shù)據(jù)集的大小已經(jīng)完全超過一臺(tái)獨(dú)立物理計(jì)算機(jī)的存儲(chǔ)能力。本發(fā)明的 解決方案是先將圖像上傳至HDFS文件系統(tǒng)中,然后對(duì)圖像進(jìn)行預(yù)處理,再存儲(chǔ)到分布式文 件數(shù)據(jù)庫中。以HDFS分布式文件系統(tǒng)作為底層數(shù)據(jù)存儲(chǔ)支持,用分布式文件數(shù)據(jù)庫來實(shí)現(xiàn) 海量圖像文件的分布式存儲(chǔ)和高并發(fā)實(shí)時(shí)讀寫。
[0022] 本發(fā)明設(shè)計(jì)將一個(gè)圖像的整體信息作為表的一行存儲(chǔ)在分布式文件數(shù)據(jù)庫中。將 行關(guān)鍵字(RowKey)和列關(guān)鍵字(ColumnKey)作為特征表的索引。將圖像ID作為R〇wKey( BP 主鍵),圖像屬性保存兩列:一列為原圖像ID,另一列為圖像快照;圖像特征屬性有三列,分 別為顏色特征、紋理特征和尺寸特征。在對(duì)圖像進(jìn)行存儲(chǔ)時(shí),按照建立時(shí)間來對(duì)數(shù)據(jù)進(jìn)行排 序,建立時(shí)間用數(shù)字表示。也就是說,如果存儲(chǔ)的數(shù)據(jù)進(jìn)行修改,則舊版本數(shù)據(jù)和新版本數(shù) 據(jù)都會(huì)被存儲(chǔ)在分布式文件數(shù)據(jù)庫中,以建立時(shí)間來區(qū)分它們。查詢時(shí)如果不提供建立時(shí) 間,則返回最近版本的數(shù)據(jù)。
[0023] 圖像的具體存儲(chǔ)過程為:
[0024] (1)將采集的圖像文件上傳到HDFS上,在上傳時(shí),每個(gè)圖像文件會(huì)生成唯一的圖 像ID,作為圖像標(biāo)識(shí)。
[0025] (2)檢測(cè)圖像文件是否被損壞,若被損壞,將該圖像的ID標(biāo)記為無效ID,并將無效 ID輸出到HDFS文件系統(tǒng)中。通過讀取這些文件來獲知無法存儲(chǔ)的圖像文件。若沒被損壞, 則允許正常上傳。
[0026] (3)提取HDFS中的圖像的特征,包括顏色、紋理、尺寸特征,并為每個(gè)圖像生成圖 像快照。
[0027] (4)將圖像ID、圖像快照、顏色特征、紋理特征、尺寸特征索引寫入到分布式文件 數(shù)據(jù)庫中。
[0028] 提取圖像特征是實(shí)現(xiàn)基于內(nèi)容的圖像檢索的如提,對(duì)于提尚圖像檢索效率有著非 常大的影響。從圖像中提取圖像特征的過程包括:
[0029] 首先進(jìn)行圖像結(jié)構(gòu)分析:對(duì)圖像進(jìn)行分割,通過突變檢測(cè)和漸變檢測(cè)分離出元素, 此時(shí),可以從元素中提取出圖像的位置特征;然后根據(jù)預(yù)定的規(guī)則從分離出的元素里提取 能代表元素關(guān)鍵內(nèi)容的關(guān)鍵像素點(diǎn),本發(fā)明中關(guān)鍵像素點(diǎn)通過計(jì)算元素中所有像素的平均 值來獲取,之后可以從關(guān)鍵