999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Neon指令的人臉比對的算法優化方法

2020-07-08 09:46:02朱明李志國
中國科技縱橫 2020年6期
關鍵詞:人臉識別

朱明 李志國

摘 要:對智慧社區建設中占重要地位的安防體系建設進行了深入研究,給出了一種基于Neon指令技術的人臉比對算法優化方法。利用Neon指令集的并行處理優勢,在嵌入式ARM平臺下,對人臉比對算法進行了效率優化,實現了前端攝像機中人臉識別過程的實時性。采用海思平臺Hi3519進行測試驗證,結果表明該方法是一種行之有效的方法,有效地提升了人臉比對算法的性能。

關鍵詞:人臉識別;NEON;神經網絡

中圖分類號:TP391 文獻標識碼:A 文章編號:1671-2064(2020)06-0055-02

0 引言

智慧社區作為智慧城市建設的一部分,近年來日益受到市場和行業的關注。在智慧社區建設中,安防體系建設又是重中之重。門禁作為社區安防第一線,其重要性不言而喻。回顧門禁系統的發展歷程中,比門禁卡更便利的是指紋識別,而比指紋識別更智能的當屬刷臉門禁了。而且人臉識別具有唯一性和不易復制性,相比門禁卡和指紋識別,它的造假成本要高出許多,具有更好的安全性。人臉識別就是將待識別的人臉特征與已得到的人臉特征模板進行比較,根據相似程度對人臉的身份信息進行判斷。這一過程又分為兩類:一類是確認,是一對一進行圖像比較的過程,另一類是辨認,是一對多進行圖像匹配對比的過程。人臉識別門禁系統就屬于辨認過程,比如社區3000人進行了注冊,則刷臉過程就是1∶3000的圖片匹配對比的辨認過程。因此想要在應用中注冊的人臉身份更多,必須保證單次匹配對比過程的速度足夠快。然而嵌入式ARM平臺下的硬件資源一般有限,提升單次匹配對比過程的效率也就顯得十分重要。因此針對嵌入式ARM平臺進行圖像算法優化研究非常有意義。本文就給出了一種基于Neon指令技術的人臉比對算法優化方法[1]。

1人臉比對算法

“人臉比對(Face Compare)”是衡量兩個人臉之間相似度的算法。人臉比對算法的輸入是兩個人臉特征,即通過算法對人臉圖像進行的特征提取,一般是轉化的一串固定長度的數值。人臉比對算法的輸出是兩個特征之間的相似度,一般為余弦距離或歐氏距離的相似度。通過相似度值與設定閾值的比較就可以實現人臉識別,包括一對一的人臉驗證和一對多人臉識別[2]。

1.1余弦相似度

余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫“余弦相似性”。我們知道,對于兩個向量,如果他們之間的夾角越小,那么我們認為這兩個向量是越相似的。余弦相似性就是利用了這個理論思想。它通過計算兩個向量的夾角的余弦值來衡量向量之間的相似度值。余弦相似度計算公式如下:

分子為向量A與向量B的點乘,分母為所有向量維度值的平方相加后開方的叉乘。余弦相似度的取值為[0,1],值越大表示越相似。如果再將分母進行歸一化處理為1,則余弦相似度就可以認為是向量A與向量B的點乘結果。

1.2余弦相似度的函數實現

在實際項目中,利用余弦相似度的分值即可進行人臉識別比對,其函數主要實現如下:

for(inti=0;i

{

fcos_dist+=pf1[i]*pf2[i];

}

其中fcos_dist變量即為計算得到的余弦相似度分值,pf1和pf2是指向兩個特征向量的指針,N為特征向量的長度,在實際項目應用中,一般取N=512。

2 ARM NEON技術

圖1 Q寄存器與D寄存器映射關系

ARM NEON就是一種基于SIMD思想的ARM技術,從ARMv7開始被采用,相比于ARMv6或之前的架構,NEON結合了64-bit和128-bit的SIMD指令集,提供128-bit寬的向量運算(vector operations)。NEON的寄存器與VFP是共享的,而且還具有自己獨立的執行流水線。

2.1 NEON寄存器

NEON寄存器共有16個128位的向量寄存器構成。而32個雙精度浮點寄存器共享了這16個寄存器,32個單精度浮點寄存器共享了前8個寄存器。其中,單精度寄存器用S0~S31表示,雙精度寄存器用D0~D31來表示,而128位的SIMD寄存器則用Q0~Q15來表示。圖1列舉了Q寄存器與D寄存器的映射關系。

2.2 NEON指令集

NEON指令按照操作數類型可以分為正常指令、寬指令、窄指令、飽和指令、長指令。

正常指令:生成大小相同且類型通常與操作數向量相同的結果向量,如VADD指令。

長指令:對雙字向量操作數執行運算,生產四字向量結果。L標記,如VMOVL。

寬指令:一個雙字向量操作數和一個四字向量操作數執行運算,生成四字向量結果。W標記,如VADDW。

窄指令:四字向量操作數執行運算,并生成雙字向量結果。N標記,如VMOVN。

飽和指令:當超過數據類型指定到范圍則自動限制在該范圍內。Q標記,如VQSHRUN。

NEON指令按照作用可以分為:加載數據、存儲數據、加減乘除運算、邏輯AND/OR/XOR運算、比較大小運算等。

2.3 NEON編程基礎

在NEON硬件寄存器及其指令集基礎上,通過NEON編程的熟練應用,能夠對算法代碼進行性能優化,從而實現性能的大幅提升,通常使用NEON主要有四種方法:NEON優化庫、向量化編譯器、NEON內聯函數、NEON匯編指令。

根據優化程度需求不同,第4種最為底層,若熟練掌握效果最佳,一般也會配合第3種一起使用。分別簡單介紹如下:

第1種方法NEON優化庫可以在程序中直接使用,一般OpenMax DL和Ne10優化庫中包含很多算法函數的優化實現,供優化人員選用。

第2種方法主要是編譯器的向量優化選項,通常在GCC編譯器選項中加入向量化表示,有利于C代碼生成NEON代碼,如-ftree-vectorize。

第3種方法提供了一個連接NEON操作的C函數接口,編譯器會自動生成相關的NEON指令。

第4種方法包括兩種寫法,如純匯編文件(assembly文件,后綴為“.s”或“.S”)和內聯匯編(即在C代碼中嵌入匯編,調用簡單,無需手動存儲寄存器)。

本文針對人臉比對算法的優化,主要采用第3種方法。

2.4 NEON優化技巧

掌握ARM NEON寄存器及其指令集以后,就可以進行算法代碼的性能優化了,一般情況下,通過細致的優化,能夠獲得幾倍甚至十幾倍以上的性能提升。當然這也需要一定的經驗積累,下面簡單介紹幾點技巧[3]。

(1)要去除數據依賴,不要將當前指令的目的寄存器作為下一條指令的源寄存器。因為ARM架構采用的是多級流水線技術,如果下一條指令的源寄存器是當前指令的目的寄存器,就需要當前指令執行完之后,下一條指令才能取指執行,這樣會產生很大的延遲,影響性能。

(2)要減少分支跳轉,ARM處理器中廣泛使用分支預測技術。但是一旦分支預測失敗,性能就會損失很大。

(3)要盡量使用預載指令PLD,它允許處理器告知內存系統在不久的將來會從指定地址讀取數據,若數據提取加載到cache中,將會提高cache命中率,從而提升性能。

(4)要關注指令周期延遲,比如對于乘法指令,指令周期比較長,盡量不要立即使用指令計算結果,否則會等待耗時。

(5)要保證數據運算盡量在NEON寄存器中,避免在ARM寄存器和NEON寄存器之間的運算。

2.5 人臉比對函數的NEON優化

本文主要涉及ARM NEON技術的優化內容是人臉識別算法中的人臉比對函數,由前面介紹內容可知,我們所使用的人臉比對函數的核心實現為余弦相似度計算,主要為乘加求和計算[4]。根據余弦相似的函數實現,可以進行打包存取和打包計算,同時利用ARM NEON并行指令,實現算法并行加速,主要代碼如下:

for(inti=0;i

{

float32x4_t? pf1_t=vld1q_f32(pf1);

float32x4_t? pf2_t=vld1q_f32(pf2);

float32x4_t? pf1n_t=vld1q_f32(pf1+4);

float32x4_t? pf2n_t=vld1q_f32(pf2+4);

fcos_dist_t=vmlaq_f32(fcos_dist_t,pf1_t,pf2_t);

fcos_dist_t=vmlaq_f32(fcos_dist_t,pf1n_t,pf2n_t);

pf1+=8;

pf2+=8;

}

float32x2_t sum_t=vpadd_f32(vget_low_f32(fcos_dist_t),vget_high_f32(fcos_dist_t));

sum_t=vpadd_f32(sum_t,sum_t);

fcos_dist+=vget_lane_f32(sum_t,0);

其中,float32x4_t數據類型是一個包含四條向量線的向量,每條向量線包含一個32位浮點數。

vld1q_f32指令(float32x4_t vld1q_f32(_transfersize(4) float32_t const*ptr))是加載并存儲4個32位浮點數元素的單個向量。

vmlaq_f32指令(float32x4_t vmlaq_f32(float32x4_t a, float32x4_t b,float32x4_t c))是兩個向量元素相乘并將結果進行累加(即Vres[i]=Va[i]+Vb[i]*Vc[i] )。

vget_low_f32指令和vget_high_f32指令是將一個128 位向量拆分為2個64位向量。

vpadd_f32指令是兩個向量元素分別按對相加運算。

vget_lane_f32指令(float32_t vget_lane_f32(float32x2_t vec,_constrange(0,1) int lane))是從向量中提取單個元素。

綜合上述指令并按上述函數流程,可以實現人臉比對函數的并行優化,大幅提升了算法效率,提升人臉識別相關產品的性能指標及客戶體驗。

3 測試結果分析

本文算法優化評測的嵌入式ARM平臺是海思Hi3519V100,該芯片處理器內核包括A7@800MHz和A17@1.2GHz,支持NEON加速引擎,集成FPU處理單元。

本文在算法優化評測中,所用的特征向量長度為512維,主要驗證人臉比對函數在嵌入式ARM平臺下優化前后的效率情況,其單位為毫秒(ms)。具體測試數據如表1所示。

結果表明,應用該方法可以有效的提升ARM平臺下人臉比對函數的效率,即近3倍左右的提升。此方法適用于各種維度的人臉特征向量的人臉比對過程,特征向量越長,其優越性表現的越明顯。

4 結論

本文針對人臉識別算法在嵌入式ARM平臺的應用,研究了基于NEON指令的人臉比對函數的優化方法,利用NEON技術進行并行存取及并行計算,對人臉比對函數的計算過程進行了深入優化,并以海思平臺Hi3519為例進行驗證,測試結果表明該方法是一種行之有效的方法,較好地解決了人臉識別算法在嵌入式ARM平臺中遇到的性能困難,有效地提升了人臉比對函數的性能,及時完成人臉對比功能,特別是注冊人臉數N較大的時候,即需要進行N次人臉比對時,效果更加明顯,從而實現了人臉識別算法在嵌入式ARM平臺應用的實時性。

參考文獻

[1] 詹森,D.巴克斯.ARM嵌入式系統編程與優化[M].北京:機械工業出版社,2017.

[2] 王文峰.人臉識別原理與實踐[M].北京:電子工業出版社,2018.

[3] 王天慶.Python人臉識別:從入門到工程實踐[M].北京:機械工業出版社,2019.

[4] 周立功.ARM嵌入式系統基礎教程(第2版)[M].北京:北京航空航天大學出版社,2019.

猜你喜歡
人臉識別
人臉識別 等
作文中學版(2022年1期)2022-04-14 08:00:34
揭開人臉識別的神秘面紗
學生天地(2020年31期)2020-06-01 02:32:06
人臉識別技術的基本原理與應用
電子制作(2019年14期)2019-08-20 05:43:34
人臉識別技術在高速公路打逃中的應用探討
基于(2D)2PCA-LBP 的人臉識別方法的研究
電子制作(2017年17期)2017-12-18 06:40:55
淺談人臉識別技術
人臉識別在高校安全防范中的應用
電子制作(2017年1期)2017-05-17 03:54:46
巡演完美收官 英飛拓引領人臉識別新潮流
人臉識別在Android平臺下的研究與實現
基于Metaface字典學習與核稀疏表示的人臉識別方法
主站蜘蛛池模板: 国产成人av一区二区三区| 亚洲视频四区| 色有码无码视频| 亚洲无码37.| 中字无码av在线电影| 亚洲人在线| 国产精彩视频在线观看| 国产成人综合久久精品下载| 九九热这里只有国产精品| 国产乱人免费视频| 国产无码网站在线观看| 爆乳熟妇一区二区三区| 在线精品欧美日韩| 男女性午夜福利网站| 久久96热在精品国产高清| 免费看久久精品99| 欧美日韩国产在线人| 日本免费一区视频| 国产无吗一区二区三区在线欢| 超清无码熟妇人妻AV在线绿巨人| 国产精品片在线观看手机版 | 干中文字幕| 成色7777精品在线| 自拍偷拍欧美| 91精品国产综合久久不国产大片| 国产日产欧美精品| 国产高清免费午夜在线视频| 国产麻豆精品在线观看| 欧美亚洲日韩不卡在线在线观看| 在线免费看片a| 中文字幕伦视频| 中文字幕人妻av一区二区| 国产成人高清精品免费5388| 好紧好深好大乳无码中文字幕| 亚洲综合色婷婷| 亚洲愉拍一区二区精品| 亚洲日韩第九十九页| 色悠久久久久久久综合网伊人| 亚洲欧洲日韩综合色天使| 亚洲狼网站狼狼鲁亚洲下载| 青青草原国产精品啪啪视频| 精品久久蜜桃| 欧美激情视频二区三区| 国产国产人成免费视频77777 | 久久香蕉欧美精品| 91福利片| a欧美在线| 四虎成人免费毛片| 久久永久免费人妻精品| 国产欧美日韩va另类在线播放| 日韩在线播放中文字幕| 亚洲综合精品香蕉久久网| 国产欧美日韩一区二区视频在线| 国产精品区视频中文字幕| 91欧美在线| 亚洲欧洲美色一区二区三区| 亚洲六月丁香六月婷婷蜜芽| 欧美第一页在线| 日本人妻一区二区三区不卡影院| 午夜精品区| 久久五月天综合| 99久久国产自偷自偷免费一区| 粗大猛烈进出高潮视频无码| 国产精品成人免费视频99| 久久国产精品国产自线拍| 69国产精品视频免费| 欧美精品亚洲精品日韩专区| 日韩精品资源| 最新国产高清在线| 亚洲美女一区二区三区| 成人在线视频一区| 26uuu国产精品视频| 国产区免费| 国产97公开成人免费视频| 中文国产成人精品久久一| 中文字幕在线观看日本| 久久九九热视频| 一本视频精品中文字幕| 久久久久国产精品嫩草影院| 中文字幕中文字字幕码一二区| 久久婷婷色综合老司机| 大陆精大陆国产国语精品1024|