阅读578 返回首页    go 阿里云 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  手表和灰机是几个意思——魅族的硬派机友