本發(fā)明屬于圖像哈希領(lǐng)域,具體涉及一種精確地將圖片哈希的方法,尤其是在對于某類圖片無訓練樣本的情況下,仍能夠?qū)⒃擃悎D片進行合理編碼的方法。
背景技術(shù):
隨著越來越多的多媒體數(shù)據(jù)的產(chǎn)生,哈希成為了應(yīng)對大規(guī)模檢索的一種強大的工具,其可以極大程度的縮短在幾十億數(shù)據(jù)中查找所花費的時間。由于計算機極為擅長異或運算,使用哈希碼進行檢索可以應(yīng)對大數(shù)據(jù)時代所帶來的查找需求。
數(shù)據(jù)庫哈希是一個極為重要的工作,對于眾多的領(lǐng)域都有著極為重要的意義。因此,哈希在過去的很長一段時間得到了重要的關(guān)注,提出了很多重要的算法。如數(shù)據(jù)無關(guān)哈希類的localsensitivehashing(lsh),數(shù)據(jù)相關(guān)哈希類的iterativequantization(itq),isotropichashing以及監(jiān)督哈希類的supervisedhashingwithkernels(ksh),superviseddiscretehashing(sdh)。尤其是監(jiān)督哈希類,通過挖掘語義標簽,深入的探索了數(shù)據(jù)庫中各個樣本之間的內(nèi)在關(guān)系,極大程度地提高了哈希的精確度。
然而,在大數(shù)據(jù)時代,隨著越來越多的多媒體數(shù)據(jù)的生成,要求對于每一個類別都擁有訓練數(shù)據(jù)是不現(xiàn)實的。而傳統(tǒng)的哈希方法更多是針對靜態(tài)數(shù)據(jù)庫,面對指數(shù)增加的數(shù)據(jù)庫能力有限。因此傳統(tǒng)的監(jiān)督哈希方法不適用于膨脹的數(shù)據(jù)庫。零樣本學習(zeroshotlearning)是一種有效解決樣本缺乏的方法。通過學習如何從未觀察到的樣本特征空間映射到語義空間,從而避免對未觀測到的樣本重新建模。然而,傳統(tǒng)的零樣本學習常常有很多限制,如:認為的屬性標注歧義、不能應(yīng)對數(shù)據(jù)集轉(zhuǎn)移。因此,最近幾年,隨著自然語言處理領(lǐng)域的發(fā)展,零樣本學習被給予了新的解決方案。如,通過挖掘巨大的語料庫如wikipedia,監(jiān)督標簽可以被映射為標簽向量,而這種標簽向量通常被賦予了高于傳統(tǒng)標簽的語義,從而引導模型對未觀察到的空間進行建模。著名的方法包括socher用標簽向量進行監(jiān)督,引導對于未觀測到的數(shù)據(jù)進行分類,具體見文獻“r.socher,m.ganjoo,c.d.manning,anda.ng.zero-shotlearningthroughcross-modaltransfer.innips,2013.”。frome在文獻“a.frome,g.s.corrado,j.shlens,s.bengio,j.dean,t.mikolov,etal.devise:adeepvisual-semanticembeddingmodel.innips,2013.”中也采用了相似的策略,但是使用了不同的語言模型并擴展到了更多的類別。
傳統(tǒng)的監(jiān)督哈希的訓練模式是,針對某一個特定類別,采用1/0的標簽進行監(jiān)督,引導訓練。這樣的1/0標簽相互之間的相關(guān)性為0,也即對于監(jiān)督的標簽來說,類與類之間的差別是固定的。這樣做會導致類別之間的關(guān)聯(lián)性得不到體現(xiàn),從而使得訓練出來的哈希模型只能對處于訓練集中的類別進行有效的編碼,而對于一個從未見過的類別無法可靠地編碼,也即無法可靠地對于未見過的類別進行檢索。
技術(shù)實現(xiàn)要素:
為了克服現(xiàn)有的監(jiān)督哈希算法對于訓練數(shù)據(jù)的苛刻要求,對于沒有訓練數(shù)據(jù)的類哈希能力較弱的缺點,本發(fā)明提出了一種新的監(jiān)督哈希算法,即零樣本哈希(zeroshothashing)。本發(fā)明對訓練樣本沒有嚴格要求,應(yīng)用范圍廣,特別是在大型數(shù)據(jù)庫里,當類別較多且無法對每一個類別找出訓練樣本時,本發(fā)明可以極大程度地提高對于該類別的圖片檢索準確率。
本發(fā)明利用現(xiàn)有自然語言處理(naturallanguageprocessing)模型對已有訓練數(shù)據(jù)的標簽進行建模,形成一個標簽空間。通過新的標簽空間潛在的保存標簽之間的關(guān)系(即各標簽在標簽空間的空間位置距離關(guān)系),訓練從圖片特征空間到標簽空間的映射。在此基礎(chǔ)上,將此映射關(guān)系反映在哈希碼上。
首先將圖片表示為圖片原始特征,即圖片特征空間,再將圖片表征成為了機器學習算法可以處理的向量(標簽向量),即將圖片原始標簽通過現(xiàn)有的自然語言處理模型(基于大型語料庫訓練得到)表征為標簽空間(也稱語料空間),在標簽空間中,語義相近的詞匯會有更小的空間位置距離,而語義相去的標簽的空間位置距離則會較遠。對圖片原始特征、標簽向量進行哈希函數(shù)的學習,從而既可以極大程度的保留已知類別的哈希碼學習能力,同時又可以通過自然語言處理后所形成的標簽空間的內(nèi)在關(guān)系(空間位置距離關(guān)系),隱式地傳遞未知類別的監(jiān)督信息,從而對未知類別的數(shù)據(jù)進行很好的哈希。
在本發(fā)明的哈希算法中,通過離散編碼生成,語義整合,原始空間保留綜合學習得到對應(yīng)的哈希函數(shù),確保了在無樣本的類別中擁有良好的表現(xiàn)。
本發(fā)明的基于監(jiān)督轉(zhuǎn)移的零樣本哈希圖片檢索方法總體包括三個部分:圖片與圖片標簽的預(yù)處理、哈希函數(shù)訓練和哈希碼生成與評估。其中,圖片與圖片標簽的預(yù)處理主要包括對于訓練集中的圖片特征空間的提取以及運用自然語言處理模型對標簽進行語料空間生成;哈希函數(shù)訓練主要包括采用本發(fā)明所提出的哈希算法,學習哈希函數(shù);哈希碼生成則主要為基于學習到的哈希函數(shù),對所有的圖片進行編碼,得到圖片的哈希碼。當進行圖片檢索處理時,通過哈希碼比對,完成圖片的檢索處理。各部分具體實現(xiàn)步驟分別如下:
步驟一、圖片與圖片標簽的預(yù)處理:
處理對象:訓練樣本、待檢索對象(即測試樣本),對處理對象基于現(xiàn)有的語料模型,完成圖片特征向量到標簽向量的映射。
步驟二、哈希函數(shù)訓練:
為了在較低復(fù)雜度的情況下學習出較好的哈希函數(shù),本發(fā)明采用如下所示的目標方程:
上式中,x表示訓練樣本集的圖片特征向量集,y表示訓練樣本集的標簽向量集,即x=[x1,x2,…,xn],y=[y1,y2,…,yn],xi、yi表示第i(i=1,2,…,n)個個訓練樣本的圖片特征向量、標簽向量;
r表示語義整合矩陣;w表示從哈希碼到監(jiān)督的標簽向量的映射關(guān)系矩陣,w為l×c維的實數(shù)域矩陣,字母“l(fā)”表示哈希碼的長度,c表示類別數(shù)目;b=[b1,b2,…,bn]∈{-1,1}l×n表示所有訓練樣本哈希碼構(gòu)成的哈希碼矩陣,bi∈{-1,1}l×n表示第i個樣本的哈希碼,n表示樣本數(shù)量,ic是c×c的單位矩陣;
f(x)=ptφ(x)(2)
其中f(x)=[f(x1),f(x2),…,f(xn)],鑒于核方法在哈希領(lǐng)域的成功應(yīng)用,處理線性不可分的問題,定義:
其中x表示任意訓練樣本的圖片特征向量,
為了進一步提高哈希函數(shù)的準確度,通過下述三個子方法實現(xiàn):
1)原始特征空間(圖片特征空間)保留:(1)式中最后一項
其中
通過相似度矩陣s保證了原始特征空間相近的圖片的相似度大,從而有效地挖掘了原始特征空間的相似關(guān)系。
2)語義整合:(1)式中的第一項
3)離散哈希碼生成:在求解(1)式給出的目標方程時,采用離散求解哈希碼的方式,降低了量化誤差。
由于(1)式是一個非凸并且np-hard(不可解)的問題,本發(fā)明采用逐步優(yōu)化各個參數(shù)的策略。將對目標方程的求解分解為4個步驟:步驟p、步驟b、步驟r、步驟w。通過不停迭代這四個步驟可以使得目標方程收斂,下面分別說明這四個步驟的優(yōu)化方式。
步驟p:固定(1)中除了p以外的所有變量,改寫(1)可以得到:
其中,i表示單位矩陣,拉普拉斯矩陣l=d-s,d是一個對角矩陣,其第i個對角元為
步驟b:固定(1)中除了b以外的所有變量,改寫(1)可以得到:
其中tr(·)表示矩陣跡,h=wtry+αptφ(x)。將b表示為
更進一步,定義:
其中,
步驟r:固定(1)中除了r以外的參數(shù),(1)式可以轉(zhuǎn)化化為
s.t.rtr=ic
對上式進行求解可以得到最優(yōu)的r,例如采用文獻“z.wenandw.yin.afeasiblemethodforoptimizationwithorthogonalityconstraints.mathematicalprogramming,2013”中的優(yōu)化方法對r進行優(yōu)化處理。
步驟w:固定(1)中除了w以外的其他參數(shù),可以得到:
w=(bbt+λil)-1bytr
其中,il表示l×l的單位矩陣,當參數(shù)p、b、r、w的值無變化時,即最近兩次迭代得到的差值滿足預(yù)設(shè)預(yù)知時,停止迭代,輸出當前的p、b、r、w,再根據(jù)p、b、r、w的最后一次迭代值,得到哈希函數(shù)f(·),完成哈希函數(shù)的訓練。
步驟三、哈希碼生成:
基于學習到的哈希函數(shù)f(·)對所有的圖片進行哈希編碼,生成圖像的哈希碼。
即基于得到的p的值,根據(jù)對應(yīng)每個圖片特征向量的φ(x),根據(jù)公式f(x)=ptφ(x)生成當前圖片的哈希碼。
步驟四、在進行圖片檢索時,基于圖像的哈希碼進行比對,得到檢索結(jié)果。例如基于哈希碼,在檢索范圍中查找出目標圖像的k個最鄰近圖像進行返回。
綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:可以在沒有某一類的訓練數(shù)據(jù)的情況下,學習出一個哈希函數(shù),進而對對應(yīng)的類進行有效的哈希,從而實現(xiàn)零樣本哈希。本發(fā)明能應(yīng)用于大型數(shù)據(jù)庫中,當訓練樣本相對于客觀世界缺乏時,有效地提高對于微觀察到的類別的哈希效果。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合實施方式,對本發(fā)明作進一步地詳細描述。
本發(fā)明的圖片檢索包括下述步驟:
步驟1:對訓練樣本進行圖片與圖片標簽的預(yù)處理,得到訓練樣本的圖片特征向量x、標簽向量y:
采用文獻“r.socher,m.ganjoo,c.d.manning,anda.ng.zero-shotlearningthroughcross-modaltransfer.innips,2013.”給出的料模型,運用wekipedia上的免費語料庫(包含近5億詞匯)進行訓練,挖掘出合理的詞匯表示方法,將標簽通過預(yù)先訓練好的模型,表示成標簽向量y。
在提取圖片原始特征時,可采用卷積神經(jīng)網(wǎng)絡(luò)的激勵作為圖片的特征,將圖片輸入已訓練好的卷積神經(jīng)網(wǎng)絡(luò),并且在第7層提取網(wǎng)絡(luò)的輸出,作為圖片的特征,得到各訓練樣本的圖片特征向量x。本具體實施方式中采用的網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)為alexnet。
步驟2:哈希函數(shù)訓練:
輸入訓練樣本的圖片特征向量x、對應(yīng)的標簽向量y;
步驟201:隨機初始化語義整合矩陣r、哈希碼矩陣b、映射關(guān)系矩陣w、哈希矩陣p;
步驟202:從訓練樣本的圖片特征向量x中隨機選擇m個核,得到{ai},其中m對應(yīng)標簽向量的維數(shù);根據(jù)公式(3)計算φ(x);
步驟204:根據(jù)l=d-s構(gòu)建拉普拉斯矩陣l;
步驟205:迭代方式對公式(1)所示的目標方程進行離散求解,迭代對p、b、r、w進行最優(yōu)求解,直到滿足迭代收斂為止,優(yōu)選的迭代收斂條件為:最近兩次的求解結(jié)果的變化不超過預(yù)設(shè)閾值。
步驟3:基于步驟2得到的哈希矩陣p(最后一次迭代優(yōu)化求解的對應(yīng)值),根據(jù)公式f(x)=ptφ(x)生成圖片的哈希碼;
步驟4:輸入待檢索對象的圖片it,并提取得到圖片特征向量xt、標簽向量yt;
采用步驟202相同的方式計算當前圖片的φ(xt),再基于步驟2得到的哈希矩陣p,通過公式f(xt)=ptφ(xt)生成當前圖片it的哈希碼。
即
基于哈希碼,在檢索范圍中查找出目標圖像的k(預(yù)設(shè)值)個最鄰近圖像進行檢索結(jié)果返回。