AI美颜磨皮算法目前还没有具体定义,各大公司也都处于摸索阶段,图玩智能科技为企业提供更优质更稳定的美颜产品及服务,欢迎随时咨询www.toivan.com.今天先看一下磨皮算法的一般流程:
这个流程图是一般传统的磨皮算法流程图,而本文将基于这个流程图,结合深度学习做一些改进。
在这个流程图中,主要的模块有两个:滤波模块和肤色区域检测模块;
滤波模块中,包含了三种算法:
1,保边滤波器滤波算法
该方法是指通过一些具有保留边缘的能力的滤波器,来将图像磨平,达到皮肤平滑的目的;
这类滤波器主要有:
①双边滤波器
②导向滤波器
③Surface Blur表面模糊滤波器
④局部均值滤波器
⑤加权最小二乘滤波器(WLS滤波器)
⑥Smart blur等等。
此方法皮肤区域比较平滑,细节较少,需要后期添加细节信息,来保留一些自然的纹理;
2,高反差减弱算法
高反差保留算法是指通过高反差来得到皮肤细节的MASK,根据MASK中细节区域,比如皮肤中的斑点区域位置,将原图对应区域进行颜色减淡处理,以此来达到斑点弱化,美肤的目的;
该方法在保留纹理的同时,减弱了皮肤瑕疵与斑点的颜色,使得皮肤看起来比较光滑自然;
3,其他算法
这里是指一些未知的算法,当然已知的也有,比如:基于保边滤波和高反差的磨皮算法,该方法同时对原图做了1-2步骤,得到一张光滑的滤波图和高反差对应的细节MASK,然后将MASK作为alpha通道,把原图和滤波图进行Alpha融合,达到平滑皮肤的同时,去除斑点,保留纹理的作用;
皮肤区域识别检测模块
目前常用的皮肤检测主要是基于颜色空间的皮肤颜色统计方法;
该方法具有较高的误检率,容易将类肤色判定为肤色,这样就导致了非皮肤区域图像被滤波器平滑掉了,也就是不该磨皮的图像区域被模糊了;
重点来了,下面我们在传统磨皮算法流程中使用深度学习来改进或者提高我们磨皮的质量,比如:使用深度学习进行皮肤区域分割,得到更为精确的皮肤区域,从而使得我们最后的磨皮效果超越传统算法的效果;
下面,我们介绍基于深度学习的皮肤区域分割:
分割的方法有很多,CNN/FCN/UNet/DenseNet等等,这里我们使用UNet进行皮肤分割:
Unet做图像分割,
它最开始的网络模型如下:
这是一个全卷积神经网络,输入和输出都是图像,没有全连接层,较浅的高分辨率层用来解决像素定位的问题,较深的层用来解决像素分类的问题;
左边进行卷积和下采样,同时保留当前结果,右边进行上采样时将上采样结果和左边对应结果进行融合,以此来提高分割效果;
这个网络中左右是不对称的,后来改进的Unet基本上在图像分辨率上呈现出对称的样式,本文这里使用Keras来实现。
大家可以看到,基于颜色空间的传统磨皮算法始终无法精确区分皮肤区域与类肤色区域,因此在头发的地方也做了磨皮操作,导致头发纹理细节丢失,而基于Unet皮肤分割的磨皮算法则可以很好的区分皮肤与头发这种类肤色区域,进而将头发的纹理细节保留,达到该磨皮的地方磨皮,不该磨皮的地方不磨,效果明显优于传统方法。
来源:oschina
链接:https://my.oschina.net/u/4203900/blog/4333477