美颜磨皮SDK中关于磨皮算法的大致实现流程

[复制链接]
查看: 2716|回复: 0
发表于 2019-10-9 14:58:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
就现在互联网各行业中的发展现状来看,大部分带有娱乐社交属性的平台都少不了美颜磨皮SDK,为什么这么说呢,因为无论是拍照还是拍视频,开启美颜磨皮是非常必要的,毕竟今日不同以往大家对美颜需求也越来越高。
在美颜磨皮SDK中,磨皮算法的实现可以说是比较重要的,其中包含两个主要的部分:滤波和肤色区域检测。
美颜sdk7.png
其中,滤波部分常用到3种算法。
1.高反差减弱
高反差保留算法,指通过高反差来得到皮肤细节的模板,根据模板中的细节区域(如皮肤中的部分斑点区域),从而将原图对应区域进行颜色减淡的处理,从而达到斑点部位的弱化,从而实现美颜磨皮的效果。这一算法在保留了人脸面部纹理的同时,可以减弱皮肤瑕疵颜色,使皮肤呈现自然光滑的效果。
2.保边滤波算法
指通过一些具有保留边远能力的滤波器,从而将图像磨平以达到皮肤光滑的目的。主要有导向滤波器、双边滤波器、局部均值滤波器、表面模糊滤波器等。这一算法可以使人脸皮肤区域平滑,但是后期需要添加一些算法来保留人脸面部的自然纹理。
3.其他算法
主要是一些未知的算法,在此就不多作赘述。
皮肤检测主要是基于颜色空间的皮肤颜色统计方法
开发美颜磨皮SDK时,使用该方法具备较高的误检率,这样一来就不会容易出现将其余区域肤色判定为人类肤色,从而导致非皮肤区域图像被滤波器平滑掉。
美颜sdk15.png
关于磨皮算法的部分参考代码如下所示
defget_unet_256(input_shape=(256, 256, 3),
                num_classes=1):
   inputs = Input(shape=input_shape)
   # 256
   down0 = Conv2D(32, (3, 3),padding='same')(inputs)
   down0 = BatchNormalization()(down0)
   down0 = Activation('relu')(down0)
   down0 = Conv2D(32, (3, 3),padding='same')(down0)
   down0 = BatchNormalization()(down0)
   down0 = Activation('relu')(down0)
   down0_pool = MaxPooling2D((2, 2),strides=(2, 2))(down0)
   # 128
……
   center = Conv2D(1024, (3, 3),padding='same')(down4_pool)
   center = BatchNormalization()(center)
   center = Activation('relu')(center)
   center = Conv2D(1024, (3, 3),padding='same')(center)
   center = BatchNormalization()(center)
   center = Activation('relu')(center)
      # center
美颜sdk21.png
以上就是美颜磨皮SDK在开发过程中的简单实现流程,可见要想实现高级自然的磨皮效果,还是需要借助一定的算法实现的,所以还是要找专业的美颜磨皮SDK服务商,从而确保接入不同类型的APP后可以顺利在前端实现应有的功能。
声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
 
工作时间:
8:00-18:00
客服热线:
15368564009
客服微信