给定肖像图像,咱们将面部分解为分离的面部成分并搜索相应的卡通, 经过要素匹配数据集中的组件。 卡通组件组合在一块儿构成卡通脸。 咱们很容易 经过使用咱们的框架,生成不一样风格的卡通面孔并进行艺术美化。算法
系统的框架如图2所示。它包含脱机阶段和运行时阶段框架
咱们首先将输入面解析为其语义面部组件。对于每一个组件,咱们提取其形状特征并按功能查找数据集中最类似的实际组件 匹配。而后,咱们使用相应的风格化面部组件来构成卡通脸。最后,咱们自动调整面部组成的卡通面部,更天然,更有吸引力函数
数据驱动的先验知识提取学习
三个数据集:真实面部数据集,真实面部组件数据集以及卡通面部组件的数据集。 真实面部数据集P.由从互联网下载的表明性肖像照片组成,包含300个男性面部和220个女性主体面部。 咱们精心挑选照片,以确保有各类不一样形状的面部组件。咱们从P中的面部提取全部面部组件以构建 现实面部组件数据集Fr.而后,咱们选择了20个下巴,30个眉毛,30个眼睛,16个鼻子的表明性成分, 来自Fr的男性和女性照片的30个嘴和75种头发,并用它们来构建面部的数据集。经过让艺术家为每一个人绘制风格化版原本实现组件Fc(表明性现实成分),对于每一个真实的眼睛,咱们分别绘制了单眼皮和双眼皮的版本。 在P中经过选择和组合与真实面部上的组件相似的风格化面部组件,这样作,Fr中的每一个面部成分都用来自Fc的最接近的程式化面部成分标记。优化
调整面部成分,面部成分的良好组合将使卡通脸看起来天然而有吸引力。 咱们采用ε-SVR方法[Chang and Lin 2011]让系统学习如何调整卡通脸的面部构图,以创造更美丽的效果。 对于P中的粗糙卡通面,咱们要求艺术家调整每一个组件的位置和大小,以便为每一个面部达到良好的构图。动画
面部构图被定义为从面部地标提取的特征向量。 假设脸是对称的。 咱们定义一个坐标系,其中心位于眼睛之间。 穿过眼睛的线是水平轴,鼻子上的垂线是垂直轴。 如图3所示,面部构图由13维向量x∈R13表示,包括左眉的坐标和长度,左眼的坐标和长度,鼻子的纵坐标和宽度,嘴巴的纵坐标和宽度,下巴的纵坐标和宽度,脸颊的纵坐标。lua
(x4,x5,x6)=(左眼睛位置的x坐标,左眼睛位置的y坐标,左眼睛的长度);spa
(x7,x8)=(鼻子位置的y坐标,鼻子的宽度);.net
(x9,x10)=(嘴巴位置的y坐标,嘴巴的宽度);3d
(x11,x12)=(脸颊位置的y坐标,脸颊的宽度);(图中浅蓝色的线)
(x13)=(下巴位置的y坐标);(人脸特征点的最下点)
根据P的卡通图,咱们能够获得以下训练数据:,其中X为卡通图的特征,Z为卡通图的风格数据。
学习自动进行五官比例、位置等调整。
复制代码
采用ε-SVR算法(参考文献:Libsvm: a library for support vector machines)进行训练学习。简单理解就是算法经过SVM算法,进行五官位置比例的预测拟合。由于咱们要五官自动重组,使得重组后的模型更美观。所以咱们能够经过输入训练数据,获得相关的拟合函数的参数。 而后当咱们输入一个新的模型后,咱们就能够进行拟合预测出新模型。
这一步具体算法的实现参考paper中的:Adjustment of facial compositions 给定大于零的参数C>0、ε>0,ε-SVR归结为求解以下最小优化问题: 寻找最类似的器官。
寻找最类似的器官
复制代码
1.Face detection and alignment
复制代码
咱们将面部卡通化表示为优化问题,试图在输入面的类似性和卡通表示的天然性/吸引力之间取得平衡。用户经过建立肖像照片做为系统的输入来开始卡通化会话。咱们使用[Viola and Jones 2004]中的方法进行面部检测,并选择图像中第一个检测到的面部做为输入面。咱们在[Cao et al。 2014]找到面部地标。咱们使用经常使用的88个面部标志来表示面部形状,并将输入面分解为单独的组件,如眼睛,眉毛,鼻子,嘴巴和下巴。经过使用其地标的边界框来提取眼睛,眉毛和鼻子的区域。口和下巴直接由他们的地标(下巴的21个标志和嘴的22个标志)表明。而后,对于每一个组件,咱们在真实面部组件Fr的数据集中搜索最类似的组件。
2.Eyes and nose
复制代码
眼睑形状是区分一只眼睛与其余眼睛的强烈特征。 咱们使用HoG描述符[Dalal和Triggs 2005]来提取眼睛的图像特征。 得到2304维特征向量,而且欧几里德距离用于计算面部描述之间的距离。 咱们使用相同的匹配方案从Fr中找到最类似的鼻子。 咱们将Fr眼睛和眼睛的输入图像标准化为62×100,鼻子的输入图像标准化为71×200
3.Eyebrows
复制代码
因为眉毛与其周围皮肤之间一般没有明确的边界,咱们首先对眉毛区域进行高斯归一化。 而后,咱们将归一化区域划分为6×20个补丁,并对每一个补丁的像素强度求和。 最后,关于小块的全部求和都链接到被视为眉毛的特征向量的向量。 咱们将Fr的输入眉毛和眉毛标准化为66×200。
4.Chin and mouth
复制代码
使用形状信息,下巴和嘴巴的匹配能够得到良好的效果。 两个选定的下巴标志与两个固定点对齐。 对齐的地标是 结合到描述矢量,该矢量是下巴或嘴巴的特征向量。
一旦特征提取完成,咱们将从数据集中搜索每一个面部组件的K个最近邻居。 因为每一个真实组件都链接到卡通表示,咱们为每一个面部组件得到K个风格化组件。 这些组件能够在搜索结果中共享两个或更多个卡通组件。 咱们选择最常出现的最佳匹配。
5.Hair
复制代码
第一步过程,获得K近邻发型。这一步跟上面眉毛部位的计算方法相似:首先就是对卡通图和真实图进行阈值分割,获得二值化图像,并进行图像大小归一化,具体归一化的图片大小文章没有具体详细说明;最后对归一化图像进行分块,统计每一个块的颜色信息总和xi,并以(x1,x2……xn)做为特征向量,计算特征向量间的欧式距离。这样咱们能够获得k近邻发型,。
第二步过程,这一步就是要从k近邻中,寻找最接近的发型了。这一步的计算方法与眼睛的计算方法相似,也是经过计算HOG特征,做为特征向量,并计算欧式距离。这样咱们就能够从这K个近邻中找到最类似的发型了。
6.Gender classification
复制代码
文献参考《Evaluation of gender classification methods with automatically detected and aligned faces》的方法,总的过程,是经过SVM训练一个分类器,而后进行男女性别的分类判别。
7.Glass detection
复制代码
对因而否戴眼镜,paper首先在眼镜的中间位置取一块区域,而后对把这一块区域转换成灰度图像,最后计算垂直方向上的梯度值。
根据梯度值,获得上下梯度值最大的像素集A、B(图中红色的像素点),而后统计A、B的方差:
最后根据sum of var(A)、var(B)的大小,进行阈值判断其是否戴眼镜。根据文献的最后几句话:The glass color is obtained from the region between two set of pixels。好像也能够经过A、B的颜色信息,进行判断眼镜边框的颜色
8.Eyelid detection
复制代码
9.Warping
复制代码
对于某些输入面,可能不存在合适的程式化面部组件,所以卡通面看起来与真实面不一样。在咱们的实验中,咱们发现下巴和眼睛的形状是明显影响的重要因素 卡通脸与输入脸的类似度。为了解决这个问题,咱们采用了 [Schaefer et al. 2006]改变经过特征匹配得到的卡通下巴和卡通眼睛的形状。该方法须要两组控制点,一组做为源点,另外一组做为目标点,这样便于将图像扭曲成所需的点。可是,结果中会出现一些失真。实验代表,控制点的数量和均匀性以及曲线的平滑度对结果有影响。平滑度起着最重要的做用。所以,咱们在曲线上等距地对控制点进行采样,并平滑新的控制点以找出问题。咱们经过使用具备比例因子的高斯滤波器来平滑曲线以控制平滑程度。
参考文献:
《Data-Driven Face Cartoon Stylization》CSDN