專利名稱:一種基于BigBase的海量圖片搜索系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機處理領(lǐng)域,尤其涉及一種基于BigBase的海量圖片搜索系統(tǒng)及方法。
背景技術(shù):
當(dāng)前,國內(nèi)外有很多的搜索引擎提供圖片搜索服務(wù),其搜索方式大都是按照圖片的關(guān)鍵字進行搜索,而基于圖像內(nèi)容的海量圖片搜索引擎還沒有通用的成熟產(chǎn)品。所謂基于圖片內(nèi)容的搜索引擎是指給定一張圖片,在海量的圖片庫中能夠檢索到所有與其內(nèi)容相同或者相似圖片的搜索引擎。這種搜索引擎難產(chǎn)的主要原因在于隨著信息社會的不斷發(fā)展,圖片的數(shù)量呈現(xiàn)出爆炸性增長的趨勢,從而導(dǎo)致圖片的總量過于龐大;而當(dāng)前的圖像匹配方法經(jīng)過多年的發(fā)展,雖然已經(jīng)很好地解決了圖片兩兩比對的問題,但是由于其計算的復(fù)雜性,難以滿足海量圖片的實時搜索需求。因此,迫切需要從系統(tǒng)結(jié)構(gòu)的角度,利用當(dāng)前分布式系統(tǒng)的新思想和新方法結(jié)合已有的技術(shù)來解決舊的問題。一方面,在圖像匹配領(lǐng)域,近幾十年來,許多研究者進行了廣泛深入的研究,提出了大量的算法。目前的圖像匹配算法主要有基于特征和基于區(qū)域兩種方法。由于視角、拍攝時間、分辨率、光照強度、傳感器類型等的差異,待匹配的圖像往往存在平移、旋轉(zhuǎn)、光照、 尺度變化等差別。基于特征的方法首先從待匹配圖像中提取特征集合。特征是圖像的一些顯著位置例如圖像的邊緣、角點等?;谔卣鞯姆椒ɡ昧藞D像的顯著特征,具有計算量小,速度較快等特點,對圖像的幾何變形、噪聲、畸變等具有一定的魯棒性。因此,基于特征的方法成為當(dāng)前研究最多應(yīng)用最廣的方法。在基于特征的匹配方法方面,David G.Lowe在 2004年提出了一種基于尺度空間的,對圖像縮放、旋轉(zhuǎn)甚至仿射變換保持不變性的圖像局
部特征描述算子-SIFT (Scale Invariant Feature Transform)算子。SIFT 算法首先
在尺度空間進行特征檢測,并確定關(guān)鍵點(Keypoints)的位置和關(guān)鍵點所處的尺度,然后使用關(guān)鍵點鄰域梯度的主方向作為該點的方向特征,以實現(xiàn)算子對尺度和方向的無關(guān)性。 SIFT特征向量對旋轉(zhuǎn)、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩(wěn)定性;同時該類特征向量個數(shù)多,即使少數(shù)的幾個物體也可以產(chǎn)生大量SIFT 特征向量;每一個向量的維數(shù)多,一般為1 維;可擴展性好,可以很方便的與其他形式的特征向量進行聯(lián)合。因此,SIFT算法一經(jīng)提出,迅速成為該領(lǐng)域的一個經(jīng)典算法。但是,基于SIFT特征建立海量圖片庫存在著很多難題,一是由于SIFT特征數(shù)量多,一副圖片往往具有成千上萬個特征向量,導(dǎo)致圖片的特征庫非常巨大;二是每個特征向量的維數(shù)高,一般為1 維,高維向量的相似性計算一直是計算機界的研究難題。一個包含一億張圖片的特征庫,至少要存儲千億條特征向量,傳統(tǒng)的數(shù)據(jù)庫已經(jīng)無法有效地支持這種規(guī)模的應(yīng)用。因此,必須解決特征庫的海量存儲和實時檢索問題。另一方面,在分布式系統(tǒng)的研究領(lǐng)域,近幾年來有關(guān)云計算的一系列理論、方法和工具為解決大規(guī)模數(shù)據(jù)處理問題提供了新的手段。其中,基于開源實現(xiàn)的Hadoop和由北京億聯(lián)國科數(shù)據(jù)科技有限公司研發(fā)的商業(yè)數(shù)據(jù)庫產(chǎn)品BigBase就是兩個重要的大規(guī)模數(shù)據(jù)
3處理工具,前者用于構(gòu)建集大規(guī)模數(shù)據(jù)存儲(HDR5)和分布式計算(Map-Reduce模型)為一體的分布式系統(tǒng)平臺;后者基于HDFS提供高可擴展性、高可靠性、高性能、列存儲、可伸縮、 實時讀寫的數(shù)據(jù)庫系統(tǒng)。BigBase是中國第一款通用的商業(yè)版本NoSQL數(shù)據(jù)庫,支持多索引列,支持單行事務(wù),可以用來存儲非結(jié)構(gòu)化和結(jié)構(gòu)化的松散數(shù)據(jù)。該數(shù)據(jù)庫的特點是讀寫速度快,可以做到在線查詢,同時支持大量用戶的并發(fā)查詢。與hadoop—樣,BigBase目標(biāo)主要依靠橫向擴展,通過不斷增加廉價的商用服務(wù)器,來增加計算和存儲能力。BigBase可以用來存儲非常大規(guī)模的表,一個表可以有上億行,上百萬列;支持面向列(族)的存儲和權(quán)限控制,列(族)獨立檢索;能夠更好地支持稀疏表,對于為空(null)的列,并不占用存儲空間。因此,Hadoop和BigBase等工具的出現(xiàn),為解決上述海量圖片以及對應(yīng)的海量特征庫的存儲和查詢問題提供了有力的支持。然而,僅僅有SIFT算法和Hadoop、BigBase還不夠,實現(xiàn)一個海量圖片搜索系統(tǒng)必須要解決海量高維特征向量的快速匹配的問題。對于任何一條輸入特征向量而言,基于 SIFT特征的匹配方法要求在整個特征庫中找到與輸入特征向量歐氏距離最小和次小的兩個特征向量,如果最小距離與次小距離的比值小于一個閾值,則認(rèn)為最小距離的特征向量與輸入的特征向量匹配。為此,要想精確地得到匹配的特征向量,輸入特征向量必須與特征庫中的每一個向量計算歐氏距離。由于特征庫的巨大,采用這種蠻力搜索的方法是不可能實現(xiàn)實時搜索的。因此,必須采取某種方法有效地縮小搜索范圍,同時保證該范圍不會隨著圖片總量的擴大而增長,從而將搜索時間控制在用戶可以接受的范圍內(nèi)。
發(fā)明內(nèi)容
為了解決上述的技術(shù)問題,本發(fā)明提供了一種基于BigBase的海量圖片搜索系統(tǒng)及方法,其目的在于1、應(yīng)用SIFT算法,提取圖片的特征值,從而確保搜索的結(jié)果對于圖片的旋轉(zhuǎn)、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲保持一定程度的穩(wěn)定性;2、利用Hadoop的HDFS實現(xiàn)海量圖片的存儲,應(yīng)用Hadoop的Map-Reduce框架實現(xiàn)圖片特征提取、大規(guī)模并發(fā)查詢等操作的并發(fā)執(zhí)行;采用BigBase實現(xiàn)海量SIFT特征向量的存儲和高效查詢;3、設(shè)計一種KWndexer算法,為每一個特征向量編制索引,使得具有相同索引號的向量成為一堆,該索引號就是對應(yīng)堆的堆號;每個堆中的向量個數(shù)設(shè)定為一個固定范圍 (默認(rèn)值200到400)。在進行匹配時采用SBBF(Simplified Best Bin First)算法,僅對某一堆中的向量計算歐氏距離,從而將匹配算法復(fù)雜度控制在0(1)級。這樣,整個檢索的時間更多依賴于從BigBase中按照堆號查詢堆中記錄的時間,該時間為0(log2n)。BigBase 良好的擴展性和實時性,使得當(dāng)圖片庫的規(guī)模顯著增大時可以通過擴展硬件資源的方法, 保證這種查詢操作的實時性。本發(fā)明公開了一種基于內(nèi)容的海量圖片搜索系統(tǒng)的實現(xiàn)方法,包括步驟1,建立圖片特征庫。提取圖片庫中每張圖片的SIFT特征向量;將所有圖片的特征向量存儲到BigBase的一個表中。步驟2,為特征向量建立索引。通過KWndexer算法,為每一個特征向量編制索引, 通過索引號將向量分堆,每個向量的索引號就是其所在堆的堆號;
4
步驟3,對輸入的圖片檢索實施按內(nèi)容檢索。首先,提取輸入圖片的SIFT特征向量;然后,將這些特征向量逐一到特征向量庫中按照SBBF算法查找與其匹配的特征向量; 最后,按照特征向量的匹配結(jié)果得到相似圖片的排序列表。步驟2中的KWndexer算法描述如下有η (η > 0)個D (D > 0)維度的向量組成的集合S = {V(1,V1,…,vn_J,其中任何一個向量Vi可以表示為Vi = {Vid0, ViCl1,…,ViCVJ,將S分成k個規(guī)模為M的子集P1, P2,…,Pk,使得DP1 U P2 U …U Pk = S ;2)對于任意的 Pi (0 彡 i 彡 k)和 Pj (0 彡 j 彡 k),PiHPj= 0;3)對于任意的Pi,其所包含向量的個數(shù)為x,M<x<2M,M>0;如圖3所示,該算法的主要思想是通過kd樹的方法,將特征向量進行分堆。分堆時,所有的特征向量均處在kd樹的葉子節(jié)點上,每個節(jié)點存放χ < 2M)個特征向量。 在分堆時,只要當(dāng)前堆的大小大于等于2M,則將當(dāng)前堆分成左右兩個堆,分堆的依據(jù)是計算當(dāng)前堆中所有向量在不同維度上的標(biāo)準(zhǔn)差,以最大標(biāo)準(zhǔn)差的那個維度為依據(jù),在該維度上凡是該維度的值比最大標(biāo)準(zhǔn)差小的向量一律放到左子樹上,否則放到右子樹上。用indeXvi表示Vi所在子集的編號,該值為一個字符串。用Clmax(Str)表示在KD 樹中路徑為str的非葉子節(jié)點對應(yīng)的標(biāo)準(zhǔn)差最大的維度的編號,用Omax(Str)表示該節(jié)點對應(yīng)的最大標(biāo)準(zhǔn)差的值。在執(zhí)行KWndexer算法時,必須保存整個KD樹每個非葉子節(jié)點的 dmax和ο max信息,以用于SBBF算法進行搜索。具體的算法如下
權(quán)利要求
1.一種基于BigBase的海量圖片搜索方法,其特征在于,包括步驟1,建立圖片特征庫提取圖片庫中每張圖片的SIFT特征向量;將所有圖片的特征向量存儲到BigBase的一個表中;步驟2,為特征向量建立索引通過KWndexer算法,為每一個特征向量編制索引,通過索引號將向量分堆,每個向量的索引號就是其所在堆的堆號;步驟3,對輸入的圖片檢索實施按內(nèi)容檢索首先,提取輸入圖片的SIFT特征向量;然后,將這些特征向量逐一到特征向量庫中按照SBBF算法查找與其匹配的特征向量;最后, 按照特征向量的匹配結(jié)果得到相似圖片的排序列表。
2.如權(quán)利要求1所述的基于BigBase的海量圖片搜索方法,其特征在于,步驟1中,海量的圖片特征向量存儲在BigBase的一個單表中,通過BigBase實現(xiàn)傳統(tǒng)數(shù)據(jù)庫難以實現(xiàn)的海量存儲和并發(fā)查詢功能。
3.如權(quán)利要求1所述的基于BigBase的海量圖片搜索方法,其特征在于,步驟2中,在建立索引時采用KWndexer算法,按照一種類似KD樹的結(jié)構(gòu)建立索引;KD樹的每一個樹葉代表一個堆,每個堆擁有200到400的固定范圍數(shù)量的特征向量;該范圍可以根據(jù)匹配的精度要求進行擴大或者減??;每個堆中的特征向量在數(shù)據(jù)庫表中具有相同的ID前綴。
4.如權(quán)利要求1所述的基于BigBase的海量圖片搜索方法,其特征在于,在步驟3中, 通過SBBF算法,輸入特征向量僅僅與某一個固定堆進行歐式距離計算。
5.如權(quán)利要求4所述的特征值匹配方法,其特征在于,特征值匹配的步驟具體包括步驟31,按照SBBF算法,計算輸入特征向量的索引號;步驟32,按照輸入特征向量的索引號,到特征向量表中查詢所有與該索引號相同的特征向量,得到一個特征向量列表;步驟33,將輸入特征向量與上述特征向量列表中的每一個向量分別計算歐氏距離,得到一個最小距離和一個次小距離;步驟34,如果最小距離和次小距離的比值小于一個固定的閾值,則認(rèn)為輸入特征向量與最小距離對應(yīng)的向量匹配,否則,認(rèn)為沒有匹配的特征向量。
6.一種基于BigBase的海量圖片搜索系統(tǒng),其特征在于,包括采用SIFT算法提取圖片的特征值,從而確保系統(tǒng)對于圖片的旋轉(zhuǎn)、尺度縮放、 亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩(wěn)定性;采用 Hadoop+BigBase的軟件架構(gòu),為海量圖片及其特征提供了分布式的存儲和計算平臺。
7.如權(quán)利要求6所述的基于BigBase的海量圖片搜索系統(tǒng),其特征在于,在Hadoop平臺上存儲海量的圖片文件時,采用將多個小文件打包成大文件的方法避免HDFS對海量小文件存儲的限制。
8.如權(quán)利要求6所述的基于BigBase的海量圖片搜索系統(tǒng),其特征在于,采用BigBase 存儲大量的圖片特征值,通過BigBase的快速區(qū)間檢索能力獲得對權(quán)利要求4中所述的向量堆的快速讀取。
9.如權(quán)利要求6所述的基于BigBase的海量圖片搜索系統(tǒng),其特征在于,當(dāng)圖片庫的規(guī)模增加時,可以通過擴展硬件規(guī)模的方法,確保搜索速度不會降低,且硬件擴充的倍數(shù)遠(yuǎn)小于圖片規(guī)模增加的倍數(shù)。
全文摘要
本發(fā)明涉及一種基于BigBase的海量圖片搜索系統(tǒng)和方法,方法包括提取每張圖片的SIFT特征向量存儲到BigBase中;通過KDIndexer算法為特征向量編制索引,使具有相同索引號的向量成為一堆,每堆的向量個數(shù)在一個固定范圍內(nèi)。搜索時,首先,提取輸入圖片的SIFT特征向量;然后,逐一按SBBF算法計算其所屬的堆號,到特征向量庫的相應(yīng)堆中查找與其匹配的特征向量;最后,按匹配結(jié)果得到相似圖片的排序列表。本發(fā)明的關(guān)鍵在于通過建立索引將特征向量庫分堆的方法,將全局計算變成了小范圍固定規(guī)模的計算;這樣就可以借助于BigBase良好的可擴展性,只要保證機器的規(guī)模與圖片庫的規(guī)模成固定比值,就可以確保查找操作在相對固定的時間內(nèi)完成,以滿足對海量圖片庫的實時搜索需求。
文檔編號G06F17/30GK102436491SQ20111034958
公開日2012年5月2日 申請日期2011年11月8日 優(yōu)先權(quán)日2011年11月8日
發(fā)明者付希全, 張三明 申請人:付希全, 張三明