本發(fā)明涉及詞匯樹模型構(gòu)建方法領(lǐng)域,更具體的說是涉及一種基于磁盤的詞匯樹模型構(gòu)建方法。
背景技術(shù):
利用詞匯樹對(duì)圖片進(jìn)行搜索,是把從訓(xùn)練集中提取到的特征進(jìn)行K-Means聚類,生成的每個(gè)簇集定義為一個(gè)單詞,每個(gè)單詞再關(guān)聯(lián)一個(gè)倒排檔,然后把從查詢圖片中提取到的特征量化到這些單詞當(dāng)中,利用TF-IDF模型對(duì)查詢圖片與庫中圖片的相似度進(jìn)行評(píng)測(cè)。利用分層聚類生成的詞匯樹,使特征量化時(shí)不必遍歷所有單詞,極大縮短了量化所需時(shí)間。
在使用詞匯樹進(jìn)行特征分類前,需要通過訓(xùn)練得到一個(gè)合適的詞匯樹模型,在訓(xùn)練時(shí),需要將大量的特征點(diǎn)進(jìn)行分層聚合分類。向樹狀結(jié)構(gòu)模型中添加圖片可以形成基于詞匯樹的圖像數(shù)據(jù)庫,針對(duì)不同數(shù)量級(jí)別的樹形圖像數(shù)據(jù)庫,所需要詞匯樹模型大小也不一樣。當(dāng)數(shù)據(jù)庫的量級(jí)超過百萬張圖片時(shí),訓(xùn)練可以支持如此大規(guī)模的數(shù)據(jù)庫的詞匯樹模型可能需要近十萬張圖片,這一過程一般需要系統(tǒng)提取數(shù)以億級(jí)的圖片特征描述子,而相應(yīng)的硬件系統(tǒng)所需要的內(nèi)存也將達(dá)到上百GB,其對(duì)計(jì)算機(jī)的內(nèi)存要求高,這是一般的計(jì)算機(jī)很難以滿足的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了解決上述技術(shù)問題提供一種基于磁盤的詞匯樹模型構(gòu)建方法,其在構(gòu)建用于建立大規(guī)?;虺笠?guī)模圖像數(shù)據(jù)庫的詞匯樹模型時(shí),可以充分利用外部存儲(chǔ)器的存儲(chǔ)空間,避免對(duì)計(jì)算機(jī)內(nèi)存提出過大要求。
本發(fā)明通過下述技術(shù)方案實(shí)現(xiàn):
一種基于磁盤的詞匯樹模型構(gòu)建方法,包括以下步驟:
A、將用于構(gòu)建詞匯樹模型的圖片按照一定數(shù)量分為若干個(gè)樣本組;
B、分別提取每個(gè)樣本組里所有圖片的特征點(diǎn)描述子,根據(jù)特征點(diǎn)描述子之間的歐氏距離,分別對(duì)各樣本組的特征點(diǎn)描述子進(jìn)行聚合分類,分為K類且最大層數(shù)為L(zhǎng),將樣本組分類出的每個(gè)子樣本的幾何中心向量以及子樣本所對(duì)應(yīng)的描述子組寫入到外部存儲(chǔ)器中,其中,K和L均為大于1的自然數(shù);
C、將所有樣本組子樣本的幾何中心向量讀入內(nèi)存,對(duì)所有子樣本的幾何中心向量進(jìn)行聚合分類,共包含K個(gè)子類;
D、針對(duì)該K個(gè)子類,對(duì)每一個(gè)子類做最大層數(shù)為L(zhǎng)-1以及子節(jié)點(diǎn)數(shù)為K的分層聚合分類,完成詞匯樹模型的構(gòu)建。
在步驟C中,將每一個(gè)子類自己本身的幾何中心向量,以及分到這個(gè)子類中的所有幾何中心向量對(duì)應(yīng)的描述子檔的存儲(chǔ)路徑寫入到一個(gè)子類檔中,產(chǎn)生K個(gè)子類檔并存儲(chǔ)到外部存儲(chǔ)器上。
所述步驟D具體為:讀入一個(gè)子類檔,按照子類檔中所記錄的描述子文件的存儲(chǔ)路徑,讀入所有屬于這個(gè)子類的描述子,對(duì)該子類做最大層數(shù)為L(zhǎng)-1以及子節(jié)點(diǎn)數(shù)為K的分層聚合分類,按照此步驟對(duì)每一個(gè)子類檔做相同操作后將分層聚合分類的結(jié)果匯總。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下的優(yōu)點(diǎn)和有益效果:
本發(fā)明在在構(gòu)建用于建立大規(guī)?;虺笠?guī)模圖像數(shù)據(jù)庫的詞匯樹模型時(shí),可以充分利用外部存儲(chǔ)器的存儲(chǔ)空間,減小內(nèi)存的負(fù)荷,避免對(duì)計(jì)算機(jī)內(nèi)存提出過大要求。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例,對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明,本發(fā)明的示意性實(shí)施方式及其說明僅用于解釋本發(fā)明,并不作為對(duì)本發(fā)明的限定。
實(shí)施例1
A、將圖片分為若干個(gè)樣本組;
B、分別提取每個(gè)樣本組里所有圖片的特征點(diǎn)描述子,根據(jù)特征點(diǎn)描述子之間的歐氏距離,分別對(duì)各樣本組的特征點(diǎn)描述子進(jìn)行聚合分類,分為K類且最大層數(shù)為L(zhǎng),將樣本組分類出的每個(gè)子樣本的幾何中心向量以及子樣本所對(duì)應(yīng)的描述子組寫入到外部存儲(chǔ)器中,其中,K和L均為大于1的自然數(shù);
C、將所有樣本組子樣本的幾何中心向量讀入內(nèi)存,對(duì)所有子樣本的幾何中心向量進(jìn)行聚合分類,共包含K個(gè)子類;
D、針對(duì)該K個(gè)子類,對(duì)每一個(gè)子類做最大層數(shù)為L(zhǎng)-1以及子節(jié)點(diǎn)數(shù)為K的分層聚合分類,完成詞匯樹模型的構(gòu)建。
針對(duì)上述實(shí)施例,現(xiàn)例舉一詳細(xì)實(shí)施方式進(jìn)行說明。
實(shí)施例2
現(xiàn)以45000張照片進(jìn)行詳細(xì)說明:
將這45000張圖片按照每組1500張隨機(jī)分為30組;
提取一組圖片的所有特征點(diǎn)描述子,根據(jù)特征點(diǎn)描述子之間的歐氏距離,對(duì)該組的特征點(diǎn)描述子進(jìn)行聚合分類,分為K類,譬如90類,并將該樣本組分類出的每個(gè)子樣本的幾何中心向量以及子樣本所對(duì)應(yīng)的描述子組寫入到一個(gè)文件放在外部存儲(chǔ)器上,譬如本地磁盤、硬盤、光盤、U盤等;按照該步驟分別對(duì)30組照片依此進(jìn)行處理,此時(shí),在外部存儲(chǔ)器上一共會(huì)產(chǎn)生30*K個(gè)描述子檔;
將30*K個(gè)描述子檔所存儲(chǔ)的描述子幾何中心向量讀入內(nèi)存,并對(duì)這些幾何中心向量做聚合分類,分成K個(gè)子類;將每一個(gè)子類自己本身的幾何中心向量,以及分到這個(gè)子類中的所有幾何中心向量對(duì)應(yīng)的描述子檔的存儲(chǔ)路徑寫入到一個(gè)子類檔中,產(chǎn)生K個(gè)子類檔并存儲(chǔ)到外部存儲(chǔ)器上,此時(shí)完成了對(duì)45000張圖片中所有的特征點(diǎn)描述子的第一次聚合分類;
讀入一個(gè)子類檔,按照子類檔中所記錄的描述子文件的存儲(chǔ)路徑,讀入所有屬于這個(gè)子類的描述子,由于第一層分類已經(jīng)完成,故再對(duì)這一子類做最大層數(shù)為L(zhǎng)-1,最大子節(jié)點(diǎn)數(shù)為K的分層聚合分類;對(duì)每一個(gè)子類檔做相同操作,將分層聚合分類的結(jié)果匯總即可得到詞匯樹的模型。
以上所述的具體實(shí)施方式,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。