结合当前用户的需求和喜好,为了有效抓住用户增强用户留存率,除了现有的功能玩法以外,还有非常重要的一点:是否具备高清画质的美型功能。而美型功能又是基于萌颜SDK实现的, 我们可以将萌颜分为两部分:一是人脸五官自动修正,二是人脸轮廓自动调整。
人脸五官自动修正:如自动调整眼睛大小、修正鼻子形状、调整嘴巴大小、形状等。
人脸轮廓自动调整:对人脸大小,胖瘦进行自动调整。
智能萌颜算法逻辑
1.构建平均脸
针对男女分别构建正脸平均脸
2.性别识别
将用户的人像照片进行性别识别,从而根据识别结果分别选择男女平均脸数据。(部分代码,仅供参考)
defweight_variable(shape,name):
returntf.Variable(tf.truncated_normal(shape, stddev = 0.1),name=name)
defbias_variable(shape,name):
return tf.Variable(tf.constant(0.1, shape =shape),name=name)
defconv2d(x,w,padding="SAME"):
if padding=="SAME" :
return tf.nn.conv2d(x, w, strides =[1,1,1,1], padding = "SAME")
else:
return tf.nn.conv2d(x, w, strides =[1,1,1,1], padding = "VALID")
def max_pool(x, kSize,Strides):
return tf.nn.max_pool(x, ksize =[1,kSize,kSize,1],strides = [1,Strides,Strides,1], padding ="SAME")
def compute_cost(Z3, Y):
3.将照片中的人脸映射到平均脸
根据用户照片中的人脸关键点和平均脸的人脸关键点,再加上对应的映射算法,将用户照片对齐到平均脸中。
4.计算用户人脸和平均脸的距离
根据人脸旋转角度对距离进行加权处理,以此来适应各种角度的用户人脸照片。
图片转自网络,侵删
5对用户人脸进行不同程度变形,实现智能美型
根据D对用户人脸进行不同程度的变形,得到智能美型结果,此处变形可以使用MLS、三角网格变形等等。(部分代码,仅供参考)
static voidsetSrcPoints(const vector<PointD> &qsrc, vector<PointD>&newDotL, int* nPoint) {
*nPoint = qsrc.size();
newDotL.clear();
newDotL.reserve(*nPoint);
for (size_t i = 0; i < qsrc.size(); i++)
newDotL.push_back(qsrc);
}
static voidsetDstPoints(const vector<PointD> &qdst,vector<PointD>&oldDotL, int* nPoint) {
*nPoint = qdst.size();
oldDotL.clear();
oldDotL.reserve(*nPoint);
for (size_t i = 0; i < qdst.size(); i++)oldDotL.push_back(qdst);
}
static doublebilinear_interp(double x, double y, double v11, double v12,
double v21,double v22) {
return (v11 * (1 - y) + v12 * y) * (1 - x)+ (v21 * (1 - y) + v22 * y) * x;
}
萌颜SDK可应用的场景
1.美颜相机
结合当前年轻用户需求,可直接接入美颜相机app中,不仅可以实现一键智能美型,还可以使用更多萌颜动态贴纸,从而有效满足用户需求。
2.直播
为了有效配合直播平台用户需求,具备高质量的美型功能是每一个直播平台都非常看重的,所以接入萌颜SDK不仅可以满足主播变美的需求,还可以给用户带来优质的观看体验。
3.短视频
在现有的短视频拍摄玩法上,为用户提供智能美型功能,从而打造完美自然的拍摄效果,提高视频整体质量,提升用户体验的同时也加强了平台用户留存率。