您好,登錄后才能下訂單哦!
使用了免費的人臉識別算法,感覺還是很不錯的,但是初次接觸的話會對一些接口的參數(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ù)更能準確的體現(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)
1.1 推薦值
初始化接口中detectFaceMaxNum參數(shù)的設(shè)置決定ASFDetectFaces(FT/FD)接口單幀圖片允許檢測的最大人臉數(shù),官網(wǎng)推薦最大值不超過50,雖然可以設(shè)置更大的值,但是沒有必要,下面數(shù)據(jù)可以說明;
1.2 檢測到的人臉數(shù)對應(yīng)的性能消耗
測試用例:
通過以上數(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接口不同屬性的性能
測試用例:
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\n", time);
測試結(jié)果
綜上所述,年齡、性別、3d角度的檢測是非??斓模铙w檢測相對較慢。在實際應(yīng)用中僅需要檢測ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE的話,可以放在主線程中處理,但如果需要檢測ASF_LIVENESS建議單開線程去處理,這樣在video模式下不會出現(xiàn)卡幀的情況,界面顯示比較流暢。
如果想要下載虹軟sdk可以到:
https://ai.arcsoft.com.cn/product/arcface.html?utm_source=it&utm_medium=referral
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。