人脸特征点检测(Facial landmark detection)

本文详细介绍了基于深度学习的人脸特征点检测技术,包括相关理论、算法流程和创新点。主要讨论了从粗到精的CNN网络级联架构,用于68个特征点的高精度定位。通过四层网络结构,从初始定位到精细定位,显著提高了预测精度。此外,文章还探讨了使用CNN预测bounding box以增强定位准确性的方法,以及与其他人脸检测方法的对比。
摘要由CSDN通过智能技术生成

1)cnn face detetor(Deep Convolutional Network Cascade for Facial Point Detection)
http://blog.csdn.net/hjimce/article/details/50099115

2) dataset,with point
https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/

3) Facial landmark detection on android
https://github.com/flyingzhao/FacialLandmarkAndroid    (good)
http://dlib.net/   (base on dlib)

4) blog

 

http://blog.csdn.net/xiamentingtao/article/details/50908190

 

以下转自:http://blog.csdn.net/hjimce/article/details/50099115

 

基于改进Coarse-to-fine CNN网络的人脸特征点定位

 

 

一、相关理论

    本篇博文主要讲解2013年face++的大牛们提出粗到精人脸特征点定位算法paper:《Extensive Facial Landmark Localization with Coarse to fine Convolutional Network Cascade》,发表于2013年ICCV上的一篇用于定位多个人脸特征点的文献,实现了68个人脸特征点的高精度定位。这篇paper没有给出训练数据,也没有给出测试模型、源代码等,所以源代码需要自己写,训练数据我们需要自己到IBUG网站下载,可以下载到两千多张的训练数据,这篇paper的代码花了我两周的时间,主要是裁一些细节方面很麻烦。

    我个人感觉这篇文章的创新点不是很大,基本上是在文献:《Deep Convolutional Network Cascade for Facial Point Detection》的基础上做了一点点的修改,使得我们构建的CNN模型可以用于定位更多的特征点,总结为一句话就是如果想要看懂这篇文献,还是建议先好好学习paper:《Deep Convolutional Network Cascade for Facial Point Detection》,熟悉代码是怎么实现的,然后再来搞这篇文章的算法,就只需要改一改就OK了。

    人脸68特征点的定位方法,也是采用了从粗到精的定位思想,网络属于DCNN,开始讲解这篇paper之前,我先讲解一下文献的创新点,因为如果你已经熟悉了《Deep Convolutional Network Cascade for Facial Point Detection》的算法,我们只要把创新点抓住,就OK了。本篇给我的感觉最大的创新点在于:在网络的输入方面,不是用人脸检测器检测到的人脸区域图片作为网络的输入,而是采用CNN预测人脸的bounding box,这个改进对初始level定位精度提高非常多,如下图所示,当我们输入一张图片的时候,我们用CNN,分别预测出Inner points和Contour points的最小包围盒:

 

切记:上面的两个部分的特征点预测是完全分开的,各自的网络可以进行并行训练、预测。就像上面,两部分的分开预测,第一层次的目的都是为了获得Bounding Box。

   虽然文献还提出了一些其它方面的细节,但是我感觉基本上对精度影响都不大,比如文献最后在预测inner point的时候,还多了一个层次网络level 4(对总精度提高非常小,后面再讲解),如果你仅仅是为了学习这个算法的话,完全可以不用level 4,当然如果你要实现最高的精度(用于商用),就要把老老实实根据文献的算法,一步一步来了。好了,言归正传,下面开始讲解paper算法。在这篇paper的算法中,被预测的68个人脸特征点分为两个部分。

 

第一部分:主要是人脸五官的特征点预测,这部分预测点的个数为51,在文献中又把这部分特征点命名为:Inner points,貌似文献中并没有显示51个点,如下图所示:

第二部分:用于预测人脸外轮廓的17个特征点。我们又称之为:Contour points ,请记住Contour points和Inner points这两个名词指的是哪部分特征点,我后面都使用这两个词进行讲解。

Inner points和Contour points这两部分相互独立,用不同的网络结构进行预测,也就说这两部分可以并行计算,其中contour point的预测比较简单,paper的大部分精力都花在讲解inner points 上面,算法也都是讲解inner points,因为inner points是五官特征点的位置,定位比较复杂,所以才要花费更多的精力去提高精度。

一、Inner points预测

Inner points的预测是一个四层次的DCNN模型。level 1就是我们前面讲的预测bounding box;level 2 用于这51个点的初始定位,也就是粗定位;level 3 用于精定位;level 4 用于更精定位(这一层次对精度提高很小)。

第一层次(level 1):这个就是我们上面讲的预测最小包围盒。输入一张完整的图片,我们通过这一层CNN,预测这51个点的最小包围盒(Bounding Box)。Bounding box 包含矩形左上角的坐标、右下角的坐标,也就是网络的输出是一个4维的向量:

                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值