本發(fā)明涉及圖像識別技術(shù)領(lǐng)域,具體涉及一種基于詞匯樹檢索與相似度驗證的云端圖像識別方法。
背景技術(shù):
實時圖像搜索是一種可以支持用戶自定義的,超大規(guī)模的圖像數(shù)據(jù)庫的實時圖像識別技術(shù)。它可以實現(xiàn)對移動端設(shè)備的圖像輸入內(nèi)容進(jìn)行實時的識別。整個識別過程是在云端進(jìn)行的,這樣可以使用戶無需將龐大的圖像數(shù)據(jù)庫下載到本地,并且也可以充分地利用云端計算資源對數(shù)據(jù)庫進(jìn)行高速的檢索。
然而,目前基于云端的實時圖像識別技術(shù)其通過上傳本地圖片到服務(wù)器,服務(wù)器將帶識別的圖片與存儲的圖片逐一進(jìn)行比較,其存在以下缺陷:在無線網(wǎng)絡(luò)較差的情況下,用戶實時上傳圖像的速度會受到很大影響。
技術(shù)實現(xiàn)要素:
本發(fā)明為了解決上述技術(shù)問題提供一種基于詞匯樹檢索與相似度驗證的云端圖像識別方法。
本發(fā)明通過下述技術(shù)方案實現(xiàn):
基于詞匯樹檢索與相似度驗證的云端圖像識別方法,包括以下步驟,
圖像獲取步驟:獲取目標(biāo)圖像,并對目標(biāo)圖像使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子,生成目標(biāo)圖像的ORB描述子序列;
圖像上傳步驟:將該ORB描述子序列上傳到基于描述子樣本的云端圖像數(shù)據(jù)庫中;
圖像識別步驟:云端圖像數(shù)據(jù)庫利用基于詞匯樹的檢索算法對圖像進(jìn)行匹配識別并返回匹配度靠前的N張候選圖像,其中N為大于1的自然數(shù);
相似度驗證步驟:在云端圖像數(shù)據(jù)庫中找到候選圖像,得到目標(biāo)圖像和候選圖像的128維向量,分別計算目標(biāo)圖像與各候選圖像之間的距離,并找出距離最短的候選圖像。
本發(fā)明通過提取目標(biāo)圖像的ORB特征點以生成ORB描述子序列,并將ORB描述子序列上傳至基于描述子樣本的云端圖像數(shù)據(jù)庫中進(jìn)行檢索匹配,相比于上傳目標(biāo)圖像的方式,描述子的數(shù)據(jù)量小,減小對網(wǎng)絡(luò)的要求,即網(wǎng)絡(luò)較差對識別的速度影響小。利用詞匯樹檢索算法找出匹配度靠前的N張圖像后利用目標(biāo)圖像和候選圖像之間的距離進(jìn)行相似性驗證,該相似性驗證為小規(guī)模的,即可保證快速檢索,也極大的提高了檢索的精度。
所述云端圖像數(shù)據(jù)庫的生成方法包括以下步驟:
描述子生成步驟:收集圖片,提取每張圖片的ORB特征點,并對每個ORB特征點生成相應(yīng)的描述子以得到描述子樣本;
樹狀模型生成步驟:根據(jù)描述子樣本生成圖像數(shù)據(jù)庫的樹狀模型;
數(shù)據(jù)庫生成步驟:向樹狀模型中添加圖片,建立樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。
現(xiàn)有的圖像匹配是圖像和圖像之間的匹配,檢索的時間的增加隨著圖像的增加線性增長。一個特征描述子到數(shù)據(jù)庫里匹配所有特征描述子,數(shù)據(jù)庫里的描述子越多,匹配的時間就越長,因為暴力匹配是一一匹配,最后尋找距離最短的匹配組。在保證一定準(zhǔn)確度的前提下,其檢索速度和廣度存在矛盾,這兩點都與云端圖像數(shù)據(jù)庫的大小密切相關(guān)。而采用上述方法,由于數(shù)據(jù)庫中的描述子已經(jīng)進(jìn)行樹狀分類,在進(jìn)行匹配的時候,待匹配的描述子會尋找與其最相似的分支,而不需要遍歷真?zhèn)€數(shù)據(jù)庫,即樹狀檢索結(jié)構(gòu)可以讓待匹配的特征描述子不用一一匹配所有的描述子,檢索時間主要跟經(jīng)過的節(jié)點數(shù)有關(guān)系,數(shù)據(jù)庫中的描述子多不代表檢索經(jīng)過的節(jié)點數(shù)越多。所以檢索時間不是按數(shù)據(jù)庫的大小線性增加,而是對數(shù)增長,解決檢索廣度與速度之間的矛盾。而對于新加入圖像描述子會加入相應(yīng)的分支,而不是單純的增加,因此在廣度上也能很好的解決大數(shù)據(jù)庫的檢索情況。
所述描述子生成步驟具體為:收集圖片,分別對每張圖片進(jìn)行縮放以建立一個圖像金字塔,對圖片的各個尺度使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子。
所述樹狀模型生成步驟為:利用描述子之間的歐式距離作為判據(jù),對描述子樣本用K-means算法做聚合分類,生成圖像數(shù)據(jù)庫的樹狀模型。
所述樹狀模型生成步驟具體為:
A1、定義一個樹狀結(jié)構(gòu),其最大層數(shù)為L,每層最大子節(jié)點數(shù)為K;
A2、對描述子樣本用K-means算法做聚合分類,得到子節(jié)點分類結(jié)果,將每個子節(jié)點內(nèi)所有描述子的平均描述子作為該子節(jié)點的描述子;
A3、若該子節(jié)點內(nèi)描述子樣本的數(shù)量大于K的兩倍,則對該子節(jié)點內(nèi)的描述子樣本作進(jìn)一步的K-means分類,重復(fù)該步驟,直至樹狀結(jié)構(gòu)的最大層數(shù)小于等于L或者沒有子節(jié)點的描述子樣本數(shù)量大于K的兩倍;
A4、對所有的子節(jié)點依次排序標(biāo)號,生成圖像數(shù)據(jù)庫的樹狀模型。
所述數(shù)據(jù)庫生成步驟為:
B1、給圖片一個唯一的編號;
B2、對該圖片進(jìn)行縮放以建立一個圖像金字塔,對圖片的各個尺度使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子;
B3、將該圖片的所有描述子利用樹狀模型進(jìn)行分類,并將每個描述子的分類結(jié)果關(guān)聯(lián)在其分配到的子節(jié)點上;
B3、對每一張圖片做B1至B3的步驟,得到具有樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。
獲得目標(biāo)圖像和候選圖像的128維向量在相似度驗證系統(tǒng)中進(jìn)行。
所述相似度驗證系統(tǒng)生成方法包括以下步驟,
C1、將圖像庫中的圖像輸入神經(jīng)網(wǎng)絡(luò)模型,得到每張圖對應(yīng)的1024維的經(jīng)過歸一化的描述子;
C2、將圖像庫中的圖像進(jìn)行三字節(jié)的學(xué)習(xí),建立正樣本與正樣本之間的緊密距離、正樣本與負(fù)樣本之間的疏遠(yuǎn)距離。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下的優(yōu)點和有益效果:
1、本發(fā)明得圖像數(shù)據(jù)庫基于描述子樣本構(gòu)建,在識別目標(biāo)圖像時,通過對目標(biāo)圖像描述子的提取實現(xiàn)檢索匹配,相比于目標(biāo)圖像,描述子的數(shù)據(jù)量小,網(wǎng)絡(luò)較差對識別的速度影響小。
2、本發(fā)明利用詞匯樹檢索算法找出匹配度靠前的N張圖像后利用目標(biāo)圖像和候選圖像之間的距離進(jìn)行相似性驗證,該相似性驗證為小規(guī)模的,保證了快速檢索的同時極大提高檢索的精度。
3、本發(fā)明的方法基于樹狀檢索結(jié)構(gòu),其可讓待匹配的特征描述子不用一一匹配所有的描述子,檢索時間主要跟經(jīng)過的節(jié)點數(shù)有關(guān)系,隨著圖片數(shù)量的增加,其檢索時間不是按數(shù)據(jù)庫的大小線性增加,而是對數(shù)增長,大大提高檢索速度。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下面結(jié)合實施例,對本發(fā)明作進(jìn)一步的詳細(xì)說明,本發(fā)明的示意性實施方式及其說明僅用于解釋本發(fā)明,并不作為對本發(fā)明的限定。
實施例1
本實施例公開一種基于描述子樣本的云端圖像數(shù)據(jù)庫的生成方法,包括以下步驟:
描述子生成步驟:收集圖片,提取每張圖片的ORB特征點,并對每個ORB特征點生成相應(yīng)的描述子以得到描述子樣本;
樹狀模型生成步驟:根據(jù)描述子樣本生成圖像數(shù)據(jù)庫的樹狀模型;
數(shù)據(jù)庫生成步驟:向樹狀模型中添加圖片,建立樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。
具體的:
在描述子生成步驟中,收集的圖片數(shù)量要多且來自各種場景,一般需要幾萬張,其存放在一個文件夾內(nèi),常用的圖片格式均可,譬如JPG、JPEG、JPE、JFIF、BMP;分別對每張圖片進(jìn)行一定的縮放比例以建立一個圖像金字塔,對圖片的各個尺度使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子。對收集到的每個圖片均做該步驟的處理,ORB特征點的描述子是一個128位的二進(jìn)制序列。
在樹狀模型生成步驟中,利用描述子之間的歐式距離作為判據(jù),對描述子樣本用K-means算法做聚合分類,生成圖像數(shù)據(jù)庫的樹狀模型。樹狀模型生成后一般不做改動。較為詳細(xì)的,可采用下述步驟方法:
A1、定義一個樹狀結(jié)構(gòu),其最大層數(shù)為L,每層最大子節(jié)點數(shù)為K;
A2、對描述子樣本用K-means算法做聚合分類,得到子節(jié)點分類結(jié)果,將每個子節(jié)點內(nèi)所有描述子的平均描述子作為該子節(jié)點的描述子;
A3、若該子節(jié)點內(nèi)描述子樣本的數(shù)量大于K的兩倍,則對該子節(jié)點內(nèi)的描述子樣本作進(jìn)一步的K-means分類,重復(fù)該步驟,直至樹狀結(jié)構(gòu)的最大層數(shù)小于等于L或者沒有子節(jié)點的描述子樣本數(shù)量大于K的兩倍;
A4、在所有的K-means分類結(jié)束后,對所有的子節(jié)點從左到右依次排序標(biāo)號,生成圖像數(shù)據(jù)庫的樹狀模型。
向樹狀模型中添加所有需要的圖像數(shù)據(jù)以形成圖像數(shù)據(jù)庫,將需要添加到樹狀模型中的圖片存放在同一文件夾里,具體的可采用下述步驟:
B1、向樹狀模型中添加一張圖片的時,給該圖片一個唯一的編號;
B2、對該圖片進(jìn)行縮放以建立一個圖像金字塔,對圖片的各個尺度使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子,這樣就獲得了可以代表這張圖片特征的一個ORB描述子序列;
B3、將該圖片的所有描述子利用樹狀模型進(jìn)行分類,并將每個描述子的分類結(jié)果關(guān)聯(lián)在其分配到的子節(jié)點上;分類完成后,樹狀模型的每一個子節(jié)點上就會記錄該編號的圖片所具有的描述子在各節(jié)點分別出現(xiàn)了幾次,而該編號圖片也會存儲其描述子在那些序號的子節(jié)點上分別出現(xiàn)了多少次;
B3、對每一張圖片做B1至B3的步驟,得到具有樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。使用者可根據(jù)自身的需求,隨時任意的向數(shù)據(jù)庫中增加或刪除圖片。
按上述步驟方法生成了云端圖像數(shù)據(jù)庫,用戶需要對圖片進(jìn)行識別時,可采用下列方法。
實施例2
一種基于詞匯樹檢索與相似度驗證的云端圖像識別方法,包括以下步驟,
圖像獲取步驟:獲取目標(biāo)圖像,并對目標(biāo)圖像使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子,生成目標(biāo)圖像的ORB描述子序列;
圖像上傳步驟:將該ORB描述子序列上傳到基于描述子樣本的云端圖像數(shù)據(jù)庫中;
圖像識別步驟:云端圖像數(shù)據(jù)庫利用基于詞匯樹的檢索算法對圖像進(jìn)行匹配識別并返回匹配度靠前的N張候選圖像,其中N為大于1的自然數(shù);
相似度驗證步驟:在云端圖像數(shù)據(jù)庫中找到候選圖像,得到目標(biāo)圖像和候選圖像的128維向量,分別計算目標(biāo)圖像與各候選圖像之間的距離,并找出距離最短的候選圖像。
具體的,用戶在使用實時圖像識別系統(tǒng)時,用戶的移動端設(shè)備每采集到一幀目標(biāo)圖像,會先對采集到的目標(biāo)圖像使用ORB算法提取所有ORB特征點,并對每一個ORB特征點生成相應(yīng)的描述子,生成該目標(biāo)圖像的ORB描述子序列,并將此序列發(fā)送到云端。與采集到的目標(biāo)圖像相比,ORB描述子序列的數(shù)據(jù)量會小非常多。
云端收到ORB描述子序列后,即開始利用檢索詞匯樹的檢索算法,在已生成的樹形圖像數(shù)據(jù)庫中尋找該圖片匹配得分靠前的N張候選圖片,譬如10張。每一次檢索,可以生成一個可自定義長度的按照匹配得分高低排列匹配結(jié)果編號序列,即利用詞匯樹圖像數(shù)據(jù)庫檢索快捷的特性,迅速地找出與目標(biāo)圖片類似的若干張候選圖片。
根據(jù)候選圖片編號,從圖片數(shù)據(jù)庫中找到這些圖片,并將候選圖像和目標(biāo)圖像輸入相似度驗證系統(tǒng)中分別獲得各圖像對應(yīng)的128維向量,根據(jù)128維向量計算目標(biāo)圖像與各候選圖片之間的距離,找到距離最短的向量,其對應(yīng)的圖像即為最匹配的圖像,將其反饋給用戶。通過相似度驗證步驟可以彌補在詞匯樹結(jié)構(gòu)大小有限的情況下檢索精度的不足,并且,由于已經(jīng)通過檢索詞匯樹將最佳匹配可能存在的范圍縮小到若干張候選圖片中,所以對剩余的最佳匹配候選圖片進(jìn)行相似度驗證將是十分迅速的。
實施例3
在實施例2中,獲得目標(biāo)圖像和候選圖像的128維向量在相似度驗證系統(tǒng)中進(jìn)行。本實施例對相似度驗證系統(tǒng)的生成方法進(jìn)行細(xì)化。
本實施例基于網(wǎng)絡(luò)上經(jīng)典的ImageNet圖像庫與神經(jīng)網(wǎng)絡(luò)模型,其在嵌入式系統(tǒng)中進(jìn)行。當(dāng)然,也可利用其它圖像庫。其包括下列步驟,
C1、將圖像庫中的圖像輸入神經(jīng)網(wǎng)絡(luò)模型,得到每張圖對應(yīng)的1024維的經(jīng)過歸一化的描述子;
C2、將圖像庫中的圖像進(jìn)行三字節(jié)的學(xué)習(xí),即每個三字節(jié)中包含兩個正樣本,一個負(fù)樣本,以建立正樣本與正樣本之間的緊密距離、正樣本與負(fù)樣本之間的疏遠(yuǎn)距離。
此時,將任意一張圖像輸入嵌入式系統(tǒng),即會輸出其相應(yīng)的128維向量。
以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。