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