分布式海量指紋識(shí)別方法
【專利摘要】本發(fā)明公開了一種分布式海量指紋識(shí)別方法,解決現(xiàn)有技術(shù)無法快速對(duì)海量指紋進(jìn)行實(shí)時(shí)查詢的問題。本發(fā)明的識(shí)別方法主要是先構(gòu)建分布式索引,然后再通過分布式檢索的形式檢索待檢索的指紋,具體則是將索引的構(gòu)造和檢索放到多個(gè)計(jì)算節(jié)點(diǎn)上并行執(zhí)行,提高了索引構(gòu)造和檢索的效率,同時(shí)解決了高維描述符表示下索引計(jì)算開銷大的問題。
【專利說明】分布式海量指紋識(shí)別方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及指紋識(shí)別,具體涉及一種分布式海量指紋識(shí)別方法。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)圖像處理和模式識(shí)別等相關(guān)技術(shù)的不斷發(fā)展,生物識(shí)別技術(shù)得到了越 來越廣泛的應(yīng)用。所有可用于識(shí)別的生物特征,比如指紋、聲音、視網(wǎng)膜、DNA、人臉等,指紋 是最被廣泛應(yīng)用的生物特征,據(jù)統(tǒng)計(jì)占到生物識(shí)別市場(chǎng)份額的50%以上。指紋具有唯一性、 終生不變性、便于采用及可靠性高等優(yōu)點(diǎn),已經(jīng)成為個(gè)人身份認(rèn)證最有效的手段之一,是具 有法律效力的生物特征 指紋識(shí)別系統(tǒng)的用途主要有兩類:驗(yàn)證(Verification)和辨識(shí)(Identification)。 驗(yàn)證就是指通過把一個(gè)現(xiàn)場(chǎng)采集到的指紋與一個(gè)已經(jīng)登記的指紋進(jìn)行一對(duì)一的對(duì)比 (one-to-one matching),來確認(rèn)身份的過程。而辨識(shí)則指的是把現(xiàn)場(chǎng)采集到的指紋同 指紋數(shù)據(jù)庫(kù)中的指紋逐一對(duì)比,從中找出與現(xiàn)場(chǎng)指紋相匹配的指紋的過程(〇ne-t〇-many matching)。驗(yàn)證和辨識(shí)在匹配算法和系統(tǒng)設(shè)計(jì)上各具技術(shù)特點(diǎn)。例如驗(yàn)證系統(tǒng)一般只考 慮對(duì)完整的指紋進(jìn)行比對(duì),而辨識(shí)系統(tǒng)還需要考慮殘紋的比對(duì);驗(yàn)證系統(tǒng)對(duì)比對(duì)算法的速 度要求不如辨識(shí)系統(tǒng)高,但更強(qiáng)調(diào)易用性;另外在辨識(shí)系統(tǒng)中,一般要使用分類計(jì)數(shù)來加快 查詢的速度。
[0003] 目前,指紋識(shí)別技術(shù)已經(jīng)日趨成熟,優(yōu)秀的指紋識(shí)別算法不斷地被提出,但是絕大 多數(shù)都是只關(guān)注了如何提高匹配的準(zhǔn)確率,而忽略了匹配的時(shí)間開銷,換句話說,它們并沒 有在海量數(shù)據(jù)下考慮問題。這樣就導(dǎo)致了海量指紋數(shù)據(jù)下的識(shí)別是一個(gè)極具挑戰(zhàn)性的課 題,存在的問題有: (1) 在算法上需要一種能夠?qū)χ讣y數(shù)據(jù)分類或者建立索引的解決方法,從而能夠加快 指紋的識(shí)別; (2) 單節(jié)點(diǎn)的計(jì)算能力有限,不滿足海量數(shù)據(jù)下實(shí)時(shí)查詢的需求; (3) 如果采用分布式實(shí)現(xiàn),怎么樣才能充分的使整個(gè)指紋識(shí)別過程并行,從而能夠快速 的返回結(jié)果。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于提供一種分布式海量指紋識(shí)別方法,解決現(xiàn)有技術(shù)無法快速對(duì) 海量指紋進(jìn)行實(shí)時(shí)查詢的問題。
[0005] 為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下: 分布式海量指紋識(shí)別方法,包括分布式索引構(gòu)造步驟: A、 管理端將訓(xùn)練圖像集經(jīng)上傳節(jié)點(diǎn)上傳到云存儲(chǔ)系統(tǒng)中,上傳完成后向主節(jié)點(diǎn)發(fā)起索 引構(gòu)造任務(wù)(此時(shí)指紋圖像已經(jīng)散列到了多個(gè)構(gòu)造/查詢節(jié)點(diǎn)上); B、 主節(jié)點(diǎn)拆分構(gòu)造任務(wù)(按照構(gòu)造節(jié)點(diǎn)的個(gè)數(shù),將圖像集均分到各個(gè)構(gòu)造子任務(wù)中,每 個(gè)構(gòu)造節(jié)點(diǎn)負(fù)責(zé)一個(gè)構(gòu)造子任務(wù)),并將拆分后的構(gòu)造子任務(wù)下發(fā)給各個(gè)構(gòu)造節(jié)點(diǎn); C、 構(gòu)造節(jié)點(diǎn)收到任務(wù)后,對(duì)任務(wù)中包含的指紋圖像集提取特征向量,并將這些特征向 量存儲(chǔ)到云存儲(chǔ)系統(tǒng)中,同時(shí)將特征向量的key (唯一標(biāo)識(shí)一個(gè)特征向量)與指紋圖像間的 關(guān)系存儲(chǔ)到局部"〈特征向量key,圖像名〉"關(guān)系map (關(guān)系映像)中; D、 對(duì)每一個(gè)特征向量V,計(jì)算幻(F) 〇 = 得到哈希值(二進(jìn)制串),然后計(jì)算哈 希值得到對(duì)應(yīng)數(shù)值h,然后將特征向量V的key放到哈希表j的桶)中;其 中,一個(gè)哈希表是由一個(gè)哈希函數(shù)決定,一個(gè)哈希表由多個(gè)桶組成,每個(gè)特征向量由哈希函 數(shù)計(jì)算后都會(huì)得到一個(gè)子串(哈希函數(shù)將高緯二進(jìn)制串表示形式的特征向量變?yōu)榈途?,計(jì) 算該二進(jìn)制子串對(duì)應(yīng)的數(shù)值(如:1〇1對(duì)應(yīng)5)就是桶的編號(hào)即h,哈希值相同的向量會(huì)被放 在同一個(gè)桶中; E、 上一階段執(zhí)行完后,分別對(duì)每一個(gè)哈希表j (J = U,…i)中的每一個(gè)桶 h(A = l;2,…If ),計(jì)算j和h的乘積:r = j * h,接著計(jì)算哈希值H(r),哈希函數(shù)定義 為:%-) (p為系統(tǒng)中構(gòu)造節(jié)點(diǎn)個(gè)數(shù));接著將數(shù)字j和h拼接為字 符串s (如:j=10,h=1024,那么字符串s為"101024"),該字符串唯一標(biāo)識(shí)一個(gè)桶;然后將 該桶以"〈字符串s,特征向量key集合〉"的形式經(jīng)由網(wǎng)絡(luò)發(fā)送給H(r)對(duì)應(yīng)的構(gòu)造節(jié)點(diǎn); 當(dāng)所有的桶都根據(jù)哈希值放到對(duì)應(yīng)的節(jié)點(diǎn)后,構(gòu)造子任務(wù)結(jié)束; F、 構(gòu)造節(jié)點(diǎn)在構(gòu)造子任務(wù)完成后,將完成消息報(bào)告給主節(jié)點(diǎn),該消息中包含之前步驟 中得到的局部"〈特征向量key,圖像名〉"關(guān)系map ;當(dāng)所有構(gòu)造節(jié)點(diǎn)都成功返回后,主節(jié)點(diǎn) 合并局部"〈特征向量key,圖像名〉"關(guān)系map得到全局的"〈特征向量key,圖像名〉"關(guān) 系map ;至此,構(gòu)造任務(wù)完成,索引構(gòu)造流程結(jié)束。
[0006] 分布式指紋檢索步驟: a、 客戶端向網(wǎng)關(guān)發(fā)送圖像檢索請(qǐng)求(請(qǐng)求中包含待檢索指紋圖像); b、 網(wǎng)關(guān)收到請(qǐng)求后,對(duì)待檢索的指紋圖像提取特征向量,并形成檢索任務(wù)下發(fā)到主節(jié) 點(diǎn)上; c、 主節(jié)點(diǎn)收到檢索任務(wù)后,將待檢索指紋圖像的每一個(gè)特征向量計(jì)算§/7) (j' = )得到哈希值,然后根據(jù)哈希值和哈希擾動(dòng)向量組(根據(jù)哈希值中二進(jìn)制位數(shù), 使用第三方庫(kù)自動(dòng)生成)計(jì)算得到桶編號(hào)h(A = l,2,..Ji );接著如上述構(gòu)造流程中(5)步 驟一樣:首先計(jì)算H(j*h)得到該特征向量對(duì)應(yīng)的桶所在的構(gòu)造/查詢節(jié)點(diǎn);然后,將數(shù)字j 和h拼接為字符串s,標(biāo)志出該桶;然后,主節(jié)點(diǎn)將包含特征向量和字符串s的檢索子任務(wù) 發(fā)送給H(j*h)對(duì)應(yīng)的節(jié)點(diǎn)(每個(gè)特征向量對(duì)應(yīng)一個(gè)子任務(wù)); d、 查詢節(jié)點(diǎn)收到檢索子任務(wù)后,根據(jù)任務(wù)中桶的標(biāo)識(shí)找到對(duì)應(yīng)桶,并根據(jù)該哈希桶中 存放的特征向量的key,將這些特征向量從云存儲(chǔ)系統(tǒng)中讀出;接著讓待檢索特征向量與 桶中的特征向量集做海明距離計(jì)算,過濾掉不滿距離條件的特征向量;任務(wù)完成后向主節(jié) 點(diǎn)返回成功消息(消息中包含滿足距離條件的特征向量的key); e、 主節(jié)點(diǎn)收到所有查詢節(jié)點(diǎn)的回復(fù)消息后,根據(jù)消息中特征向量的key,查找全局"〈 特征向量key,圖像名〉"關(guān)系map,找出滿足條件的特征向量對(duì)應(yīng)的圖像名,接著以"〈圖像 名,命中次數(shù)〉"的形式記錄該結(jié)果(命中次數(shù)初始化為1,如果后面出現(xiàn)相同的圖像名則命 中次數(shù)加1);然后按照命中次數(shù)對(duì)結(jié)果進(jìn)行排序(命中次數(shù)越多表示越相似),最后選出前k 個(gè)圖像名作為檢索結(jié)果返回給客戶端。
[0007] 本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)及有益效果: 本發(fā)明將索引的構(gòu)造和檢索放到多個(gè)計(jì)算節(jié)點(diǎn)上并行執(zhí)行,提高了索引構(gòu)造和檢索的 效率,同時(shí)解決了高維描述符表示下索引計(jì)算開銷大的問題。
【專利附圖】
【附圖說明】
[0008] 圖1為細(xì)節(jié)點(diǎn)柱形結(jié)構(gòu)示意圖一。
[0009] 圖2為細(xì)節(jié)點(diǎn)柱形結(jié)構(gòu)示意圖二。
[0010] 圖3為柱形結(jié)構(gòu)中空間坐標(biāo)相鄰的細(xì)節(jié)點(diǎn)示意圖。
[0011] 圖4為函數(shù)
【權(quán)利要求】
1. 分布式海量指紋識(shí)別方法,其特征在于,包括以下步驟: (1) 構(gòu)造分布式索引; (2) 分布式檢索待識(shí)別指紋; 其中,所述構(gòu)造分布式索引的步驟如下: A、 將訓(xùn)練圖像集上傳到云存儲(chǔ)系統(tǒng)中,上傳完成后向主節(jié)點(diǎn)發(fā)起索引構(gòu)造任務(wù); B、 主節(jié)點(diǎn)拆分構(gòu)造任務(wù),并將拆分后的構(gòu)造子任務(wù)下發(fā)給各個(gè)構(gòu)造/查詢節(jié)點(diǎn); C、 構(gòu)造/查詢節(jié)點(diǎn)收到任務(wù),對(duì)任務(wù)中包含的指紋圖像集提取特征向量V,并將這些特 征向量存儲(chǔ)到云存儲(chǔ)系統(tǒng)中;同時(shí)對(duì)每個(gè)特征向量V指定一個(gè)唯一標(biāo)識(shí)key,并將每個(gè)特征 向量的key與指紋圖像間的關(guān)系存儲(chǔ)到關(guān)系映射中; D、 對(duì)每一個(gè)特征向量V,通過執(zhí)行哈希函數(shù) 并計(jì)算哈希值得到h,然后將特征向量V的key存到哈希表j的桶h中; E、 對(duì)每一個(gè)哈希表j中的每一個(gè)桶h,計(jì)算j和h的乘積:r=j*h,接著計(jì)算哈希值H(r), 接著將數(shù)字j和h拼接為字符串s,該字符串唯一標(biāo)識(shí)一個(gè)桶,然后將該桶發(fā)送給H (r)對(duì) 應(yīng)的構(gòu)造/查詢節(jié)點(diǎn),構(gòu)造子任務(wù)結(jié)束; F、 構(gòu)造/查詢節(jié)點(diǎn)在構(gòu)造子任務(wù)完成后,將完成消息報(bào)告給王節(jié)點(diǎn),至此,構(gòu)造任務(wù)完 成,索引構(gòu)造流程結(jié)束。
2. 根據(jù)權(quán)利要求1所述的分布式海量指紋識(shí)別方法,其特征在于,所述分布式檢索待 識(shí)別指紋的步驟如下: a、 客戶端向網(wǎng)關(guān)發(fā)送圖像檢索請(qǐng)求; b、 網(wǎng)關(guān)收到請(qǐng)求后,對(duì)待檢索的指紋圖像提取特征向量,并形成檢索任務(wù)下發(fā)到主節(jié) 點(diǎn)上; c、 主節(jié)點(diǎn)收到檢索任務(wù)后,將待檢索指紋圖像的每一個(gè)特征向量通過哈希函數(shù)盈/^) 計(jì)算得到哈希值,然后根據(jù)哈希值和哈希擾動(dòng)向量組計(jì)算得到桶編號(hào)h ;接著計(jì)算H (j*h) 得到該特征向量對(duì)應(yīng)的桶所在的構(gòu)造/查詢節(jié)點(diǎn);然后,將數(shù)字j和h拼接為字符串s,標(biāo) 志出該桶;隨后主節(jié)點(diǎn)將包含特征向量和字符串s的檢索子任務(wù)發(fā)送給H (j*h)對(duì)應(yīng)的構(gòu) 造/查詢節(jié)點(diǎn); d、 構(gòu)造/查詢節(jié)點(diǎn)收到檢索子任務(wù)后,根據(jù)任務(wù)中的桶的標(biāo)識(shí)找到對(duì)應(yīng)桶,并根據(jù)該 哈希桶中存放的特征向量的key,將這些特征向量從云存儲(chǔ)系統(tǒng)中讀出,接著讓待檢索特征 向量與桶中的特征向量集做海明距離計(jì)算,過濾掉不滿距離條件的特征向量,任務(wù)完成后 向主節(jié)點(diǎn)返回成功消息; e、 主節(jié)點(diǎn)收到所有查詢節(jié)點(diǎn)的回復(fù)消息后,根據(jù)消息中特征向量的key,找出滿足條件 的特征向量,并按照命中次數(shù)對(duì)結(jié)果進(jìn)行排序,最后選出前k個(gè)圖像名作為檢索結(jié)果返回 給客戶端。
3. 根據(jù)權(quán)利要求2所述的分布式海量指紋識(shí)別方法,其特征在于,所述構(gòu)造分布式索 引的具體步驟如下: A、 管理端將訓(xùn)練圖像集經(jīng)上傳節(jié)點(diǎn)上傳到云存儲(chǔ)系統(tǒng)中,上傳完成后向主節(jié)點(diǎn)發(fā)起索 引構(gòu)造任務(wù); B、 主節(jié)點(diǎn)拆分構(gòu)造任務(wù),也就是按照構(gòu)造/查詢節(jié)點(diǎn)的個(gè)數(shù),將圖像集均分到各個(gè)構(gòu) 造子任務(wù)中,每個(gè)構(gòu)造節(jié)點(diǎn)負(fù)責(zé)一個(gè)構(gòu)造子任務(wù),并將拆分后的構(gòu)造子任務(wù)下發(fā)給各個(gè)構(gòu) 造/查詢節(jié)點(diǎn); C、 構(gòu)造/查詢節(jié)點(diǎn)收到任務(wù)后,對(duì)任務(wù)中包含的指紋圖像集提取特征向量,并將這些 特征向量集存儲(chǔ)到云存儲(chǔ)系統(tǒng)中,同時(shí)對(duì)每個(gè)特征向量V指定一個(gè)唯一標(biāo)識(shí)key,并將特征 向量的key與指紋圖像間的關(guān)系存儲(chǔ)到局部"〈特征向量key,圖像名〉"關(guān)系映射中; D、 對(duì)每一個(gè)特征向量V,通過執(zhí)行哈希函數(shù)并計(jì)算哈希值得到h,然后將特征向 量V的key存到哈希表j的桶h中; E、 分別對(duì)每一個(gè)哈希表j中的每一個(gè)桶h,計(jì)算j和h的乘積:r=j*h,接著計(jì)算哈希值 H(r);接著將數(shù)字j和h拼接為字符串s,該字符串唯一標(biāo)識(shí)一個(gè)桶;然后將該桶以"〈字符 串s,特征向量key集合〉"的形式經(jīng)由網(wǎng)絡(luò)發(fā)送給H(r)對(duì)應(yīng)的構(gòu)造節(jié)點(diǎn);當(dāng)所有的桶都根 據(jù)哈希值放到對(duì)應(yīng)的節(jié)點(diǎn)后,構(gòu)造子任務(wù)結(jié)束; F、 構(gòu)造節(jié)點(diǎn)在構(gòu)造子任務(wù)完成后,將完成消息報(bào)告給主節(jié)點(diǎn),該消息中包含之前步驟 中得到的局部"〈特征向量key,圖像名〉"關(guān)系映像,當(dāng)所有構(gòu)造節(jié)點(diǎn)都成功返回后,主節(jié)點(diǎn) 合并局部"〈特征向量key,圖像名〉"關(guān)系映像得到全局的"〈特征向量key,圖像名〉"關(guān) 系映像,至此,構(gòu)造任務(wù)完成,索引構(gòu)造流程結(jié)束。
4.根據(jù)權(quán)利要求3所述的分布式海量指紋識(shí)別方法,其特征在于,所述分布式檢索待 識(shí)別指紋的步驟如下: a、 客戶端向網(wǎng)關(guān)發(fā)送圖像檢索請(qǐng)求; b、 網(wǎng)關(guān)收到請(qǐng)求后,對(duì)待檢索的指紋圖像提取特征向量,并形成檢索任務(wù)下發(fā)到主節(jié) 點(diǎn)上; c、 主節(jié)點(diǎn)收到檢索任務(wù)后,將待檢索指紋圖像的每一個(gè)特征向量通過哈希函數(shù)幻(^ 計(jì)算得到哈希值,然后根據(jù)哈希值和哈希擾動(dòng)向量組計(jì)算得到桶編號(hào)h;接著計(jì)算H(j*h) 得到該特征向量對(duì)應(yīng)的桶所在的構(gòu)造/查詢節(jié)點(diǎn),將數(shù)字j和h拼接為字符串s,標(biāo)志出該 桶;然后,主節(jié)點(diǎn)將包含特征向量和字符串s的檢索子任務(wù)發(fā)送給H(j*h)對(duì)應(yīng)的節(jié)點(diǎn); d、 查詢節(jié)點(diǎn)收到檢索子任務(wù)后,根據(jù)任務(wù)中桶的標(biāo)識(shí)找到對(duì)應(yīng)桶,并根據(jù)該哈希桶中 存放的特征向量的key,將這些特征向量從云存儲(chǔ)系統(tǒng)中讀出;接著讓待檢索特征向量與 桶中的特征向量集做海明距離計(jì)算,過濾掉不滿距離條件的特征向量;任務(wù)完成后向主節(jié) 點(diǎn)返回成功消息; e、 主節(jié)點(diǎn)收到所有查詢節(jié)點(diǎn)的回復(fù)消息后,根據(jù)消息中特征向量的key,查找全局"〈 特征向量key,圖像名〉"關(guān)系map,找出滿足條件的特征向量對(duì)應(yīng)的圖像名,接著以"〈圖像 名,命中次數(shù)〉"的形式記錄該結(jié)果;然后按照命中次數(shù)對(duì)結(jié)果進(jìn)行排序,最后選出前k個(gè)圖 像名作為檢索結(jié)果返回給客戶端。
【文檔編號(hào)】G06K9/00GK104112005SQ201410335450
【公開日】2014年10月22日 申請(qǐng)日期:2014年7月15日 優(yōu)先權(quán)日:2014年7月15日
【發(fā)明者】段翰聰, 梁堯, 張苗, 張 杰, 李曉東, 孟慶康, 劉威 申請(qǐng)人:電子科技大學(xué)