一种基于单个卷积神经网络的面部多特征点定位方法与流程

文档序号:13940977阅读:222来源:国知局

本发明涉及生物识别领域,特别是一种基于单个卷积神经网络的面部多特征点定位方法。



背景技术:

面部特征点定位是计算机视觉中的重要问题,因为许多视觉任务依赖于准确的面部特征点定位结果,比如面部识别,面部表情分析,面部动画等。虽然在这些年里被广泛研究,并且取得了巨大的成功。但是,由于部分遮挡、光照、较大的头部旋转和夸张的表情变化等因素导致人脸图像的复杂多样性,面部特征点定位仍然面临着巨大挑战。卷积神经网络已经被证明在提取特征和分类方面具有有效性,同时它也被证明针对遮挡具有鲁棒性。

面部特征点定位方法大致分为两类:传统方法和基于深度学习的方法。典型的传统方法包括基于模型的方法和基于回归的方法。基于模型的方法在给定平均初始形状的情况下学习形状增量。如主动形状模型(asm)和主动外观模型(aam),采用统计模型如主成分分析(pca)来分别捕获形状和外观变化。然而,他们并不能获得具有较大头部姿态变化和夸张的面部表情等人脸图像的精确形状,因为单一的线性模型很难刻画现实场景数据中的复杂非线性变化。基于回归的方法通过训练外观模型来预测关键点位置。xiong等人通过在sift特征上应用线性回归来预测形状增量。cao等人burgosartizzu等人使用像素强度差异作为特征顺序学习了一系列随机蕨回归,并逐步退化了学习级联的形状。他们对所有参数同时进行回归,从而有效地利用形状约束。这些方法主要从初始的估计迭代地修改预测的特征点位置,因此最终结果高度依赖于初始化。

到目前为止,只有几种基于深度学习的方法。sun等人采用级联cnn进行面部特征点定位的新方法。这种方法将脸分为不同的部分,每个部分分别由卷积神经网络训练。最后,它实现了5个特征点的定位,即:左右眼睛、鼻尖,左右嘴角。然而,由于级联网络的复杂性,检测很慢;并且将人脸分成多个部分进行定位,忽略了人脸的整体性。zhang等人训练一个多任务学习(辅助属性)的深层卷积网络tcdcn。每个任务对应人脸图像的一个属性,例如姿态,微笑,性别等,这使得特征点定位具有鲁棒性。结果表明,特征点定位的精度较高。然而,多任务学习对数据集的需求更高,并且不能重复复杂的训练。

显然,上述网络的结构和训练过程都非常复杂;其次现有的基于深度学习的方法大多是针对数目较少的特征点定位。当特征点的数目变多时,定位的准确性会变得愈加困难。



技术实现要素:

本发明的目的在于提供一种基于单个卷积神经网络的面部多特征点定位方法,以精确地表达面部特征点,在变化复杂的条件下仍然能够对面部特征点进行高效定位,同时能实现面部多个特征点定位。

实现本发明目的的技术解决方案为:1、一种基于单个卷积神经网络的面部多特征点定位方法,其特征在于,包括以下步骤:

步骤1、扩充训练样本;

步骤2、根据数据集提供的与每个样本对应的面部特征点坐标,确定人脸边框;

步骤3、采用缩放、旋转、平移和翻转四种操作来扩充数据,弥补训练图像特征点标注的不足;

步骤4、根据人脸边界框提取出人脸图像,并进行归一化处理;

步骤5、设计网络结构;

步骤6、训练网络,设置网络的学习率和每次处理数据的数量,完成面部多特征点的定位。

进一步地,步骤2所述的根据数据集提供的与每个样本对应的面部特征点坐标,确定人脸边框,具体处理方式的伪代码如下:

输入:一张测试图片img;与该测试图像对应的面部特征点坐标(xi,yi)={(x1,y1),(x2,y2)···(xm,ym)},i∈{1,...,m},其中m为特征点的个数;

输出:该测试图片中的人脸边界框的坐标{(x1,y1),(x2,y2)}

1)x1←min(xi)

2)y1←min(yi)

3)x2←max(xi)

4)y2←max(yi)

5)end。

进一步地,步骤3所述采用缩放、旋转、平移和翻转四种操作来扩充数据,其中翻转通过将左眼的模型用于右眼,左眉毛用于右眉毛,左嘴角用于右嘴角来实现。

进一步地,步骤4所述根据人脸边界框提取出人脸图像,并进行归一化处理,具体为:

根据所提取出的人脸图像与归一化后的比例关系,调整面部特征点的坐标位置,将提取出的人脸图像归一化为224×224的像素大小。

进一步地,步骤5所述的设计网络结构,具体如下:

网络输入的是224×224×3的彩色脸部图像和相应的面部特征点坐标n,其中n是面部特征点总数的两倍;

网络层数分为八组:

第一组由第一卷积层conv1_1和第一最大池化层pool1组成;

第二组由第二卷积层conv2_1和第二最大池化层pool2组成;

第三组由堆叠的第三、四卷积层conv3_1、conv3_2和第三最大池化层pool3组成;

第四组由堆叠的第五、六卷积层conv4_1、conv4_2和第四最大池化层pool4组成;

第五组由堆叠的第七、八卷积层conv5_1、conv5_2和第五最大池化层pool5组成;

第六组为第一个完全连接层fc6,连接第五组中第五最大池化层pool5的神经元,输出数量为4096;

第七组为第二个完全连接层fc7,连接第一个完全连接层fc6的神经元,输出数量为4096;

第八组为第三个完全连接层fc8,连接输出数为n,n是面部特征点总数的两倍;

在卷积层中,卷积核的大小为3×3,设置步长为1,使得像素逐个滑动,边缘扩充设置为1,即宽度和高度都扩充了2个像素,卷积运算表示为:

yj=∑ikij*xi+bj(1)

其中xi和yj分别是第i个输入图和第j个输出图,kij表示第i个输入图和第j个输出图之间的卷积核,bj是第j个输出图的偏差,*表示卷积;

在池化层中,采用最大池化的方式,即对邻域内特征点取最大,最大池化表示为:

其中,第i个输入映射xi中的每个h×h局部区域,被合并为第i个输出映射中的神经元;表示i个输出映射图中坐标为(j,k)的像素值,m,n分别表示局部区域内的x轴坐标与y轴坐标,设置池化核的大小为3×3,步长为2;

在每个卷积层之后添加非线性单元relu作为激活函数,在第一、二个完全连接层(fc6、fc7)增加dropout操作,表达式如下:

r=m.*a(wv)(3)

其中,v是n*1维列向量,w是d*n维的矩阵,m是个d*1的列向量,a(x)是一个满足a(0)=0的激发函数形式,m和a(wv)相乘是对应元素的相乘。

进一步地,步骤6所述网络的学习率设置为0.0001,每次处理数据的数量设置为32。

本发明与现有技术相比,其显著优点在于:(1)使用只具有单个训练任务的单一深层卷积网络,精确地提取全局高级特征,直接预测面部多特征点的坐标;(2)简化了网络结构,降低了训练难度,该网络结构可以提取更多的全局高级特征,更精确地表达面部特征点;(3)对姿态、光照、表情和严重遮挡具有鲁棒性,对处理变化复杂的情况具有优异的能力,在变化复杂的条件下对面部特征点的定位效果好,具有非常高的精度和性能。

附图说明

图1为本发明基于单个卷积神经网络的面部多特征点定位方法的流程图。

图2为本发明基于单个卷积神经网络的面部多特征点定位方法中的人脸边框样例图。

图3为本发明中的数据扩增样例图。

图4为本发明中的网络详细结构图。

图5为本发明与lbf、sdm定位特征点的对比结果图。

图6为本发明中的结果样例图,其中(a)为姿态变化结果样例图,(b)为光照变化结果样例图,(c)为表情变化结果样例图,(d)为遮挡变化结果样例图。

具体实施方式

结合图1,本发明基于单个卷积神经网络的面部多特征点定位方法,包括以下步骤:

步骤1、扩充训练样本;

步骤2、根据数据集提供的与每个样本对应的面部特征点坐标,确定人脸边框,具体处理方式的伪代码如下:

输入:一张测试图片img;与该测试图像对应的面部特征点坐标(xi,yi)={(x1,y1),(x2,y2)···(xm,ym)},i∈{1,...,m},其中m为特征点的个数;

输出:该测试图片中的人脸边界框的坐标{(x1,y1),(x2,y2)}

1)x1←min(xi)

2)y1←min(yi)

3)x2←max(xi)

4)y2←max(yi)

5)end。

步骤3、采用缩放、旋转、平移和翻转四种操作来扩充数据,弥补训练图像特征点标注的不足;

所述采用缩放、旋转、平移和翻转四种操作来扩充数据,其中翻转通过将左眼的模型用于右眼,左眉毛用于右眉毛,左嘴角用于右嘴角来实现。

步骤4、根据人脸边界框提取出人脸图像,并进行归一化处理,具体为:

根据所提取出的人脸图像与归一化后的比例关系,调整面部特征点的坐标位置,将提取出的人脸图像归一化为224×224的像素大小。

步骤5、设计网络结构,具体如下:

网络输入的是224×224×3的彩色脸部图像和相应的面部特征点坐标n,其中n是面部特征点总数的两倍;

网络层数分为八组:

第一组由第一卷积层conv1_1和第一最大池化层pool1组成;

第二组由第二卷积层conv2_1和第二最大池化层pool2组成;

第三组由堆叠的第三、四卷积层conv3_1、conv3_2和第三最大池化层pool3组成;

第四组由堆叠的第五、六卷积层conv4_1、conv4_2和第四最大池化层pool4组成;

第五组由堆叠的第七、八卷积层conv5_1、conv5_2和第五最大池化层pool5组成;

第六组为第一个完全连接层fc6,连接第五组中第五最大池化层pool5的神经元,输出数量为4096;

第七组为第二个完全连接层fc7,连接第一个完全连接层fc6的神经元,输出数量为4096;

第八组为第三个完全连接层fc8,连接输出数为n,n是面部特征点总数的两倍;

在卷积层中,卷积核的大小为3×3,设置步长为1,使得像素逐个滑动,边缘扩充设置为1,即宽度和高度都扩充了2个像素,卷积运算表示为:

yj=∑ikij*xi+bj(1)

其中xi和yj分别是第i个输入图和第j个输出图,kij表示第i个输入图和第j个输出图之间的卷积核,bj是第j个输出图的偏差,*表示卷积;

在池化层中,采用最大池化的方式,即对邻域内特征点取最大,最大池化表示为:

其中,第i个输入映射xi中的每个h×h局部区域,被合并为第i个输出映射中的神经元;表示i个输出映射图中坐标为(j,k)的像素值,m,n分别表示局部区域内的x轴坐标与y轴坐标,设置池化核的大小为3×3,步长为2;

在每个卷积层之后添加非线性单元relu作为激活函数,在第一、二个完全连接层(fc6、fc7)增加dropout操作,表达式如下:

r=m.*a(wv)(3)

其中,v是n*1维列向量,w是d*n维的矩阵,m是个d*1的列向量,a(x)是一个满足a(0)=0的激发函数形式,m和a(wv)相乘是对应元素的相乘。

步骤6、训练网络,设置网络的学习率和每次处理数据的数量,完成面部多特征点的定位。

下面结合具体实施例对本发明做进一步的说明。

实施例1

结合图1~4,本发明基于单个卷积神经网络的面部多特征点定位方法,包括以下步骤:

步骤1、扩充训练样本;为了解决缺乏训练图片的问题,避免严重的过拟合,需要扩充训练样本。

步骤2、根据数据集提供的与每个样本对应的面部特征点坐标,确定人脸边框。由于原始库中的图像包括各种各样背景,因此先根据数据集提供的与每个样本对应的面部特征点坐标,确定人脸边框。具体处理方式(伪代码)如下:

步骤3、采样缩放、旋转、平移和翻转四种操作来扩充数据,弥补训练图像特征点标注的不足;其中翻转图像通过将左眼的模型用于右眼,左眉毛用于右眉毛,左嘴角用于右嘴角来实现。

步骤4、根据人脸边界框提取出人脸图像,并进行归一化处理;将其归一化为224×224的像素大小;在归一化时,面部特征点的坐标位置通过原图与规范化后的比例关系调整坐标位置;

步骤5、设计网络结构,网络的输入是224×224×3的彩色脸部图像以及相应的面部特征点坐标n,其中n是面部特征点总数的两倍。例如对于300-w数据集,n为68×2=136。网络层数的确定参考经典网络alexnet八层结构,前五层是卷积层,后三层是全连接层,本发明将网络分为八组,第一组和第二组分别由一个卷积层conv1_1、conv2_1和一个最大池化层pool1、pool2组成;第三组、第四组和第五组都分别由堆叠的两个卷积层conv3_1、conv3_2、conv4_1、conv4_2、conv5_1、conv5_2和一个最大池化层pool3、pool4、pool5组成;第六组为第一个完全连接层fc6,连接第五组中最大池化层pool5的神经元,其输出数量为4096;第七组为第二个完全连接层fc7,连接第一个完全连接层fc6的神经元,其输出数量为4096;第八组为第三个全连接层fc8,连接输出数为n(n是面部特征点总数的两倍)。

在卷积层中,其卷积核的大小为3×3,为了保证卷积后的图像大小与原图一致,设置相应的步长为1,使得像素逐个滑动,边缘扩充设置为1,即宽度和高度都扩充了2个像素。卷积运算表示为:

yj=∑ikij*xi+bj

其中xi和yj分别为第i个输入图和第j个输出图,kij为第i个输入图和第j个输出图之间的卷积核,bj为第j个输出图的偏差,*为卷积。

在池化层中,采用最大池化的方式,即对邻域内特征点取最大,因为该方式能更好地提取纹理。最大池化表示为:

其中第i个输入映射xi中的每个h×h局部区域被合并为第i个输出映射中的神经元。设置池化核的大小为3×3,步长为2;

在每个卷积层之后添加非线性单元relu(rectifiedlinearunit)(y=max(0,x))作为激活函数以加速网络收敛。本网络不对第三个完全连接层fc8进行relu操作,为了保留重要的信息。为了防止过拟合,在第一个完全连接层fc6和第二个完全连接层fc7增加dropout操作。其表达式如下:

r=m.*a(wv)

其中v为n*1维列向量,w为d*n维的矩阵,m为个d*1的列向量,a(x)为一个满足a(0)=0的激发函数形式。这里的m和a(wv)相乘是对应元素的相乘。

本发明使用的训练集包括afw,lfpw和helen的训练集,共有3148个图像。验证集为ibug网站上提供的300-w测试集,是在自然环境条件下新收集的2×300张图片(300个室内和300个室外)。采用以下三种形式来执行测试:来自lfpw和helen的测试图片作为公共子集,ibug作为挑战子集,同时公共子集和挑战子集的联合作为具有689张图片的全集。其中,训练集、验证集、测试集都没有重叠。

步骤6、训练网络,设置网络的学习率和每次处理数据的数量,完成面部多特征点的定位;

采用深度学习框架mxnet来训练网络。原始训练图片的数量为3283,本发明采用缩放、平移和旋转操作分别对每张图片增加10倍,共训练31480张图片。当训练该网络时,学习率设置为0.0001,每次处理数据的数量设置为32。

结合图5、图6,本发明与显式形状回归(esr),鲁棒级联姿态回归(rcpr),监督下降法(sdm),基于局部二元特征(lbf)的回归,由粗到细的自编码器网络(cfan),基于回归树集合的回归(ert),由粗到细的形状搜索(cfss)、dcnn和tcdcn这些现有的主流方法进行比较,结果如表1所示。

表1300-w数据集(68个特征点)的平均误差(%)

与级联cnn和tcdcn相比,本发明不需要级联网络和多任务学习。从表中可以看出,本方法在公共子集上的平均误差是4.74%,在挑战子集上的平均误差是6.01%,在全集上的平均误差是4.99%,显然,优于大多数现有技术方法,仅在公共子集上的平均误差略高于cfss。因此本发明在这些测试集上表现出的良好性能,证明了本发明的优越性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1