使用了免費的人臉識別算法,感受仍是很不錯的,可是初次接觸的話會對一些接口的參數有些疑問的。這裏分享一下我對一些參數的驗證結果(這裏以windows版本爲例,linux、android基本同樣),但願能更好的幫助各位接入虹軟的人臉識別算法。html
本文主要分析如下兩個參數:linux
在引擎初始化的時候,須要選擇video
或image
模式,在接口頭文件中定義了宏ASF_DETECT_MODE_VIDEO
、ASF_DETECT_MODE_IMAGE
,根據須要的模式傳入便可。video
模式對應人臉追蹤算法(FT),image
模式對應人臉檢測算法(FD),關於FT/FD算法的區別能夠參考虹軟AI 人臉識別SDK接入 — 參數優化篇(1) 經過測試數據,我的感受image模式下的數據更能準確的體現算法的能力,下面關於其餘參數的介紹均在image模式下進行;android
1.1 推薦值算法
初始化接口中detectFaceMaxNum參數的設置決定ASFDetectFaces(FT/FD)接口單幀圖片容許檢測的最大人臉數,官網推薦最大值不超過50,雖然能夠設置更大的值,可是沒有必要,下面數據能夠說明;windows
1.2 檢測到的人臉數對應的性能消耗ide
測試用例:性能
經過以上數據能夠看出,image
模式下圖片中人臉數越多單次檢測的耗時會越長,video
模式下圖片中人臉數越多單次檢測的耗時也會有略微增長。綜上,detectFaceMaxNum參數的設置多少並不影響內存的分配以及性能的消耗,僅是設置算法單幀檢測的最大人臉數。測試
2.1 內存佔用優化
combinedMask參數是初始化引擎時傳入不一樣屬性功能組合,傳入的屬性越多引擎分配的內存越大。實際應用狀況下,傳入必需的屬性組合便可,傳入多餘屬性只會佔用內存。spa
下表數據是在測試其餘參數固定,只修改mask參數時初始化接口內存的佔用狀況(數據取自windows任務管理器):
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****接口不一樣屬性的性能
測試用例:
測試代碼:
測試結果:
綜上所述,年齡、性別、3d角度的檢測是很是快的,活體檢測相對較慢。在實際應用中僅須要檢測ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE的話,能夠放在主線程中處理,但若是須要檢測ASF_LIVENESS建議單開線程去處理,這樣在video模式下不會出現卡幀的狀況,界面顯示比較流暢。
https://ai.arcsoft.com.cn/product/arcface.html?utm_source=kyzg&utm_medium=referral