ZLG深度解析人臉識別核心技術(shù)
5.人臉?lè )雌墼p
本文引用地址:http://dyxdggzs.com/article/201901/396553.htm從技術(shù)角度來(lái)說(shuō),人臉是唯一不需要用戶(hù)配合就可以采集的生物特征信息。人臉不同于指紋、掌紋、虹膜等,用戶(hù)不愿意被采集信息就無(wú)法獲得高質(zhì)量的特征信息。人臉信息簡(jiǎn)單易得,而且質(zhì)量還好,所以這引發(fā)了有關(guān)個(gè)人數據安全性的思考。而且在沒(méi)有設計人臉?lè )雌墼p算法的人臉識別系統使用手機、ipad或是打印的圖片等都能對輕松欺騙系統。
所以我們采用多傳感器融合技術(shù)的方案,使用紅外對管與圖像傳感器數據進(jìn)行深度學(xué)習來(lái)判斷是否存在欺詐。紅外對管進(jìn)行用戶(hù)距離的判斷,距離過(guò)近則懷疑欺詐行為。圖像傳感器用深度學(xué)習算法進(jìn)行二分類(lèi),把正常用戶(hù)行為與欺詐用戶(hù)行為分為兩類(lèi),對欺詐用戶(hù)進(jìn)行排除。
二分類(lèi)算法能夠有效抵抗一定距離的手機、ipad或是打印圖片的欺詐攻擊。對人臉欺詐數據集與普通人臉數據集預測如圖所示:

本二分類(lèi)算法在100萬(wàn)張圖片中準確分類(lèi)的概率為98.89%,所以并不會(huì )對整體系統的準確率進(jìn)行影響,保障系統的可靠性。
6.算法優(yōu)化
在使用神經(jīng)網(wǎng)絡(luò )算法解決問(wèn)題的時(shí)候,算法效率問(wèn)題是必要的考量的。特別是在資源與算力不足的嵌入式端,更是頭等大問(wèn)題。除了依托TensorFlow、Keras等開(kāi)源框架,根據其前向傳播的原理寫(xiě)成C++程序,還有必要的編譯優(yōu)化外,模型權重參數的清洗和算法計算的向量化都是比較有效的手段。
1)模型權重參數清洗
權重參數清洗對神經(jīng)網(wǎng)絡(luò )算法的效率影響相當大,沒(méi)有進(jìn)行清洗的權重參數訪(fǎng)問(wèn)與操作非常低效,與清洗后的權重參數相比往往能效率相差6-8倍。這差距在算力不足的嵌入式端非常明顯,往往決定一個(gè)算法是否能落地。具體的方法就是先讀取原模型進(jìn)行重組,讓參數變得緊湊且能在計算時(shí)連續訪(fǎng)問(wèn)計算,最后獲得重組后的模型與對應的重組模型的計算方法。這個(gè)步驟需要一定的優(yōu)化實(shí)踐經(jīng)驗以達到滿(mǎn)意的效果,對模型讀取效率與運算效率都會(huì )有顯著(zhù)的提高。
2)算法計算向量化
對于算法的向量化的做法就是讓算法的計算能夠使用向量乘加等運算,而特別是在使用神經(jīng)網(wǎng)絡(luò )算法情況下,大量的計算沒(méi)有前后相關(guān)性且執行相類(lèi)似的步驟,所以向量化計算會(huì )對算法有明顯的提升,一般能把算法效率提升三倍左右。
使用NEON指令集的SIMD指令取代ARM通用的SISD指令,是一個(gè)常用的算法向量化方法。在基于A(yíng)RMV7-A和ARMV7-R的體系架構上基本采用了NEON技術(shù),ARMV8也支持并與ARMV7兼容。
以IMX6ULL芯片為例,可以通過(guò)查閱官方的參考手冊查看其N(xiāo)EON相關(guān)信息:

下面舉例說(shuō)明普通的編程寫(xiě)法與NEON instrinsics編程、NEON assembly編程區別。以下為普通的編程寫(xiě)法:

以下為轉化為NEON instrinsics的編程:

以為轉為NEON assembly的編程:

一般NEON instrinsics已經(jīng)能做到三倍的提速效果,而NEON assembly效果會(huì )更好一些。但是程序向量化需要特殊訪(fǎng)存規則,如果不符合則會(huì )對導致提速效果大打折扣。
訪(fǎng)存特征詳細分類(lèi)如表所示:

評論