帮助与文档
热搜关键词:美颜SDK萌颜SDK视频美颜SDK   
美颜sdk中的动态贴纸特效是如何实现的?
发布来源:美狐美颜    Date:2020-05-18 10:53:54

前面的文章中,我们讲了很多关于人脸检测在美颜sdk中所发挥的作用,称它为实现美颜其它功能的基础。今天我们再来讲讲美颜sdk中的动态贴纸特效是如何实现的。

一、总概

静态/动态贴纸特效目前几乎已经是所有图像视频处理类app(像是直播app)的必须功能了,这个功能看起来复杂,实际上理解起来并不难。小编会从静态贴纸讲起,因为动态贴纸实际上旧是静态贴纸的循环播放而已。它的算法基本可以概括为两点:人脸检测与关键点识别、贴纸融合。

二、人脸检测与关键点识别

在检测到人脸的情况下获取到必须的关键点,这样才能准确的打上贴纸。在现有的大部分美颜sdk中,其贴纸基本上都是数十个人脸特征点的模板配置,也就是说,完成一个贴纸效果,需要数十个点位信息的支持。不过,如果以mtcnn(一种人脸检测中应用较广的算法)为例,最少可以降低到五个点位信息。关于mtcnn牵扯到太多的步骤,这里为了直观些,仅仅给出网络结构示意图,如图所示。

动态贴纸

对于上述的结构示意图,分别为三个阶段:

1、使用P-Net是一个全卷积网络,用来生成候选窗和边框回归向量。使用Bounding box regression的方法来校正这些候选窗,使用非极大值抑制合并重叠的候选框。

2、使用N-Net改善候选窗,将通过P-Net的候选窗输入R-Net中,拒绝掉大部分false的窗口,继续使用Bounding box regression和NMS合并。

3、使用O-Net输出最终的人脸框和特征点位置。和第二步类似,但是不同的是生成五个特征点位置。

经过相关代码处理后,就能拿到五个人脸特征点。

三、贴纸融合

有了这些特征点后,如何将这些静态/动态贴纸融合到恰当的位置?

1、首先,计算基准点。接着,从上个步骤的得到的五个特征点中,进一步计算得到三个关键点A、B、C。然后,将A设为左眼中心点,B设为右眼中心点,C设为嘴巴水平中心点。对于一张人脸,这三个点变化比较小,同时又可以覆盖整个脸部区域,因此,这三个点非常具有代表性。

2、选取N份五官端正的人脸图,按照上述步骤中计算出的三个人脸关键位置A、B、C,分别记录其位置信息,然后算出平均值。

3、选定美颜sdk中所有可以应用的贴纸,将贴纸放到最符合平均值的模特脸上合适的位置,然后保存这些贴纸为各类模板,这样,模板就制作完成了。

4、对于任意一张人脸图像,先使用Mtcnn算法得到人脸的5个关键点,计算出人脸关键点A0,B0,C0,接着,利用防射变换原理,将A0、B0、C0映射到A,B,C三点,最后将用户照片映射到静态/动态贴纸模板中,根据贴纸模板像素的透明度进行alpha混合,即可得到最终效果。

以上,就是美颜sdk中的静态/动态贴纸特效实现过程,如果您对美颜sdk开发感兴趣,欢迎咨询官方客服。

声明:本文由美狐原创,未经允许禁止转载,谢谢合作。

本文标签: 动态贴纸
相关阅读
13188947262