这次接着给大家带来人脸图像相关的分享。 本次我们的分享是为大家所熟悉的人脸美颜算法, 内容将从以下三个方面给大家进行分享:
首先,我们会给大家介绍一下人 脸美颜 到底包含哪些内容? 人 脸 美颜算法包含的内容非常的多, 从我们所熟悉的磨皮 祛斑 算法, 到 大眼瘦脸 算法, 到美 唇 美发, 到我们没有那么熟悉的 妆容迁移 算法, 它包含的内容非常的多。
其次,我们会对前面的这一些算法 所涉及的核心技术给大家做一个简单的介绍。 主要包括图像滤波的技术、 图像变形的技术、 图像分割等技术。
最后,我们会对整体的 美颜 做一个简单的总结。
下面开始我们正式的分享内容。
我们以腾讯出品的天天 P图这样的一个大家广泛使用的一个图像后处理软件来给大家做展示,如下面两幅图:
图1
图2
天天 P图它包含了非常多的美容美妆的操作, 我们可以看到从皮肤脸型等全局的操作, 到眼睛眼皮睫毛嘴唇等局部的操作 以及 到头发等非常复杂的人脸图像的操作等, 都已经被产品广泛的支持。
图1展示的是一个美容的菜单, 我们可以看到它主要包含了以下几个内容; 首先以磨皮美肤 祛斑 , 这是与图像滤波相关的一个算法; 然后是 五官重塑 ,瘦脸瘦身, 这是与图像的几何变形操作有关的一些算法; 当然它还包括了一些淡化 笔、 美肤 笔 等等一些算法, 也 是美容的操作。
我们再看看美妆的操作,如图2。 如果大家听过我以前的一个分享系列内容叫做 Caffe 图像分割实战, 大家应该还记得, 像唇彩染发这样的两个功能, 背后都是图像分割技术 在 进行支持。 当然还包括了一些其他的眉毛粉底睫毛等等一些算法就不再一一介绍。
下面我们首先从 美颜 的 磨皮算法 的核心技术 来给大家进行介绍:
磨皮 的算法现在主要有两种思路:
第一种思路是高反差保留的磨皮算法, 就是来自于国外的一个工程师的算法。 它的特点是图像的细节保留的比较好, 真实感比较强。 所以它带来的缺点就是当皮肤的瑕疵非常多的时候, 算法没有那么强,它无法磨得非常干净。
这一类算法在国内以美颜相机等为代表, 所以这一类算法它追求的是一个真实性。
第二 种思路 是以 保边 滤波器为代表的磨皮算法。 它的特点是皮肤可以 磨 的非常的 平滑 , 非常的干净, 但是它带来的缺点就是无法保留真实感。 也就是说很多的时候经过磨皮之后的图片看起来非常的假、不自然,
这个算法以 B612 、F ace U等APP为代表。
我们以第二种算法, 也就是滤波器的算法, 来给大家做一个详细的原理介绍:
我们选择的 滤波 算法是双边滤波器。 双边滤波器是在图像降噪领域以及图像滤波领域非常非常广泛使用的一个方法。
假设我们的输入的 美颜 的 图是 f,美 颜后的 图也就是我们的 输出图是 g , σr、σd 分别是灰度和空间域的一个控制参数。
首先,我们求出灰度 域 的一个权值矩阵 r, 它是基于像素值 f(i,j)、f(k,l) 来进行计算。
然后,我们计算空间域的一个 权值 参数d, 它就是以像素的具体的坐标 i,k,j,l 来进行计算。
得到了这两个权值矩阵之后, 我们把这两个权值矩阵相乘, 就得到了我们最终的一个权值矩阵w。
得到最终的权值矩阵之后, 我们就可以进行加权平均, 得到了我们最后的一个结果g。?
双边滤波器算法它的特点是它形式比较简单 ,而且,它能够在获得比较好的滤波结果的同时, 还能够保持边缘的锐化。
第二部分我们给大家介绍 塑 形相关的算法 , 塑形相关的算法主要用于大眼瘦以及脸型的变化, 甚至可以拉伸 腿 等等, 这 与ps里面的液化工具相似。
塑形 算法主要也包含两个方面:
第一个是液化 算法。 这是一个比较经典的 I nter active Image warping, 这是来自于国外的一个硕士论文。
第二个是 Moving Least Squares 算法。 这是基于 关键点 加上最小二乘法约束的一个算法。
再介绍具体的算法之前, 我们可以先看一个演示。
这是来自于最新版的 photoshop的一 个 液化工具, 它已经实现了基于人脸识别的一个智能 液化 。
下面我们对 Moving Least Squares 算法做具体的介绍。 这个算法的核心思想是:首先我们获取到原始图像中的一些关键点, 然后我们定义的目标同样的一种关键点, 它要做的就是求取一个相似变换。
就是下面这样的一个式子, 它最终的目标是最小化这样的一个重建误差, 这就是这个算法的核心。
我们可以看一下这个算法的结果的演示, 可以看到算法的变形是非常的平滑。
第三部分是 美妆算法 。 所谓美妆算法就是我们前面说的唇彩以及美发的算法, 它背后就是语义分割的技术。 语义分割现在主流是以 CNN等深度学习算法为代表, 辅以 CRF 这样的一个后处理操作。 其次 在我们分割完, 也就是得到嘴唇和美发等区域之后, 我们还要做一些简单的图像融合, 以便使我们应用这些美妆算法之后, 效果看起来更加自然,例如 可以采用 泊松 融合等等一些同样融合的算法。
上面这个图是来自于谷歌的一个 face parsing 项目, 也就是人脸各区域的一个分割的项目。 我们可以看到他已经将人脸面部的各个区域都都进行了很精细的语义上的标注。 目前最好的方法已经可以实现对这些区域进行实时的高精度的分割。 这样的技术是美妆算法背后的支撑。
最后我们给大家介绍一下 妆容迁移的算法 。 何为 妆容 迁移 ? 我们首先看一张图:
图中上面这样一张图是我们要对它应用算法的图。 下面这张图是我们的参考图。 那么所谓的妆容迁移, 就是说要把下面这样一张图的化妆的风格迁移到上面这样一张图。
这是以深度学习为代表的一个框架。 我们可以看到它的流程就是首先我们要对两幅图各自做一个 语义 上的p arsing , 也就是图像分割操作。 得到图像分割 操作 的结果之后, 我们会对人脸上的各个区域来进行重建, 对结构进行一个保持, 会定义一个智能的 loss , 然后进行融合, 得到我们最终的结果。
大家如果对技术细节非常感兴趣, 可以去参考这篇文章:
Liu S, Ou X, Qian R, et al. Makeup like a superstar: deep localized makeup transfer network[C]// International Joint Conference on Artificial Intelligence. AAAI Press, 2016:2568-2575.
最后我们对整体的 美颜 算法做一个简单的总结:
a. 美颜 算法内容非常丰富。 我们前面可以看到对于人脸的各个区域, 从眼睛睫毛鼻子嘴巴到发型到脸型等等都已经有各种各样的丰富的美 颜 操作。
b.传统方法应用非常广泛。 我们前面可以看到美颜算法它现在仍然有非常非常多的传统的方法在其中进行应用, 甚至在很多的领域、 在很多的方面, 传统方法都要优于现在的深度学习的方法。
c. 现在深度学习方法快速的发展。 我们在前面给大家展示的最后的一个应用, 就是 妆容 迁移, 这是一个智能 妆容 迁移的一个技术, 它就利用到了深度学习的方法, 来对各个子区域进行一个智能的 妆容 迁移。 包括前面我们给大家展示的一个液化算法, 它 也是photoshop在人脸识别这样的一个基础上, 建立的对人脸的各个区域进行智能的液化 的操作。
关于美颜算法,这里的分享只是一部分, 实际上还包含了非常非常多的算法, 大家如果对 算 法非常感兴趣, 可以去线下搜集相关的资料, 背后的一些具体的技术细节, 大家都可以去留意。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31553577/viewspace-2216266/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31553577/viewspace-2216266/