閱讀578 返回首頁    go 技術社區[雲棲]


【短視頻SDK】如何開啟人臉識別做到像faceu一樣的人臉動圖效果?如何集成第三方人臉識別庫?

現如今短視頻應用沒個人臉識別都不好意思說自己是做短視頻的,阿裏雲深知這個痛點,花了大力氣來完成人臉識別的開發,在現在第三方廠家人臉識別都賣幾十萬的市價基礎上免費阿裏視頻雲團隊做了一個不算艱難的決定.免費!免費!免費!

短視頻SDK目前的人臉識別提供兩種方案,一種是直接使用短視頻的SDK內部的人臉識別,一種是購買第三方的人臉識別來集成自SDK,本文將會分別講解這兩種方式的集成.

先來看看我們實現的人臉動圖的效果:

人臉動圖是什麼?

現在市麵上看到的人臉動圖效果在技術上我們通俗的講分為幾個部分:
視頻采集--->人臉識別根據視頻數據實時返回人臉關鍵點數據--->動圖根據人臉關鍵點的位置實時渲染進視頻.
(基礎講解不糾結編碼部分)
於是人臉關鍵點的獲取就非常重要了,現在很多廠商都比誰的人臉關鍵點多,什麼108個點,68個點之類。下麵我們來講如何對接人臉識別庫來達到實現人臉動圖的目的。

對接方式①:對接第三方人臉識別庫來集成人臉識別

以安卓為例我們來演示如何對接第三方人臉識別庫,將人臉點數據給相應的接口目前SDK接受傳入左眼,右眼,嘴巴三個點的坐標到SDK,且順序不能錯.下麵來具體說明接入步驟.讓開發者對其接入有一個基本的了解.

1.本文不演示如何獲取商湯的點數據,用戶隻要購買了商湯SDK的demo就有演示demo獲取人臉關鍵點
2. 初始化錄製---參考官網文檔初始化錄製部分
3. 在onFrameBack回調中設置人臉關鍵點
    recorder.setOnFrameCallback(new OnFrameCallBack() {
            @Override
            public void onFrameBack(byte[] bytes, int width, int height, Camera.CameraInfo info) {
                int orient;
                //第三方人臉識別庫獲取點數據,然後轉化為SDK接收的
        //接收人臉關鍵點數據將人臉點數據給setFaces接口目前SDK接受傳入左眼,右眼,嘴巴三個點的坐標到SDK
                if (effect != null) {
                    recorder.setFaces(point);
                }
       }
    }
4.添加動圖
      EffectPaster effect = new EffectPaster(path);
      recorder.addPaster(effect);

對接方式②:內置人臉識別

目前短視頻SDK內部本身有自主研發的人臉識別庫,對於用戶來說隻要導入相對應的人臉識別庫libaliface_jni.so和libAliFaceAlignmentModule.so,然後開啟人臉識別並加載人臉識別模型即可.具體流程參考如下步驟:

1.初始化錄製---參考官網文檔初始化錄製部分
2.開啟內置人臉識別
recorder.needFaceTrackInternal(true);
3.解壓人臉識別模型到指定路徑---需要在子線程中做.
demo中人臉模型存在assets/AliyunDemo/model.zip裏麵,解壓model.zip到指定路徑.
人臉識別模型可以理解為
4.人臉識別模型解壓成功之後設置人臉識別模型文件夾路徑
recorder.setFaceTrackInternalModelPath(path + "/model");

最後更新:2017-09-06 13:03:25

  上一篇:go  現階段智能硬件所收集的都是無用數據?
  下一篇:go  手表和灰機是幾個意思——魅族的硬派機友