本發(fā)明涉及海量圖片檢索應(yīng)用在計(jì)算機(jī)的
技術(shù)領(lǐng)域:
:,尤其涉及一種基于卷積神經(jīng)網(wǎng)絡(luò)以及樹與哈希結(jié)合索引的圖像檢索方法。
背景技術(shù):
::基于卷積神經(jīng)網(wǎng)絡(luò)的特征提取方法已經(jīng)得到了實(shí)踐上的檢驗(yàn),特別是vgg和googlenet在2014年imagenet競賽中名列前茅。基于卷積神經(jīng)網(wǎng)絡(luò)模型提取的特征具有旋轉(zhuǎn)不變性,魯棒性較強(qiáng)。由于基于卷積神經(jīng)網(wǎng)絡(luò)提取的特征一般維度都比較高,如果是一個(gè)海量的人臉圖片特征庫,那么如果要進(jìn)行線性掃描,那么效率會(huì)很低,所以需要一種可以快速訪問特定圖片的方法。所以基于內(nèi)容的圖像檢索技術(shù)(cbir)應(yīng)運(yùn)而生。cbir中的索引方法主要分為兩種,一種是基于樹的索引方法,另一種是基于哈希的索引方法。基于樹的方法主要是通過對(duì)數(shù)據(jù)集進(jìn)行空間上的劃分來達(dá)到檢索引導(dǎo)的目的。而基于哈希的索引方法主要是通過哈希函數(shù)對(duì)數(shù)據(jù)進(jìn)行哈希映射,使得相近的數(shù)據(jù)有很大概率會(huì)被哈希到同一個(gè)“桶”中,而想差較大的數(shù)據(jù)有很小的概率被哈希到同一個(gè)“桶”中。而由于基于樹的索引方法在數(shù)據(jù)維度較高的情況下檢索時(shí)間效率很差,所以目前的研究重點(diǎn)主要集中在基于哈希的索引方法上,其中效果比較好的方法有e2lsh和s2jsd-lsh。而基于樹的空間劃分方法也不是一無是處,可以通過對(duì)數(shù)據(jù)集進(jìn)行空間上的劃分,使得劃分后的數(shù)據(jù)集的純度變高,然后再分別對(duì)每個(gè)子數(shù)據(jù)集構(gòu)建哈希索引會(huì)使得在不犧牲檢索時(shí)間效率的情況下提升檢索效果。技術(shù)實(shí)現(xiàn)要素:為了克服現(xiàn)有技術(shù)存在的缺點(diǎn)與不足,本發(fā)明提供一種基于卷積神經(jīng)網(wǎng)絡(luò)以及樹與哈希結(jié)合索引的圖像檢索方法,在不影響檢索時(shí)間效率的條件下改進(jìn)了哈希索引的檢索效果,并且通過樹與哈希結(jié)合的索引方法建立索引,達(dá)到對(duì)檢索過程進(jìn)行引導(dǎo)的目的。為解決上述技術(shù)問題,本發(fā)明提供如下技術(shù)方案:一種基于卷積神經(jīng)網(wǎng)絡(luò)以及樹與哈希結(jié)合索引的圖像檢索方法,包括如下步驟:s1、采集圖像庫,并對(duì)圖像庫訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型;s2、對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行特征提取得到特征庫;s3、采用基于樹與哈希結(jié)合的索引方法對(duì)特征庫建立索引;s4、根據(jù)索引內(nèi)的特征向量v進(jìn)行檢索,得到top-n結(jié)果。進(jìn)一步地,所述步驟s1的采集圖像庫,其需根據(jù)具體情況和不同的要求采集不同類型的圖像,但是采集的圖像必需先進(jìn)行標(biāo)注,然后根據(jù)這些標(biāo)注好的圖像訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型。進(jìn)一步地,所述步驟s3,具體為:s31、使用gini指數(shù)對(duì)特征庫進(jìn)行空間上的劃分,從而構(gòu)造樹;s32、分別對(duì)樹的每個(gè)葉子節(jié)點(diǎn)中的特征庫子集構(gòu)建哈希索引。進(jìn)一步地,所述步驟s31中,gini指數(shù)定義為:式中,d代表特征庫,n為特征庫中包括的數(shù)據(jù)類別個(gè)數(shù),pi表示第i個(gè)類別的數(shù)據(jù)總數(shù)占d中數(shù)據(jù)總數(shù)的比例;其中,特征庫d經(jīng)過index維度的indexvalue值進(jìn)行劃分:式中,d1表示劃分后的左子集,d2表示劃分后的右子集;對(duì)于每一次劃分,需要選擇一個(gè)特征維度和一個(gè)該維度對(duì)應(yīng)的值,使得特征庫d經(jīng)過該維度的該值劃分后的gini指數(shù)最低,所以每次劃分就遍歷特征庫的每個(gè)特征維度和每個(gè)特征的值,然后通過該維度的該值進(jìn)行劃分,得到子集d1和d2,然后計(jì)算劃分后的gini指數(shù),如果該gini指數(shù)小于當(dāng)前最優(yōu)的gini指數(shù)則將該gini指數(shù)更新為當(dāng)前最優(yōu)gini指數(shù),該維度和該值更新為當(dāng)前最優(yōu)切分維度和切分值。進(jìn)一步地,所述步驟s31的構(gòu)建哈希索引,其使用e2lsh哈希索引方法;其中,e2lsh的哈希函數(shù)為:式中,v為被哈希的特征向量,a為一個(gè)由正態(tài)分布產(chǎn)生的一個(gè)與v維度相同的隨機(jī)向量,w為一個(gè)正實(shí)數(shù),b為一個(gè)由均勻分布unif(0,w)產(chǎn)生的一個(gè)實(shí)數(shù)。采用上述技術(shù)方案后,本發(fā)明至少具有如下有益效果:1、本發(fā)明采用卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)圖片提取的特征具有平移、旋轉(zhuǎn)和縮放不變性優(yōu)點(diǎn);2、本發(fā)明采用cbir技術(shù),加快了查找圖片的時(shí)間;3、本發(fā)明使用了樹與哈希結(jié)合索引方法,相對(duì)于普通哈希索引方法來說能夠在保證檢索時(shí)間效率相同的條件下提高檢索效果。附圖說明圖1是本發(fā)明基于卷積神經(jīng)網(wǎng)絡(luò)以及樹與哈希結(jié)合索引的圖像檢索方法的步驟流程圖;圖2是本實(shí)施例中根據(jù)原始圖片數(shù)據(jù)集而訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型用于特征提取的流程示意圖;圖3是圖2中訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型,然后去掉輸出層之后,取最后一層作為特征提取的結(jié)果的流程示意圖;圖4是本實(shí)施例中e2lsh索引的結(jié)構(gòu)示意圖;圖5是本實(shí)施例中e2lsh索引的哈希表結(jié)構(gòu)示意圖;圖6是本實(shí)施例中基于樹與哈希索引方法的結(jié)構(gòu)示意圖;圖7是本實(shí)施例中使用的圖像檢索方法整體過程(包括離線部分和在線過程)流程示意圖。具體實(shí)施方式需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互結(jié)合,下面結(jié)合附圖和具體實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)說明。實(shí)施例如圖1所示,本發(fā)明提供一種基于卷積神經(jīng)網(wǎng)絡(luò)以及樹與哈希結(jié)合索引的圖像檢索方法,主要步驟包括:采集圖像庫,并對(duì)圖像庫訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型;對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行特征提取得到特征庫;采用基于樹與哈希結(jié)合的索引方法對(duì)特征庫建立索引;根據(jù)索引內(nèi)的特征向量v進(jìn)行檢索,得到top-n結(jié)果。具體實(shí)施方式分成兩部分,一個(gè)是離線部分,另外一個(gè)是在線部分。離線部分主要是訓(xùn)練特征提取模型和構(gòu)建基于樹與哈希結(jié)合索引方法的索引。而在線部分則是正常的使用流程。如圖7所示,首先是離線部分。首先是根據(jù)圖片數(shù)據(jù)庫cifar10的訓(xùn)練集訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型(cifar10數(shù)據(jù)庫有50000張包括10個(gè)類別的圖片作為訓(xùn)練集,10000張圖片作為測試集),cifar10數(shù)據(jù)庫中的所有圖片大小均為3*32*32,其中3表示3個(gè)顏色通道,32*32為圖片的尺寸。然后開始訓(xùn)練m1模型,如圖7的(a)所示。其中卷積神經(jīng)網(wǎng)絡(luò)模型m1的具體參數(shù)如下表,m1模型的示意圖如圖2所示。層名稱參數(shù)輸出大小conv15*5,16,stride116*28*28conv23*3,32,stride132*26*26conv33*3,32,stride132*24*24conv43*3,64,stride264*11*11avgpool5*564*7*7fc13136fc21024fc310其中fc3為最終的輸出層,即對(duì)應(yīng)于數(shù)據(jù)集中的10個(gè)類別。訓(xùn)練好m1模型之后,需要將其改造成m2以適用于特征提取。其中m2的具體參數(shù)如下表:由上表可以看到,m2只是在m1的基礎(chǔ)上去掉了最后一層,m2模型的示意圖如圖3所示。得到m2之后,首先要對(duì)cifar10數(shù)據(jù)庫中的50000張訓(xùn)練集圖片重新做特征提取,該過程如圖7的(b)所示,得到每張訓(xùn)練集中的圖片對(duì)應(yīng)的一個(gè)1024維的特征向量,如下表所示:圖片序號(hào)特征向量p1[f1,f2,f3,...,f1024]p2[f1,f2,f3,...,f1024]......pn[f1,f2,f3,...,f1024]......p50000[f1,f2,f3,...,f1024]得到每張人臉對(duì)應(yīng)的特征向量之后,就可以開始構(gòu)造基于樹與哈希結(jié)合索引方法的索引了。即可以開始進(jìn)行圖7所示離線部分的(c)了。由于基于樹與哈希結(jié)合索引方法由兩部分構(gòu)成,所以這里首先介紹這種索引方法的整體結(jié)構(gòu)然后按照操作的順序分別對(duì)這兩部分進(jìn)行說明。首先是整體結(jié)構(gòu),如圖6所示,該索引是一個(gè)樹形結(jié)構(gòu),其中的非葉子節(jié)點(diǎn)中包括兩個(gè)部分,一個(gè)是切分維度和對(duì)應(yīng)的切分值,即對(duì)于特征庫按照該維度的切分值進(jìn)行切分,小于該值的劃分到左子樹中,否則劃分到右子樹中,另外一個(gè)就是兩個(gè)指向子節(jié)點(diǎn)的指針。然后每個(gè)葉子節(jié)點(diǎn)包含了經(jīng)過劃分后得到的特征庫子集。然后對(duì)于每個(gè)葉子節(jié)點(diǎn)中的每個(gè)特征庫子集分別建立基于哈希的索引。這樣一來在檢索的時(shí)候先對(duì)檢索的特征向量進(jìn)行深度優(yōu)先搜索,達(dá)到一個(gè)葉子節(jié)點(diǎn),然后再通過該葉子節(jié)點(diǎn)建立好的哈希索引進(jìn)行快速查找,由于在保證所有的葉子節(jié)點(diǎn)哈希后得到的“桶”的數(shù)據(jù)加起來與整個(gè)特征庫使用哈希索引得到的“桶”的個(gè)數(shù)相近而且對(duì)特征向量進(jìn)行深度優(yōu)先搜索的時(shí)間消耗可以忽略不計(jì),因此該方法相對(duì)于基于哈希的索引方法來說檢索時(shí)間效率相差不大,而且通過樹形結(jié)構(gòu)的劃分可以使得每個(gè)特征庫子集的純度更高,達(dá)到了檢索效果更好的目的。下面分別對(duì)樹的構(gòu)造和葉子節(jié)點(diǎn)中的哈希索引構(gòu)造分別進(jìn)行說明。首先是樹的構(gòu)造。樹的構(gòu)造同決策樹的構(gòu)造一樣,使用gini指數(shù)對(duì)特征庫進(jìn)行空間上的劃分。gini指數(shù)的定義如式1-1所示,其中d代表數(shù)據(jù)集,n為數(shù)據(jù)集中包括的數(shù)據(jù)類別個(gè)數(shù),pi表示第i個(gè)類別的數(shù)據(jù)總數(shù)占d中數(shù)據(jù)總數(shù)的比例。式1-2為數(shù)據(jù)集d經(jīng)過index這個(gè)維度的indexvalue這個(gè)值進(jìn)行劃分后的gini指數(shù),其中d1表示劃分后的左子集,d2表示劃分后的右子集。對(duì)于每一次劃分,需要選擇一個(gè)特征維度和一個(gè)該維度對(duì)應(yīng)的值,使得特征庫d經(jīng)過該維度的該值劃分后的gini指數(shù)最低。所以每次劃分就遍歷特征庫的每個(gè)特征維度和每個(gè)特征的值,然后通過該維度的該值進(jìn)行劃分,得到子集d1和d2,然后計(jì)算劃分后的gini指數(shù),如果該gini指數(shù)小于當(dāng)前最優(yōu)的gini指數(shù)則將該gini指數(shù)更新為當(dāng)前最優(yōu)gini指數(shù),該維度和該值更新為當(dāng)前最優(yōu)切分維度和切分值。這是一次劃分,然后劃分成左子集和右子集后,再分別根據(jù)左子集和右子集進(jìn)行這個(gè)劃分過程,直到達(dá)到了樹的深度限制或者葉子節(jié)點(diǎn)的數(shù)據(jù)個(gè)數(shù)小于某個(gè)值,在cifar10這個(gè)包含50000個(gè)數(shù)據(jù)的特征庫中,我們將樹的深度限制為4,葉子節(jié)點(diǎn)中的數(shù)據(jù)個(gè)數(shù)下限設(shè)為6000.上面是樹結(jié)構(gòu)的構(gòu)建。然后是分別對(duì)每個(gè)葉子節(jié)點(diǎn)中的特征庫子集構(gòu)建哈希索引。這里使用e2lsh哈希索引方法。首先說明一下e2lsh的哈希函數(shù),如式1-3所示,其中v為被哈希的特征向量,a為一個(gè)由正態(tài)分布產(chǎn)生的一個(gè)與v維度相同的隨機(jī)向量,w為一個(gè)正實(shí)數(shù),b為一個(gè)由均勻分布unif(0,w)產(chǎn)生的一個(gè)實(shí)數(shù)。e2lsh哈希索引的結(jié)構(gòu)如圖4所示,將數(shù)據(jù)映射到l個(gè)哈希表中,其中每個(gè)哈希表包含了所有的數(shù)據(jù),即數(shù)據(jù)被復(fù)制了l份。每個(gè)哈希表的結(jié)構(gòu)如圖5所示,其中tablesize為哈希表的大小,h1和h2為兩個(gè)正整數(shù)值,這兩個(gè)整數(shù)用作一個(gè)哈希“桶”的標(biāo)號(hào),h1和h2的計(jì)算公式如式1-4和1-5所示,其中(y1,y2,……,yk)為特征向量v經(jīng)過k個(gè)哈希函數(shù)哈希后得到的k維向量,prime為一個(gè)素?cái)?shù),tablesize為一個(gè)正整數(shù),代表哈希表的大小,r’和r”為兩個(gè)由均勻分布unif(0,prime-1)產(chǎn)生的隨機(jī)k維整數(shù)向量。e2lsh索引構(gòu)造過程的偽代碼如下:算法:e2lsh構(gòu)造過程輸入:特征庫dataset,lsh參數(shù)k,l,tablesize和prime輸出:dataset對(duì)應(yīng)的e2lsh結(jié)構(gòu)1.定義長度為l的哈希表數(shù)組hashtablelist2.執(zhí)行以下for循環(huán)fori=1tol(1)隨機(jī)生成k個(gè)e2lsh哈希函數(shù),以及長度為k的整數(shù)向量r’和r”(2)通過(1)中生成的k個(gè)哈希函數(shù),將dataset中的每個(gè)樣本進(jìn)行哈希映射,得到k維向量(3)將lsh參數(shù)prime、tablesize、r’、r”和(2)中得到的k維向量作為參數(shù),根據(jù)h1和h2的計(jì)算公式分別計(jì)算每個(gè)樣本對(duì)應(yīng)的h1和h2值,以h1和h2值作為一個(gè)“桶”的編號(hào),將特征向量放入對(duì)應(yīng)的“桶”中。(4)將每個(gè)樣本對(duì)應(yīng)的h1和h2值,以及(1)中生成的k個(gè)哈希函數(shù)和r’、r”、prime以及tablesize整合成一個(gè)哈希表結(jié)構(gòu)hashtable,并將hashtable加入hashtablelist中。3.返回hashtableliste2lsh檢索過程的偽代碼如下:算法:e2lsh檢索過程輸入:檢索的向量v,e2lsh結(jié)構(gòu)hashtablelist,需要返回的結(jié)果個(gè)數(shù)n輸出:top-n結(jié)果1.定義一個(gè)候選集candidateset2.執(zhí)行以下for循環(huán)fori=1tol(1)根據(jù)hashtablelist[i]中的k個(gè)e2lsh哈希函數(shù),對(duì)v進(jìn)行哈希映射得到一個(gè)k維整數(shù)向量(2)將hashtablelist[i]中的參數(shù)prime、tablesize、r’、r”和(1)中得到的k維向量,通過h1和h2的計(jì)算公式計(jì)算向量v對(duì)應(yīng)的h1和h2值(3)根據(jù)(2)中得到的h1和h2,找到hashtablelist[i]中對(duì)應(yīng)的“桶”,對(duì)于“桶”中的特征向量,若還未出現(xiàn)在candidateset中,則將其加入candidateset3.對(duì)于candidateset中的所有特征向量,計(jì)算其與向量v的歐式距離,并根據(jù)距離按照升序排序,返回前n個(gè)結(jié)果。在本例中,e2lsh的參數(shù)如下表所示:參數(shù)參數(shù)值l5k64prime23tablesize19以上是離線部分,接下來是在線部分。如圖7所示,對(duì)于cifar10的10000張測試集中的每張圖片,以其作為輸入,首先通過m2模型進(jìn)行特征提取得到特征向量v,然后通過離線部分構(gòu)建好的基于樹與哈希結(jié)合索引方法的索引對(duì)特征向量v進(jìn)行檢索,即經(jīng)過深度優(yōu)先搜索到達(dá)葉子節(jié)點(diǎn)后,以n為參數(shù)調(diào)用葉子節(jié)點(diǎn)中的e2lsh索引檢索過程,得到top-n結(jié)果。盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以理解的是,在不脫離本發(fā)明的原理和精神的情況下可以對(duì)這些實(shí)施例進(jìn)行多種等效的變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同范圍限定。當(dāng)前第1頁12當(dāng)前第1頁12