摘要:引言使用了免費(fèi)的人臉識(shí)別算法,感覺(jué)還是很不錯(cuò)的,但是初次接觸的話會(huì)對(duì)一些接口的參數(shù)有些疑問(wèn)的。這里分享一下我對(duì)一些參數(shù)的驗(yàn)證結(jié)果這里以版本為例,基本一樣,希望能更好的幫助各位接入虹軟的人臉識(shí)別算法。
引言
使用了免費(fèi)的人臉識(shí)別算法,感覺(jué)還是很不錯(cuò)的,但是初次接觸的話會(huì)對(duì)一些接口的參數(shù)有些疑問(wèn)的。這里分享一下我對(duì)一些參數(shù)的驗(yàn)證結(jié)果(這里以windows版本為例,linux、android基本一樣),希望能更好的幫助各位接入虹軟的人臉識(shí)別算法。
本文主要分析以下兩個(gè)參數(shù):
? detectFaceMaxNum
? combinedMask
detectMode參數(shù)介紹
在引擎初始化的時(shí)候,需要選擇video或image模式,在接口頭文件中定義了宏ASF_DETECT_MODE_VIDEO、ASF_DETECT_MODE_IMAGE,根據(jù)需要的模式傳入即可。video模式對(duì)應(yīng)人臉追蹤算法(FT),image模式對(duì)應(yīng)人臉檢測(cè)算法(FD),關(guān)于FT/FD算法的區(qū)別可以參考虹軟AI 人臉識(shí)別SDK接入 — 參數(shù)優(yōu)化篇(1) 通過(guò)測(cè)試數(shù)據(jù),個(gè)人感覺(jué)image模式下的數(shù)據(jù)更能準(zhǔn)確的體現(xiàn)算法的能力,下面關(guān)于其他參數(shù)的介紹均在image模式下進(jìn)行;
測(cè)試機(jī)器硬件配置:
? 處理器:Intel(R)Corei5-7400 CPU @ 3.00GHZ 300GHZ
? 安裝內(nèi)存(RAM):16.00GB(15.9GB可用)
? 系統(tǒng)類型:win-10 64位操作系統(tǒng)
參數(shù)介紹:
1.1 推薦值
初始化接口中detectFaceMaxNum參數(shù)的設(shè)置決定ASFDetectFaces(FT/FD)接口單幀圖片允許檢測(cè)的最大人臉數(shù),官網(wǎng)推薦最大值不超過(guò)50,雖然可以設(shè)置更大的值,但是沒(méi)有必要,下面數(shù)據(jù)可以說(shuō)明;
1.2 檢測(cè)到的人臉數(shù)對(duì)應(yīng)的性能消耗
測(cè)試用例:
1280*720像素圖像數(shù)據(jù);
循環(huán)檢測(cè)100次取平均值;
? ASF_DETECT_MODE_IMAGE模式
? ASF_DETECT_MODE_VIDEO模式
通過(guò)以上數(shù)據(jù)可以看出,image模式下圖片中人臉數(shù)越多單次檢測(cè)的耗時(shí)會(huì)越長(zhǎng),video模式下圖片中人臉數(shù)越多單次檢測(cè)的耗時(shí)也會(huì)有略微增加。綜上,detectFaceMaxNum參數(shù)的設(shè)置多少并不影響內(nèi)存的分配以及性能的消耗,僅是設(shè)置算法單幀檢測(cè)的最大人臉數(shù)。
2.1 內(nèi)存占用
combinedMask參數(shù)是初始化引擎時(shí)傳入不同屬性功能組合,傳入的屬性越多引擎分配的內(nèi)存越大。實(shí)際應(yīng)用情況下,傳入必需的屬性組合即可,傳入多余屬性只會(huì)占用內(nèi)存。
下表數(shù)據(jù)是在測(cè)試其他參數(shù)固定,只修改mask參數(shù)時(shí)初始化接口內(nèi)存的占用情況(數(shù)據(jù)取自windows任務(wù)管理器):
ASFInitEngine(ASF_DETECT_MODE_IMAGE, ASF_OP_0_ONLY, 32, 5, combinedMask, &handle);
2.2 ASFInitEngine接口與ASFProcess接口中combinedMask參數(shù)的關(guān)系
官方文檔對(duì)ASFProcess接口中combinedMask參數(shù)的解釋:
初始化中參數(shù)combinedMask與ASF_AGE | ASF_GENDER | ASF_FACE3DANGLE | ASF_LIVENESS交集的子集;
舉例說(shuō)明:
例1:ASFInitEngine接口中傳入全屬性,則ASFProcess接口可以傳入ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE、 ASF_LIVENESS四種屬性的任意組合。
例2:ASFInitEngine接口中傳入ASF_FACE_DETECT | ASF_FACERECOGNITION | ASF_AGE | ASF_GENDER ,則ASFProcess接口只能傳入ASF_AGE、 ASF_GENDER兩種屬性的任意組合。
2.3 cpu占用
cpu占用受設(shè)備以及測(cè)試條件影響比較大,根據(jù)使用情況ASF_AGE | ASF_GENDER | ASF_FACE3DANGLE對(duì)應(yīng)的算法對(duì)cpu的消耗是比較少的,但ASF_LIVENESS是比較消耗cpu資源的,需要根據(jù)自身設(shè)備做對(duì)應(yīng)處理。
2.4 ASFProcess接口不同屬性的性能
測(cè)試用例:
1280*720像素圖像數(shù)據(jù);
循環(huán)檢測(cè)100次取平均值;
測(cè)試代碼:
LARGE_INTEGER litmp; LONGLONG QPart = 0, QPart1 = 0, QPart2 = 0; QueryPerformanceFrequency(&litmp); //獲得時(shí)鐘頻率 QPart = litmp.QuadPart; //獲得開(kāi)始時(shí)CPU嘀噠聲 QueryPerformanceCounter(&litmp);//獲得時(shí)鐘初始值 QPart1 = litmp.QuadPart; //這里要計(jì)算的的代碼執(zhí)行的時(shí)間 for (int i = 0; i<100; i++) { res = ASFProcess(handle, cutImg1->width, cutImg1->height, ASVL_PAF_RGB24_B8G8R8, (MUInt8*)cutImg1->imageData, &detectedFaces1, processMask); } QueryPerformanceCounter(&litmp); //獲得時(shí)鐘終止值 QPart2 = litmp.QuadPart; //計(jì)算時(shí)間差(ms) double time = (double)(QPart2 - QPart1) / (double)QPart * 1000; printf("time = %lf ", time); 測(cè)試結(jié)果
綜上所述,年齡、性別、3d角度的檢測(cè)是非常快的,活體檢測(cè)相對(duì)較慢。在實(shí)際應(yīng)用中僅需要檢測(cè)ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE的話,可以放在主線程中處理,但如果需要檢測(cè)ASF_LIVENESS建議單開(kāi)線程去處理,這樣在video模式下不會(huì)出現(xiàn)卡幀的情況,界面顯示比較流暢。
如果想要下載虹軟sdk可以到:https://ai.arcsoft.com.cn/pro...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/20082.html
閱讀 780·2023-04-26 00:13
閱讀 2720·2021-11-23 10:08
閱讀 2389·2021-09-01 10:41
閱讀 2088·2021-08-27 16:25
閱讀 4135·2021-07-30 15:14
閱讀 2338·2019-08-30 15:54
閱讀 838·2019-08-29 16:22
閱讀 2718·2019-08-26 12:13