Android 人臉識別SDK開發

目前咱們的應用內使用了 ArcFace 的人臉檢測功能,其餘的咱們並不瞭解,因此這裏就和你們分享一下咱們的集成過程和一些使用心得 集成 ArcFace FD 的集成過程很是簡單 在 ArcFace FD 的文檔上有說明支持的系統爲 5.0 及以上系統,但其實在 4.4 系統上也是能夠跑的,優化

if (engine == null) { // && Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
    try {
        engine = new AFD_FSDKEngine();
        AFD_FSDKError err = engine.AFD_FSDK_InitialFaceEngine(
                "XXXX",
                "XXXX",
                AFD_FSDKEngine.AFD_OPF_0_HIGHER_EXT, 12, 3);
        if (err.getCode() != 0) {
            engine.AFD_FSDK_UninitialFaceEngine();
            engine = null;
        }
    } catch (Exception e) {
        e.printStackTrace();
        engine = null;
    }
}

我以爲 ArcFace 的優點除了多角度檢測以外,另一個是他的每次檢測並非獨立,即這一次的檢測結果會指導下一次的檢測 (我猜想的->_->) 因此 ArcFace 在檢測到人臉以後,識別的時間會大幅減小,而 Seeta FD 的檢測每次都是獨立的,因此在無人臉的狀況下,Seeta 的檢測速度要快於 ArcFace, 可是檢測到人臉以後,由於應用總體的計算量增長,致使 Seeta 的檢測速度下降的很是明顯,大大慢於 ArcFace, (因此兩者是否是能夠結合一下...)ui

AFD_FSDKError err = engine.AFD_FSDK_StillImageFaceDetection(
        data, width, height, AFD_FSDKEngine.CP_PAF_NV21, result);

優化 不得不說 ArcFace FD 的錯誤率是有待優化的,雖然 ArcFace 沒有提供任何能夠調節的參數,可是仍是能夠稍微優化一下!code

由於從攝像頭出來的 yuv 數據是橫向的,而 ArcFace 只有 AFD_OPF_0_HIGHER_EXT 這個擴展選項,優先檢測 0 度方向, 可是這個方向通常是沒有人臉的,因此若是直接進行檢測,咱們以爲這個可能會增長檢測的錯誤率(猜的->_->),因此處理方法是將 yuv 旋轉到手機豎屏方向(固然這個操做不是直接由 CPU 來處理,而是從 Camera 的外部紋理上開始作操做)再拿去檢測,這樣會減小一點錯誤率(從用戶反饋得出),雖然錯誤率依然很高(特別對於帶柵格的物體)但願虹軟能繼續優化!文檔

另一個是目前 ArcFace 尚未支持 Android 8.x 系統,因此這種狀況下,咱們會啓用備選的其餘方案來進行人臉檢測!get

最後但願虹軟能把 ArcFace 越作越好 _ 由於只有產品足夠好纔會不斷的有人爲你作免費宣傳 查看更多分享戳☞ArcFace Android 人臉檢測集成分享產品

相關文章
相關標籤/搜索