本發(fā)明涉及圖像識(shí)別技術(shù)領(lǐng)域,特別涉及一種基于漢明距離的大規(guī)模高效人臉識(shí)別方法。
背景技術(shù):
目前,人臉識(shí)別方法日益成熟,多側(cè)重于人臉定位以及有效特征的提取以達(dá)到相當(dāng)高的識(shí)別準(zhǔn)確率,但是常用的相似度算法基本都有一個(gè)通病,即當(dāng)需要識(shí)別的人臉數(shù)據(jù)庫(kù)達(dá)到很大的數(shù)量的時(shí)候需要耗費(fèi)的時(shí)間成本相當(dāng)高,這在實(shí)際應(yīng)用中屬于一大缺陷。因此,如果能研究出一種在大規(guī)模人臉數(shù)據(jù)庫(kù)情況下能夠進(jìn)行高效又高精度的人臉識(shí)別方法,將對(duì)醫(yī)學(xué)圖像領(lǐng)域、公安偵查罪犯、城市居民區(qū)安防、端到端訪問(wèn)控制等實(shí)際應(yīng)用有極大的幫助。
采用傳統(tǒng)的深度學(xué)習(xí)進(jìn)行人臉識(shí)別,在提取高維特征后很多算法都會(huì)進(jìn)行特征降維,因?yàn)楦呔S特征包含豐富的圖像信息,其在理論上用來(lái)進(jìn)行識(shí)別時(shí)雖然能夠達(dá)到超高的識(shí)別準(zhǔn)確率,但是在高維浮點(diǎn)數(shù)向量之間求相似度,計(jì)算量非常大,因此還需要采用PCA算法對(duì)高維特征進(jìn)行降維壓縮,然后再進(jìn)行基于內(nèi)容的圖像檢索,這種方式的性能會(huì)大大優(yōu)于傳統(tǒng)的人臉識(shí)別算法。但PCA算法不能在網(wǎng)絡(luò)中進(jìn)行實(shí)現(xiàn),需要用matlab或其他工具通過(guò)PCA算法將由網(wǎng)絡(luò)提取出的高位特征進(jìn)行降維操作,整體識(shí)別過(guò)程復(fù)雜,而且低維特征的損壞率較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種在保證高識(shí)別率的基礎(chǔ)上,簡(jiǎn)化算法且識(shí)別速度快的基于漢明距離的大規(guī)模高效人臉識(shí)別方法。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種基于漢明距離的大規(guī)模高效人臉識(shí)別方法,所述識(shí)別方法包括以下步驟:
步驟S1:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),其中所述卷積神經(jīng)網(wǎng)絡(luò)能夠輸出圖片的高維特征和低維特征;
步驟S2:建立樣本數(shù)據(jù)庫(kù),利用樣本圖片對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并生成模型;其中,所述樣本數(shù)據(jù)庫(kù)中的樣本圖片均進(jìn)行圖片格式轉(zhuǎn)換為L(zhǎng)MDB格式,生成均值文件;
步驟S3:編寫測(cè)試工程代碼,用于將提取出卷積神經(jīng)網(wǎng)絡(luò)輸出的高維特征和低維特征,并將高維特征保存,將低維特征轉(zhuǎn)換為二值散列碼;
步驟S4:獲取待檢圖片,將經(jīng)過(guò)預(yù)處理的待檢測(cè)圖片投入到訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)中,輸出待檢圖片高維特征和待檢圖片低維特征,通過(guò)步驟S3編寫的測(cè)試工程代碼提取出待檢圖片高維特征并保存,將待檢圖片低維特征轉(zhuǎn)換為二值散列碼;
步驟S5:用漢明距離計(jì)算待檢圖片的二值散列碼與樣本數(shù)據(jù)庫(kù)中每一張樣本圖片的二值散列碼的漢明距離,將計(jì)算出的所有漢明距離進(jìn)行升序排列,設(shè)定閾值并篩選出漢明距離小于閾值的樣本圖片;
步驟S6:用余弦距離計(jì)算待檢圖片高維特征與步驟S5篩選出的樣本圖片高維特征的相似度,并對(duì)篩選出的相似度進(jìn)行降序排列,輸出最高相似度所對(duì)應(yīng)的樣本圖片,即為識(shí)別結(jié)果。
其中,所述步驟S1所述的卷積神經(jīng)網(wǎng)絡(luò)為:在傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的特征輸出層和分類輸出層之間增設(shè)一隱藏層,所述隱藏層為全連接層,所述隱藏層的激活函數(shù)采用sigmoig函數(shù);具體的,所述卷積神經(jīng)網(wǎng)絡(luò)可以為VGG網(wǎng)絡(luò),具體包括:五個(gè)卷積層、三個(gè)全連接層、分類輸出層,其中,第二個(gè)全連接層為特征輸出層,第三個(gè)全連接層為增設(shè)在特征輸出層和分類特征輸出層之間的隱藏層,其中,五個(gè)所述卷基層以及分類輸出層的權(quán)值的學(xué)習(xí)率和衰減率均設(shè)為1,偏置項(xiàng)的學(xué)習(xí)率和衰減率設(shè)為2,0;權(quán)值初始化設(shè)為gaussian,值為0.01,偏置項(xiàng)初始化設(shè)為constant,值為0;三個(gè)全連接層的權(quán)值以及偏置項(xiàng)的學(xué)習(xí)率和衰減率同上,初始化分別為gaussian=0.005,constant=1。
所述步驟S3具體為:通過(guò)測(cè)試工程代碼設(shè)定一個(gè)閾值,并對(duì)輸出的浮點(diǎn)型向量與閾值進(jìn)行大小比較,輸出的浮點(diǎn)型向量大于閾值則設(shè)為1,否則為0,最終得到與低維特征相對(duì)應(yīng)的01二值散列碼;優(yōu)選地,在編寫測(cè)試工程代碼中加入時(shí)間函數(shù),用來(lái)計(jì)算從待檢圖片輸出卷積神經(jīng)網(wǎng)路到得到識(shí)別結(jié)果所消耗的時(shí)間。
所述步驟S4中,獲取的待檢測(cè)圖片使用Opencv人臉檢測(cè)和ASM對(duì)齊方法檢測(cè)出待檢人臉圖像,將待檢人臉圖像投入到訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行特征提取。
本發(fā)明的有益效果是:本發(fā)明能夠在同一卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行降維壓縮,再用漢明距離和余弦距離進(jìn)行由粗到細(xì)的兩次檢索識(shí)別,實(shí)現(xiàn)了端到端的人臉識(shí)別,不僅省略了傳統(tǒng)PCA算法,簡(jiǎn)化了識(shí)別工序,縮短了計(jì)算時(shí)間,提高了檢索效率,而且保留的圖片信息更豐富,損壞率相對(duì)較低,并結(jié)合漢明距離和余弦距離進(jìn)行兩次檢索,明顯提高了識(shí)別準(zhǔn)確率。
附圖說(shuō)明
圖1 為本發(fā)明實(shí)施例的人臉識(shí)別方法的流程圖。
圖2 為本發(fā)明實(shí)施例中余弦距離與歐式距離解析圖。
圖3 為本發(fā)明實(shí)施例中高維特征壓縮為低維特征的網(wǎng)絡(luò)層示意圖。
圖4 為本發(fā)明實(shí)施例中由粗到精分層識(shí)別的示意圖。
具體實(shí)施方式
本發(fā)明提供的基于漢明距離的大規(guī)模高效人臉識(shí)別方法,在對(duì)待檢圖片在大規(guī)模的樣本數(shù)據(jù)庫(kù)中進(jìn)行識(shí)別前,需要對(duì)樣本數(shù)據(jù)庫(kù)中的樣本圖片進(jìn)行高維特征、低維特征的學(xué)習(xí)以及分類的學(xué)習(xí),再分別對(duì)低維、高維特征采用不同的相似度算法進(jìn)行相似度排序得到最后的識(shí)別結(jié)果。本發(fā)明所采用的是在網(wǎng)絡(luò)層進(jìn)行降維壓縮,對(duì)網(wǎng)絡(luò)輸出的高維特征可以壓縮為低達(dá)48維、128維等低維特征,其中壓縮維度的選擇與樣本數(shù)據(jù)庫(kù)有關(guān),當(dāng)樣本數(shù)據(jù)庫(kù)達(dá)到百萬(wàn)級(jí)時(shí)選用128維,低于百萬(wàn)級(jí)則選用48維,當(dāng)然其他的維數(shù)比如64維等都可以,維數(shù)設(shè)置越大,所提取的特征包含的信息越豐富,準(zhǔn)確率相對(duì)也會(huì)高一些,但是一般不會(huì)選擇高于128維的維數(shù),維數(shù)太高對(duì)于后期漢明距離計(jì)算相似度的時(shí)間會(huì)有一定的影響,當(dāng)數(shù)據(jù)庫(kù)達(dá)到幾十萬(wàn)甚至上百萬(wàn)的時(shí)候,高緯度特征識(shí)別速度會(huì)大幅度降低,因此128維以下的維度是最佳選擇。最后得到01二值散列碼,可以以10的指數(shù)倍縮減檢索時(shí)間成本,再用漢明距離和余弦距離進(jìn)行由粗到細(xì)的檢索識(shí)別,用漢明距離進(jìn)行低維散列碼粗檢索,可以從數(shù)以萬(wàn)計(jì)的圖像檢索庫(kù)中檢索出與待檢索圖片具有相似性特征的圖片,再用余弦距離進(jìn)行高維精檢索,可以從已經(jīng)抽出的相似性樣本中識(shí)別出與待檢圖片超高精度相似的目標(biāo)圖片,最終達(dá)到既快速又精確的人臉識(shí)別目的。相對(duì)于傳統(tǒng)的識(shí)別方法,本發(fā)明在降維方面代替了PCA方法,實(shí)現(xiàn)了端到端的人臉識(shí)別,工序相對(duì)簡(jiǎn)單很多,同時(shí)同一網(wǎng)絡(luò)中完成降維,低維特征保留的圖片信息更豐富,損壞率相對(duì)較低。相對(duì)于歐式距離,本發(fā)明選擇的余弦距離計(jì)算高維特征間的相似度時(shí),余弦夾角可以有效規(guī)避個(gè)體相同認(rèn)知中不同程度的差異表現(xiàn),更注重維度之間的差異,而歐式距離更注重?cái)?shù)值上的差異,對(duì)于維度特征來(lái)講,余弦距離相似度計(jì)算的值更精確。
以下采用實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來(lái)解決技術(shù)問(wèn)題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。
實(shí)施例1
本發(fā)明實(shí)施例提供了一種基于漢明距離的大規(guī)模高效人臉識(shí)別方法,參見圖1,識(shí)別方法具體包括以下步驟:
步驟S1:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),其中所述卷積神經(jīng)網(wǎng)絡(luò)能夠輸出圖片的高維特征和低維特征;
步驟S2:建立樣本數(shù)據(jù)庫(kù),利用樣本圖片對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并生成模型;其中,所述樣本數(shù)據(jù)庫(kù)中的樣本圖片均進(jìn)行圖片格式轉(zhuǎn)換為L(zhǎng)MDB格式,生成均值文件;樣本數(shù)據(jù)庫(kù)可以基于已公開的人臉數(shù)據(jù)庫(kù)如FERET人臉庫(kù)或CMU PIE人臉庫(kù)建立,對(duì)人臉庫(kù)中的圖片進(jìn)行格式轉(zhuǎn)換并生成均值文件;或,樣本數(shù)據(jù)庫(kù)也可以由基于人臉識(shí)別的門禁系統(tǒng)或其他人臉識(shí)別系統(tǒng)的高清攝像頭采集的圖片,并對(duì)采集的所有圖片采用Opencv人臉檢測(cè)和ASM對(duì)齊方法檢測(cè)得到的人臉圖像,再經(jīng)過(guò)上述格式轉(zhuǎn)換即為樣本圖片。
步驟S3:編寫測(cè)試工程代碼,用于將提取出卷積神經(jīng)網(wǎng)絡(luò)輸出的高維特征和低維特征,并將高維特征保存,將低維特征轉(zhuǎn)換為二值散列碼;具體的,卷積神經(jīng)網(wǎng)絡(luò)輸出的低維特征是浮點(diǎn)型向量,通過(guò)測(cè)試工程代碼設(shè)定一個(gè)閾值(可設(shè)定為0.5),并對(duì)輸出的浮點(diǎn)型向量與閾值進(jìn)行大小比較,輸出的浮點(diǎn)型向量大于閾值則設(shè)為1,否則為0,最終得到與低維特征相對(duì)應(yīng)的01二值散列碼;優(yōu)選地,在編寫測(cè)試工程代碼中加入時(shí)間函數(shù),用來(lái)計(jì)算從待檢圖片輸出卷積神經(jīng)網(wǎng)路到得到識(shí)別結(jié)果所消耗的時(shí)間;
步驟S4:獲取待檢圖片,并采用Opencv人臉檢測(cè)和ASM對(duì)齊方法檢測(cè)出待檢人臉圖像,將待檢人臉圖像投入到訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)中,輸出待檢圖片高維特征和待檢圖片低維特征,通過(guò)步驟S3編寫的測(cè)試工程代碼提取出待檢圖片高維特征并保存,將待檢圖片低維特征轉(zhuǎn)換為二值散列碼;其中,待檢測(cè)圖片由人臉庫(kù)隨機(jī)篩選得出;或,待檢測(cè)圖片由基于人臉識(shí)別的門禁系統(tǒng)或其他人臉識(shí)別系統(tǒng)的高清攝像頭實(shí)時(shí)采集的圖片,并對(duì)采集的所有圖片采用Opencv人臉檢測(cè)和ASM對(duì)齊方法檢測(cè)得到的人臉圖像,即可作為待檢圖片;
步驟S5:用漢明距離計(jì)算待檢圖片的二值散列碼與樣本數(shù)據(jù)庫(kù)中每一張樣本圖片的二值散列碼的漢明距離,將計(jì)算出的所有漢明距離進(jìn)行升序排列,設(shè)定閾值并篩選出漢明距離小于閾值的樣本圖片;其中,閾值可預(yù)設(shè)為位于升序排列第n位的漢明距離值,再根據(jù)測(cè)試結(jié)果進(jìn)行調(diào)整最終得到準(zhǔn)確率最高的閾值;閾值需要多次測(cè)試不斷改閾值找到最佳閾值,因?yàn)橛蓸颖緮?shù)據(jù)庫(kù)選取最為測(cè)試用的樣本圖片提取出來(lái)特征不一樣的,相對(duì)的,相似性也不同,閾值的設(shè)定屬于現(xiàn)有技術(shù),在此不再贅述。
步驟S6:用余弦距離計(jì)算待檢圖片高維特征與步驟S5篩選出的樣本圖片高維特征的相似度,并對(duì)篩選出的相似度進(jìn)行降序排列,輸出最高相似度所對(duì)應(yīng)的樣本圖片,即為識(shí)別結(jié)果。
其中,步驟S1中的卷積神經(jīng)網(wǎng)絡(luò)具體為:參見圖3,在傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的特征輸出層與分類輸出層之間添加一個(gè)隱藏層,所述隱藏層為一全連接層,為低維度輸出,所述隱藏層的激活函數(shù)采用sigmoig函數(shù)。傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)可以為VGG網(wǎng)絡(luò),本發(fā)明實(shí)施例使用的卷積神經(jīng)網(wǎng)絡(luò)可以為:包括五個(gè)卷積層、三個(gè)全連接層、分類輸出層,其中,第二個(gè)全連接層為特征輸出層,第三個(gè)全連接層為增設(shè)在特征輸出層和分類特征輸出層之間的隱藏層。其中,五個(gè)卷基層以及分類輸出層的權(quán)值的學(xué)習(xí)率和衰減率均設(shè)為1,偏置項(xiàng)的學(xué)習(xí)率和衰減率設(shè)為2,0;權(quán)值初始化設(shè)為gaussian,值為0.01,偏置項(xiàng)初始化設(shè)為constant,值為0;三個(gè)全連接層的權(quán)值以及偏置項(xiàng)的學(xué)習(xí)率和衰減率同上,初始化分別為gaussian=0.005,constant=1;如果需要微調(diào),把分類輸出層的兩個(gè)學(xué)習(xí)率改為原來(lái)的10倍。本發(fā)明運(yùn)用神經(jīng)元網(wǎng)絡(luò)學(xué)習(xí)高維特征,在輸出層之間添加全連接隱層將高維特征壓縮成低維特征,設(shè)置上述各參數(shù),并采用sigmoid激活函數(shù)激活神經(jīng)元,使其輸出值為0~1之間值,再通過(guò)測(cè)試工程中設(shè)定閾值使輸出的低維特征浮點(diǎn)型向量轉(zhuǎn)換成01二值散列碼。
如圖4所示,檢索過(guò)程由粗到精進(jìn)行檢索,先用漢明距離計(jì)算二值散列碼之間的相似度并排序得到粗檢索結(jié)果,低維特征進(jìn)行粗檢索得到的樣本集不可避免會(huì)有一定偏差,再用余弦距離計(jì)算高維特征之間的相似度并排序得到精檢索結(jié)果,即為最終識(shí)別結(jié)果,兩次相似度計(jì)算以及排序,極大的保證了在降維后人臉識(shí)別的準(zhǔn)確。
其中,漢明距離是使用在數(shù)據(jù)傳輸差錯(cuò)控制編碼里面的,它表示兩個(gè)(相同長(zhǎng)度)字對(duì)應(yīng)位不同的數(shù)量,假設(shè)以d(x,y)表示兩個(gè)字x,y之間的漢明距離。對(duì)兩個(gè)字符串進(jìn)行異或運(yùn)算,并統(tǒng)計(jì)結(jié)果為1的個(gè)數(shù),那么這個(gè)數(shù)就是漢明距離。簡(jiǎn)單來(lái)講就是統(tǒng)計(jì)兩個(gè)字符串不同的bit位的個(gè)數(shù),也可以理解成一個(gè)字符串換成另一個(gè)字符串需要改變的字符的個(gè)數(shù)。例如:
1011101 與 1001001 之間的漢明距離是2。
2143896 與 2233796 之間的漢明距離是3。
"toned" 與 "roses" 之間的漢明距離是3。
本發(fā)明采用漢明距離計(jì)算01二值散列碼是因?yàn)樵诘途S空間中計(jì)算兩個(gè)二值向量之間漢明距離的速度是非??斓?,相對(duì)于傳統(tǒng)方法以10的指數(shù)倍提速,在很大程度上可以有效的提高人臉識(shí)別的速度。
用余弦距離實(shí)現(xiàn)高維特征精檢索部分,余弦距離使用兩個(gè)向量夾角的余弦值作為衡量?jī)蓚€(gè)個(gè)體間差異的大小。相比歐氏距離,余弦距離更加注重兩個(gè)向量在方向上的差異,即在維度上的差異。用三維坐標(biāo)系來(lái)區(qū)分歐氏距離和余弦距離的區(qū)別,如圖2所示是余弦距離與歐式距離解析圖,從圖1可以看出,歐氏距離衡量的是空間各點(diǎn)的絕對(duì)距離,跟各個(gè)點(diǎn)所在的位置坐標(biāo)直接相關(guān);而余弦距離衡量的是空間向量的夾角,更加體現(xiàn)在方向上的差異,而不是位置。如果保持A點(diǎn)位置不變,B點(diǎn)朝原方向遠(yuǎn)離坐標(biāo)軸原點(diǎn),那么這個(gè)時(shí)候余弦距離是保持不變的(因?yàn)閵A角沒(méi)有發(fā)生變化),而A、B兩點(diǎn)的距離顯然在發(fā)生改變,基于兩者之間的不同,對(duì)于維度特征來(lái)講,余弦距離相似度計(jì)算的值更精確。兩個(gè)n維樣本點(diǎn)a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角余弦可以使用類似于夾角余弦的概念來(lái)衡量它們間的相似程度。
余弦相似度的計(jì)算公式如下:
即:
夾角余弦取值范圍為[-1,1]。夾角余弦越大表示兩個(gè)向量的夾角越小,夾角余弦越小表示兩向量的夾角越大。當(dāng)兩個(gè)向量的方向重合時(shí)夾角余弦取最大值1,當(dāng)兩個(gè)向量的方向完全相反夾角余弦取最小值-1。對(duì)于維度特征來(lái)講,余弦距離相似度計(jì)算的值更精確。
本發(fā)明實(shí)施例已在測(cè)試代碼中編寫時(shí)間函數(shù),用來(lái)計(jì)算從樣本圖像輸出網(wǎng)絡(luò)得到識(shí)別結(jié)果所消耗的時(shí)間復(fù)雜度,以便與其他傳統(tǒng)方法或者未降維之前的方法進(jìn)行時(shí)間的比對(duì);采用本發(fā)明的識(shí)別方法,將待檢圖片與樣本數(shù)據(jù)庫(kù)放進(jìn)訓(xùn)練好的model以及測(cè)試工程中進(jìn)行測(cè)試,得出最后識(shí)別結(jié)果以及識(shí)別精度和識(shí)別時(shí)間等,與傳統(tǒng)識(shí)別方法進(jìn)行對(duì)比結(jié)果如表1所示。
表1 本發(fā)明與傳統(tǒng)方法的識(shí)別精度對(duì)照表
由表1的數(shù)據(jù)可知,與傳統(tǒng)方法相比,本發(fā)明的識(shí)別方法在檢索精度方面大大提高;此外,本發(fā)明實(shí)施例實(shí)驗(yàn)提取的高維特征是4096維,壓縮后的低維特征是48維,用余弦距離批量檢索100張高維特征消耗的時(shí)間是9.708s,用漢明距離批量檢索100張低維特征消耗的時(shí)間是0.8825s,與傳統(tǒng)方法相比,本發(fā)明所消耗的時(shí)間提高了11倍。
本發(fā)明的降維壓縮是在網(wǎng)絡(luò)中學(xué)習(xí)完成,比PCA在網(wǎng)絡(luò)外完成降維壓縮更方便快捷,所保留的圖片信息更豐富,損壞率相對(duì)較小,有利于后期特征相似度計(jì)算;二值散列碼配合漢明距離計(jì)算粗檢索相似度,可以將識(shí)別速率提升10的指數(shù)倍;高維特征精檢索可以保證在識(shí)別速率提升的情況下保證識(shí)別的高準(zhǔn)確率,真正做到在大規(guī)模數(shù)據(jù)庫(kù)環(huán)境下進(jìn)行高效精確的人臉識(shí)別。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。