先說怎么和人臉識(shí)別技術(shù)結(jié)緣,記得13年初像做一款人臉和動(dòng)物變形的效果,可以從比如豹子臉平滑過渡到人臉,相當(dāng)?shù)膸浂焕堋.?dāng)時(shí)OpenCV 在iOS 上支持比較不是太友好,需要移植C++ 庫∈嗖剑現(xiàn)在OpenCV 這兩年對(duì)移動(dòng)端做出了大量工作沉删,有相應(yīng)的framework渐尿。
現(xiàn)在一些人臉識(shí)別的技術(shù)底層也是用的OpenCV這個(gè)相當(dāng)強(qiáng)大的圖形處理庫,他有很多相當(dāng)成熟的算法矾瑰。典型的一個(gè)成熟的SDK供應(yīng)商 face++∽┤祝現(xiàn)在也會(huì)配合一些新技術(shù)更加精確識(shí)別人臉比如下面說的蘋果的FaceID。
蘋果的iPhoneX 很讓人別扭的劉海全面屏幕是有他的原因的叫TrueDepth Camera System殴穴,包含紅外鏡頭凉夯、泛光感應(yīng)元件、距離傳感器采幌、環(huán)境光傳感器劲够、揚(yáng)聲器、麥克風(fēng)休傍、700萬像素?cái)z像頭征绎、點(diǎn)陣投影器,蘋果的一些最新研發(fā)的尖端技術(shù)都是基于此磨取,比如faceID面部識(shí)別技術(shù)人柿,借助ARKit 實(shí)現(xiàn)AR方面應(yīng)用。所以那么貴不只是他為了高利潤忙厌,確實(shí)硬件里有大驚喜凫岖。
先說說人臉識(shí)別技術(shù)的應(yīng)用領(lǐng)域吧。比如手機(jī)的刷臉解鎖慰毅,刷臉支付隘截,刷臉打卡扎阶,可以檢測(cè)一個(gè)人的性別汹胃,年齡,膚色甚至皮膚的水分东臀,油脂等等∽偶ⅲ現(xiàn)在我參與的一個(gè)應(yīng)用里面就有掃臉登錄。
再說說大家對(duì)人臉識(shí)別安全性的擔(dān)憂吧惰赋。比如:第一級(jí)別拍一張別人照片宰掉,第二級(jí)別視頻播放拍一個(gè)人的視頻,第三級(jí)別假面具赁濒,3D打印人臉轨奄。還有其他一些環(huán)境因素光亮,遮擋拒炎,角度問題挪拟。
那針對(duì)擔(dān)憂說說相關(guān)的技術(shù)應(yīng)對(duì)吧。
1:對(duì)于照片击你。對(duì)于照片檢測(cè)時(shí)候通過眨眼以及嘴巴動(dòng)作玉组,搖頭動(dòng)作來解決谎柄。
2:對(duì)于視頻可以因?yàn)榕臄z時(shí)候圖片的清晰度比較差,反光點(diǎn)多惯雳,有明顯的摩爾紋朝巫,如果有條件可以紅外檢測(cè)真實(shí)的人臉和紙片、屏幕石景、立體面具等攻擊媒介的反射特性都是不同的劈猿。
3:蘋果的faceID技術(shù)甚至用到了紅外檢測(cè),以及點(diǎn)陣投影器潮孽,AI芯片 A11 Bionic 神經(jīng)引擎糙臼。用 3 萬多個(gè)點(diǎn),以 3D 形式識(shí)別用戶面部恩商,通過訓(xùn)練神經(jīng)網(wǎng)絡(luò)建模变逃、識(shí)別人臉。
最后說說我們的技術(shù)思路吧怠堪。
蘋果的這個(gè)東西出來可以把人臉識(shí)別分為老的人臉識(shí)別技術(shù)和新的人臉識(shí)別技術(shù)揽乱。新的人臉識(shí)別技術(shù)借助了一些硬件技術(shù)比如紅外攝像頭,點(diǎn)矩陣甚至AI技術(shù)不斷精確訓(xùn)練數(shù)據(jù)粟矿。
對(duì)于老系統(tǒng)的人臉識(shí)別可以借助OpenCV算法來實(shí)現(xiàn)凰棉。
1:用Adaboost算法,導(dǎo)入人臉眼睛等訓(xùn)練數(shù)據(jù)陌粹。
2:對(duì)于活體檢測(cè)可以計(jì)算眨眼睛嘴巴動(dòng)作撒犀,摩爾紋檢測(cè),清晰度檢測(cè)掏秩。對(duì)于清晰度計(jì)算圖片的快速傅里葉變換或舞,然后查看高低頻的分布。如果圖片有少量的高頻成分蒙幻,那么該圖片就可以被認(rèn)為是模糊的映凳。然而,區(qū)分高頻量多少的具體閾值卻是十分困難的邮破,不恰當(dāng)?shù)拈撝祵?huì)導(dǎo)致極差的結(jié)果诈豌。對(duì)于摩爾紋檢測(cè)可以,將圖像轉(zhuǎn)換成傅里葉頻域抒和,檢測(cè)頻率峰值矫渔,摩爾紋圖像中的波紋相當(dāng)強(qiáng)大。
3:對(duì)比原圖和現(xiàn)圖的相似度來判斷是不是本人摧莽。如果是證件照可以通過感知哈希算法(perceptualhash algorithm)庙洼,它的作用是對(duì)每張圖像生成一個(gè)“指紋”(fingerprint)字符串,然后比較不同圖像的指紋。結(jié)果越接近送膳,就說明圖像越相似员魏。或者用直方圖模型比對(duì)兩張圖片叠聋,如果兩張圖片一模一樣的話撕阎,結(jié)果為0.00;比對(duì)的結(jié)果越小碌补,圖片相似性越高虏束。這些要求人臉圖的姿勢(shì)比較準(zhǔn)確。比較準(zhǔn)確的做法是可以用OpenCV捕捉人臉的關(guān)鍵點(diǎn)厦章,幾何校正主要對(duì)于角度镇匀,人臉光學(xué)校正模塊,通過一些濾波的方法袜啃,去除一些對(duì)光照更加敏感的面部特征汗侵,生成人臉特征,這樣在一些角度群发,和光線不好的情況下比較有利晰韵,比如完全可以掃描到雙眼就可以快速識(shí)別。
4:對(duì)于更精確識(shí)別沒有蘋果這些硬件支持還是要通過大數(shù)據(jù)和深度學(xué)習(xí)算法熟妓,神經(jīng)網(wǎng)絡(luò)算法更好的訓(xùn)練數(shù)據(jù)彌補(bǔ)硬件的不足雪猪。
對(duì)于OpenCV的展望。要是我起愈,我會(huì)用OpenCV仿照做一個(gè)手機(jī)端的PS 圖形處理軟件只恨,因?yàn)樗囊恍┧惴ㄏ喈?dāng)成熟,可以很輕松實(shí)現(xiàn)濾鏡抬虽,魔術(shù)棒等等官觅。對(duì)于去年阿里月餅時(shí)間找到那個(gè)發(fā)截圖的人也用到了一些OpenCV的東西,因?yàn)榘⒗锟赡軐?duì)于截圖添加盲水印就是用了OpenCV斥赋,原理是頻域添加數(shù)字水印的方法缰猴,通過某種變換手段(傅里葉變換,離散余弦變換疤剑,小波變換等)將圖像變換到頻域(小波域),在頻域?qū)D像添加水印闷堡,再通過逆變換隘膘,將圖像轉(zhuǎn)換為空間域。相對(duì)于空域手段杠览,頻域手段隱匿性更強(qiáng)弯菊,抗攻擊性更高。所以很快定位到誰截圖了踱阿。