ITPub博客

首页 > 人工智能 > 深度学习 > 【蜂口 | AI人工智能】关键点检测——龙鹏 深度学习与人脸图像应用连载(三)

【蜂口 | AI人工智能】关键点检测——龙鹏 深度学习与人脸图像应用连载(三)

原创 深度学习 作者:絵飛的魚 时间:2018-09-29 17:09:44 0 删除 编辑

Hi,我是龙鹏。这次我将给大家带来关键点检测的分享。

本次分享主要回顾一下关键点检测算法,包括传统方法和深度学习的方法。将包含以下几个方面的内容:

1)我们会简单的讲述一下关键点是什么,以及它的一个发展的简史,

2)我们对传统方法做一个简单的了解,主要包括ASM,AAM等模型。

3)我们讲一下深度学习的思路。深度学习的思路将包含回归网络的讲述以及多尺度,多任务的学习等相关的内容。

4)对人脸关键点检测的应用以及它的发展趋势做一个总结。

下面开始我们第一部分的分享:人脸关键点

所谓关键点它到底是什么呢?下面是我们的一个关键点的图像

我们从这里可以看出来,所谓人脸的关键点就是我们人脸中从眉毛到眼睛到鼻子到嘴唇,到人脸的轮廓,这样一些特征区域的外部的轮廓点。基于这些点,我们就能完整地描述一个人脸的一个图像,我们把它对应到我们人脸的一个图像上面去就可以看到,有了关键点之后,他就是人脸形状的一个稀疏的表达,如下图:

人脸关键点它这样的一个特征向量,实现了像素到语义级别的转换。也就是说我们之前理解人脸,只能理解是一个一个的RGB像素。当我们有了关键点之后,关键点的一个向量就是我们人脸的一个形状的表达,我们就可以利用关键点来对人脸做一些简单的一些区分和分类。

人脸关键点检测经历了20多年的发展,最先开始是使用ASM这样一个主动形状模型。随后对ASM主动模型进行了改进,得到了主动外观模型。经过了十年的发展,ASM这样的一个系列最终发展到了CLM这样的一个方法,它是一个带局部约束的ASM模型。随后cascaded Regression这样的一个思路被引进到关键点的检测。直到近几年深度学习开始被广泛应用于人脸关键点的检测。

到现在几乎所有的方法都是使用深度学习来进行人脸的关键点检测,因为深度学习用于人脸关键点检测,它的检测精度已经远远超过了传统的方法。传统的方法在自然环境下已经无法满足关键点检测这样的需求。

下面我们开始分别对传统方法和深度学习的方法进行简单的介绍:

一、传统模型:

以ASM方法和AMM方法作为代表。它的基本思路是这样:

首先,利用形状向量来描述训练集人脸的形状。所谓形状向量就是我们前面提到的关键点的坐标的串联,

然后,因为人脸有各种各样的姿态,所以我们要对这些人脸的形状进行一个对齐,对齐之后我们可以利用PCA等方法进行统计的特征建模。

接下来,当我们有一张新的测试图像的时候,我们就用我们前面建立好的一个局部纹理模型,在新的人脸的图像区域上去搜索,满足我们这样的统计描述的就是特征点,从而定位到这些图像特征点。

最后因为局部纹理模型可能会受到一些初始化、一些光照等的干扰,会有点不稳定,所以我们会采用全局的统计模型对形状来进行修正,保证它在可控的可变的范围内。

以上就是ASM方法的一个整体流程。

而AAM方法,它就是将ASM的局部纹理模型扩充为了全局纹理模型。

总结来说这两个方法,AAM方法是ASM方法的一个改进,它的检测精度相对来说更高,但是它的速度也会相比更慢。

传统的模型进行关键点检测,它的核心的思想就是利用了全局的形状,加全局的纹理或者局部的纹理来进行融合。

下面对我们的传统模型进行一个简短的总结。

1)它的速度比较快,实时性比较强。

2)它是一个参数化的可变模型。因为人脸是一个柔性模型,我们前面已经给大家进行过讲述,利用这样的一个参数化的可变模型,方便对人脸特征点进行跟踪。

3)它的速度和精度都比较依赖于初始的形状。如果初始的形状非常不好的话,它有可能会搜索失败。

4)它受噪声和光照等干扰比较严重。因为它是依赖于传统的纹理特征。

传统方法的后续研究主要包括CLM方法以及NPD方法。目前在传统方法中,NPD方法是一个比较具有代表性,性能比较具有优势的方法,大家可以线下去做更多的了解,我们这里就不再做详细的介绍。

二、我们开始对深度学习的思路进行讲述。

深度学习的思路,主要我们会分析两个方面。

1)级联回归的定位框架。

我们会介绍一下DCNN框架,它是第一个用cnn来进行关键点检测的框架。

这是DCNN的一个模型图。我们可以看到DCNN这个框架总共包含三个模块,这三个模块分别包含了许多的卷积。level 1 这样的模块,总共包含了三个卷积,level 2和level 3都是包含了十个卷积。

DCNN这个框架他只检测人脸的五个关键点,包括两个眼睛中心点,鼻尖以及两个嘴巴,以及嘴巴的两个关键点。

我们看level 1这个框架它总共包含了三个网络,level 2和level 3模块总共包含了十个网络,其中每一个特征点它都使用了两个网络来进行回归。

实际上DCNN它这个框架也是一个级联的cnn的思想,它也实现了从粗到精的检测。

level 1这样的一个模块,它会使用分辨率比较大的图像去进行人脸的关键点的检测。level 2跟level 3会使用分辨率更小的一个输入来进行关键点的定位。

这次我们可以看到基于多分辨率的一个级联的思想,在人脸检测和人脸关键点检测中都已经被非常广泛地使用。

2)我们会介绍一个多任务学习的框架。因为多任务学习目前在人脸检测和关键点检测是一个主流的思路。这里我们会介绍一下MTCNN框架。

MTCNN方法,它总共包含了三个阶段,分别是P-net,R-net和O-net。

上图是三个模块的网络结构图。我们可以看到,与前面介绍的级联框架的人脸检测方法非常类似,它也包含了三个分辨率不同的网络。P-net是一个12×12的图像输入,R-net是一个24×24的图像输入。O-net是一个48×48的图像输入,它也实现了从粗到精的这样的一个思想。

同时,P-net,R-net,O-net他们三个,每一个模块,它们都包含了三个不同的网络。这三个不同的网络就是分别处理人脸的分类,边框的回归以及关键点的定位。

在MTCNN方法中,它对难样本做了一些技巧上的处理。不同于以往,我们选择难样本可能是在线下做训练的时候去手动的去进行分类。

MTCNN它使用了在线的学习,它通过自动挑选每一次进行训练的时候,其中损失较大的一些样本作为难样本去进行学习,而简单的样本不进行学习。

MTCNN它对损失函数做了一些处理,因为有很多的图像,它没有人脸,它不需要进行人脸分类的损失。MTCNN它这个网络定义的LOSS,它可以自适应不同的图像输入。

下面我们对基于深度学习的方法做一个总结:

首先,我们看看这些关键点的应用。它的应用非常的广泛,包含人脸的跟踪,人脸的编辑,美容美妆以及三维人脸重建。

我们看上边这样一个图,它实现的是人脸的编辑功能,也就是实现了两张人脸图像的融合。它的基本流程就是我们要分别检测到两张人脸的上的关键点,然后我们利用关键点来进行变形,最后进行纹理的融合。

再看一个与美容有关的图:

利用关键点我们可以得到人脸的不同的区域,得到了人脸的不同的区域之后,我们对不同的区域进行分区的美颜的操作。因为人脸的皮肤的美颜与嘴唇的美颜、人脸面部的美颜与嘴唇区域的美颜,肯定是要采用不同的方法,这样能够更加精细,更加个性化。

当我们在美颜的时候,我们希望皮肤光滑,但是我们仍然希望能够保留眉毛眼睛等地方的边缘的清晰。

接下来是一个三维人脸重建的示意图:

人脸关键点的检测,对于三维人脸重建也是一个比较关键的步骤。

最早期的人脸三维重建的方法,就是通过检测到2D图像上的一个关键点,然后利用关键点来进行人脸的重建。

最后我们对人脸关键点检测的趋势,给大家做一个介绍。

1)关键点不断增加。前面我们分享的第一个用CNN进行关键点检测的模型,它只使用了五个关键点,而现在在我们工业界的应用中,关键点已经从五个增长到21个,29个,68个,96个,192个,甚至传闻有公司已经超过了200个关键点。关键点越多,我们就可以利用关键点做越精细的一些操作。

2)是大姿态的关键点检测。因为对于很多大姿态的人脸,尤其是侧脸,我们是无法检测到关键点的,因为关键点本身是缺失的。但是我们有时候又需要关键点的信息,这个时候就可以利用3D的人脸检测、3D的人脸重建这样的一个思想来进行关键点的检测与补全。

关于人脸关键点的检测分享,主要内容就到此为止。人脸关键点仍然是一个非常具有挑战性的问题,大家可以线下去做更多的了解。

免费领取技术大咖分享课,加蜂口V信: fengkou-IT    
感谢您的阅读,更多精彩请持续关注蜂口微信小程序!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31553577/viewspace-2215276/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-06

  • 博文量
    20
  • 访问量
    11805