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