Data-Driven Face Cartoon Stylization(2014)

东方方伟
2023-12-01

给定肖像图像,我们将面部分解为分离的面部成分并搜索相应的卡通, 通过要素匹配数据集中的组件。 卡通组件组合在一起构成卡通脸。 我们很容易 通过使用我们的框架,生成不同风格的卡通面孔并进行艺术美化。

系统的框架如图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表示,包括左眉的坐标和长度,左眼的坐标和长度,鼻子的纵坐标和宽度,嘴巴的纵坐标和宽度,下巴的纵坐标和宽度,脸颊的纵坐标。

坐标系的原点:两个眼睛位置的中点O;坐标系的Y轴:O点与鼻子的中心的连线的方向。根据创建的坐标系,我们定义一个十三维的特征向量X=(x1,x2,……,x13),其中: (x1,x2,x3)=(左眉毛位置的x坐标,左眉毛位置的y坐标,眉毛的长度);

(x4,x5,x6)=(左眼睛位置的x坐标,左眼睛位置的y坐标,左眼睛的长度);

(x7,x8)=(鼻子位置的y坐标,鼻子的宽度);

(x9,x10)=(嘴巴位置的y坐标,嘴巴的宽度);

(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归结为求解如下最小优化问题: 寻找最相似的器官。

W就是我们需要通过训练数据,得到的参数。Φ(xi)表示映射变换函数。公式(1)的拉格朗日对偶问题为:

Paper中,径向基函数K选择高斯核函数,即:

通过求得上面的拉格朗日乘子,ɑ、ɑ*,我们就可以进行预测了,ε-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
复制代码

头发与图像颜色的聚类方法匹配 直方图。 左:对齐的面部图像和聚类结果。 头发区域标记为绿色。 右:最匹配的卡通头发及其二值图像。 我们知道,前面我们创建的卡通动画的发型,包含75种发型。对于发型的相似度计算,paper也是以HOG算子作为特征,计算欧式距离。具体它分为两个步骤:局部匹配、全局匹配。发型识别的细节比较多,这里只讲大体的流程。

第一步过程,得到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

参看文章2014年

 类似资料: