严格定义上的人脸识别分为四个步骤:

①人脸检测:从图片中准确定位到人脸

②人脸对齐: 自动定位出面部关键特征点,

③进行特征提取

④对两张人脸图像的特征向量进行对比,计算相似度。

当今的人脸识别系统如下图所示的流程:一张人脸图片输入后,需要先找到人脸的位置(人脸检测),然后在这个基础上定位人脸关键点的位置(如眼睛中心或嘴角等),每个系统关键点提取的数量相差很大,有的只有左右眼睛中心两个点,有的可能多达近百个点。这些点的位置一是用来做人脸的几何校正,即把人脸通过缩放、旋转、拉伸等图像变化变到一个比较标准的大小位置。这样待识别的人脸区域会更加规整,便于后续进行匹配。

同时,现在的实际系统一般也都配有人脸光学校正模块,通过一些滤波的方法,去除一些对光照更加敏感的面部特征。

之后,就是从人脸区域提取各种特征,包括LBP、HOG、Gabor等。最终相关的特征会连接成一个长的特征FeatureVector,然后匹配出人脸的相似度,根据相似度的大小,系统会判定两张图片到底是不是一个人。不难看出,人脸识别技术还是一个系统链条较长,较为有技术门槛的领域。因为这条流水线的每个环节可能都会严重影响最终系统性能,所以一个好的人脸识别技术公司需要在各个环节上追求细节,建立自己的技术优势,最终才有可能在最后的人脸识别精度上有出色的表现。

人脸对齐任务即根据输入的人脸图像,自动定位出面部关键特征点,如眼睛、鼻尖、嘴角点、眉毛以及人脸各部件轮廓点等,并提取相应的部件特征。

人脸对齐主要将人脸中的 eyes, mouth, nose and chin 检测出来,用特征点标记出来。人脸对齐的结果可以用于:人脸验证, 人脸识别(Face recognition),表情识别(Expression recognition), 姿态估计(Pose Estimation) 等。

     从技术实现上可将人脸关键点检测分为2大类:生成式方法(Generative methods) 和判别式方法Discriminative methods。Generative methods 构建人脸shape和appearance的生成模型。这类方法将人脸对齐看作是一个优化问题,来寻找最优的shape和appearance参数,使得appearance模型能够最好拟合输入的人脸。这类方法包括:

  • AAM (Active Appearnce Model)
  • ASM(Active Shape Model)

判别式方法直接从appearance推断目标位置。这类方法通常通过学习独立的局部检测器或回归器来定位每个面部关键点然后用一个全局的形状模型对预测结果进行调整,使其规范化。或者直接学习一个向量回归函数来推断整个脸部的形状。这类方法包括传统的方法以及最新的深度学习方法,具体分为如下几种经典的实现方式:

  • Constrained local models (CLMs)
  • Deformable part models (DPMs)
  • 基于级联形状回归的方法(Cascaded regression)
  • 基于深度学习的DCNN

from:人脸关键点检测总结

一、ASM(Active Shape Model)算法

ASM是基于特征点分布模型(Point Distribution Model,PDM)提取的一种方法。在PDM中,外形相似的物体,例如人脸、人手、心脏、肺部等的几何形状可以通过若干关键特征点(landmarks)的坐标依次串联形成一个形状向量来表示。

ASM跟大多数统计学习方法一样,也包括train和test两部分,也就是形状建模build和形状匹配fit。这个算法其实很简单,可以用来做实时性的检测。步骤:人工标定训练集->对齐构建形状模型->搜索匹配==

为了建立ASM,需要一组标有n个特征点的N幅人脸图象(包括多个人的不同表情和姿态)作为训练数据。特征点可以标记在脸的外部轮廓和器官的边缘,需要注意的是各个标定点的顺序在训练集中的各张照片需要一致。得到特征点集,可以看做一个2n维的向量,n表示特征点数量: 
                                           
模型训练:

1)对齐

为了研究训练图象的形状变化,比较不同形状中相对应的点,应先对这些图象进行对齐。对齐是指以某个形状为基准,对其它形状进行旋转,缩放和平移使其尽可能的与基准形状接近的过程。

首先选择一幅基准图像。训练集中其他图片经过变换尽可能的接近该基准图像,具体的变化过程可以用一个缩放幅度参数s,旋转参数theta以及平移参数矩阵t表示。在数学上我们经常用欧式距离的大小衡量接近的程度。假设图像i的标定点矩阵为Xi,图像j的标定点矩阵为Xj,二者的欧式距离大小为 
                                                     
2) 构建局部特征

对对齐后的形状特征做PCA处理。接着为每个关键点构建局部特征。目的是在每次迭代搜索过程中每个关键点可以寻找新的位置。局部特征一般用梯度特征,以防光照变化。有的方法沿着边缘的法线方向提取,有的方法在关键点附近的矩形区域提取。

形状搜索

首先:计算眼睛(或者嘴巴)的位置,做简单的尺度和旋转变化,对齐人脸;接着,在对齐后的各个点附近搜索,匹配每个局部关键点(常采用马氏距离),得到初步形状;再用平均人脸(形状模型)修正匹配结果;迭代直到收敛。

优点:

1. 得到的特征点是有序;
2. 能根据训练数据对于参数的调节加以限制,从而将形状的改变限制在一个合理的范围内。

缺点:

1. 需要人工对特征点进行顺序标注,工作量超大;
2. 其近似于穷举搜索的关键点定位方式在一定程度上限制了其运算效率。

二、人脸关键点定位3000fps的LBF方法

基于LBF方法的人脸对齐,出自Face Alignment at3000 FPS via Regressing Local Binary Features,由于该方法提取的是局部二值特征(LBF),论文作者的LBF fast达到了3000fps的速度,网上热心网友分享的程序也达到了近300fps的速度,绝对是人脸对齐方面速度最快的一种算法。因此,好多网友也将该方法称为,3000fps。

该算法的核心工作主要有两部分,总体上采用了随机森林和全局线性回归相结合的方法,相对于使用卷积神经的深度学习方法,LBF采用的算法是传统的机器学习方法。

2.1、LBF特征的提取

LBF算法,将随机森林的输出组成一种特征(这里也就是LBF),并用LBF来做预测,除了采用随机森林的结构做预测,LBF还针对每个关键点给出一个随机森林来做预测,并将所有关键点对应的随机森林输出的局部特征相互联系起来,称作为局部二值特征,然后利用这个局部二值特征做全局回归,来预测形状变化量。

在特征点附近,随机选择点做残差来学习LBF特征,每一个特征点都会学到由好多随机树组成的随机森林,因此,一个特征点就得用一个随机森林生成的0,1特征向量来表示,将所有的特征点的随机森林都连接到一起,生成一个全局特征,后续过程就可以使用该全局特征做全局线性回归了。

其中表示在第t次级联回归中,第l个特征点所对应的随机森林,所有的关键点的随机森林一起组成了,它的输出为LBF特征。然后利用LBF特征来训练全局线性回归或者预测形状变化量。

上图描述生成局部二值特征LBF的过程,图的下半部分描述了单个关键点上随机森林输出了一个局部二值特征,然后把所有随机森林的输出前后连接起来组成一个非常大但又十分稀疏的LBF特征。第一颗树遍历后来到了最左边的叶子节点所以记为[1,0,0,0],对于第一课树访问到的叶子节点记为1,其他的记为0,把所有的结果串联起来就是=[1,0,0,0,0,1,0,0,0,0,1,0.....],其中这个特征只有0,1组成,且大部分是0,特征非常的稀疏。真正的局部 二值特征就是将所有的landmark的特征串联起来,即是

2.2、基于cascade级联的随机森林做全局线性回归

所谓的线性回归,其实就是一个不断迭代的过程,对于每一个stage中,用上一个stage的状态作为输入来更新,产生下一个stage的输入,以此类推,直到达到最底层stage。

训练过程中,先初始化一个shape ,用一种特征映射方法Φt生成局部二值特征。根据特征和目标shape的增量生成最终shape。权值通过线性回归进行更新。在测试阶段,直接预测形状增量,并应用于更新当前估计的形状。形状增量:

如上公式所示,I为输入图像,为第t-1 stage的形状,Φt为t stage的特征匹配函数,W为线性回归矩阵。

形状索引特征(shape-indexed)

每一个关键点对应一个随机森林,而随机森林是由多个独立的随机树组成。论文中的随机树采用的特征是形状索引特征,ESR(CVPR‘12)和RCPR(ICCV'13)也是采用了类似的特征,这个特征主要是描述人脸区域中两个点的像素差值。关于两个像素点的选取,三个方法都使用了不同的策略。

ESR方法采用的是在两个关键点附近随机出两个点,做这两个点之间的差值作为形状索引特征。

RCPR方法采用的选取两个关键点的中点,外加一个随机偏置来生成特征点,用两个这样的特征点的差值作为形状索引特征。

在LBF算法中,由于随机森林是针对单个关键点的,所有随机树使用到的特征点不会关联到其他关键点,3000fps的做法是在当前关键点的附近区域随机产生两个特征点,用这两个点的像素差值来作为形状索引特征。下图是每个特征点的局部区域面积变化,索引面积从大到小逐渐变小,目的是为了获得更加准确的局部索引特征。

随机森林训练

在LBF算法中,由于随机森林是针对单个关键点的,所有随机树种使用到的特征点不会关联到其他关键点,只有在当前关键点的附近区域随机产生两个特征点,做像素差值来作为形状索引特征。

计算每一张图片的这两个点处的像素值的像素差,从事先随机生成的形状索引特征集合F中选取一个,作为分裂特征,之后随机产生一个分裂阈值,如果一幅图像的像素差小于这个阈值,就往左分裂,否则往右分裂,将所有图片都这样判断一次,就将所有图片分成了两部分,一部分在左,一部分在右。我们重复上面这个过程若干次,看看哪一次分裂的好(判断是否分裂的好的依据是方差,如果分在左边的样本的方差小,这说明它们是一类,分的就好),就把这个分裂的好的选择保存下来,即保存下这两个点的坐标值和分裂阈值。这样一个节点的分裂就完成了。然后每一个节点的分裂都按照这个步骤进行,直到分裂到叶子节点。

分配的目的是希望左右子树的样本点的Y具有相同的模式。论文实现中,特征选取可以采用如下的方式进行。

,就是信息增益

上式中f表示选取到的特征函数(即利用随机采样到的特征点计算形状索引特征(这里用的像素差值), Δ表示随机生成的阈值,S用来刻画样本点之间的相似度或者样本集合的熵(论文中,采用的是方差)。针对每一个几点,训练数据(X,Y)被分成两部分,(X1,Y1)和(X2,Y2),我们期望左右字数的样本数据具有相同的模式,论文中采用了方差刻画,所以选择特征函数f时,我们希望方差减小最大。

权值学习:使用的双坐标下降方法,使下公式最小:

λ是控制Wt长度,即让Wt尽量稀疏。测试的时候,先对一幅图像提取形状索引特征, 然后使用随机森林进行编码,最后使用w估计shape增量。

from:https://blog.csdn.net/u011808673/article/details/80267778

from:https://blog.csdn.net/zhou894509/article/details/54629130

github上热心网友的程序,

matab版本:https://github.com/jwyang/face-alignment

c++版本:https://github.com/yulequan/face-alignment-in-3000fps


基于级联卷积神经网络的人脸特征点定位DCNN

这里只做简要概述,详细讲解可参考博文:https://blog.csdn.net/hjimce/article/details/50099115

2013年CVPR的一篇利用深度学习做人脸特征点定位的经典paper:《Deep Convolutional Network Cascade for Facial Point Detection》,论文的主页为:http://mmlab.ie.cuhk.edu.hk/archive/CNN_FacePoint.htm 。这篇paper是利用深度学习搞人脸特征点定位的开山之作,后来face++发表的几篇paper的思想,都是在这篇paper的算法上进行扩展的。

在之前学过的各种深度学习模型中,一般就只有一个CNN,可这篇paper是由十几个CNN组成的。文献中如下网络结构图片:

这篇papar的DCNN,总体上分成三大部分,分别是:level 1、level 2、level 3。每个level 里面,包含着好几个CNN模型。在最开始的时候,首先,我们利用人脸检测器,裁剪出人脸图片,具体的人脸检测器的就是用我们传统的方法,比如haar特征。然后把我们裁剪出来的人脸图片,作为level 1的输入。

1、level 1网络架构

网络的输入:通过人脸检测器,裁剪出face bounding box,然后把它转换成灰度图像,最后缩放到39*39大小的图片,作为我们level 1的输入。

level 1由三个卷积神经网络组成,这三个卷积神经网络分别命名为:F1(网络的输入为一整张人脸图片),EN1(输入图片包含了眼睛和鼻子)、NM1(包含了鼻子和嘴巴区域)。这三个卷积网络区别在于输入的图片区域不同:


A、F1结构

F1的输入为整个人脸图片(39*39的大小),输出为我们所要预测的五个特征点。F1的网络结构如下:

输入一张人脸图片大小为39*39,然后通过卷积神经网络,输出一个10维的特征向量(5个特征点)。F1的结构,第一个层特征图选择20,第二次卷积特征图个数选择40,然后接着是60、80。具体各层的参数可以参考下面表格:

I(39,39)表示输入图片大小为39*39,P(2)应该表示池化为stride大小为2。具体的各层参数我就不再详解,因为这个不是重点,而且即便是你没有根据paper的结构进行设计,对精度的影响也不大。

B、EN1、NM1的网络结构

这两个CNN和F1基本相同,不过输入图片的大小不同,输出神经元的个数也不相同。

EN1用于定位:左眼+右眼+鼻子 三个特征点,输出层的神经元个数就是6。然后输入的图片,是我们根据比例裁剪的,我们把39*39图片的上半部分裁剪出来,裁剪出31*39大小的图片,当然裁剪大小比例这个是一个经验裁剪,我们只要保证裁剪的区域包含了眼睛和鼻子区域就好了。

NM1用于定位:左嘴角+右嘴角+鼻子 三个特征点。同样的,网络的输出就是6个神经元,输入部分从人脸的底部往上裁剪,也是裁剪出31*39的图片,只要裁剪出来的区域,只包含嘴巴和鼻子,就OK了。具体这两个CNN的各层相关参数,如下表格中的S1行所示(S0是F1,S1是EN1、NM1):

我们通过平均的方法连接F1、EN1、NM1三个网络,把重复预测的特征点进行位置平均。比如我们的鼻子点,三个网络都可以预测到位置,那么我们就把这三个网络预测出来的鼻子点,三个点相加,然后除以3,就可以得到平均位置了。再如,右眼睛,我们F1、EN1这两个网络有预测,我们就把这两个网络预测到的右眼睛点相加在一起,然后除以2,就得到平均位置了。”平均“可以提高网络的稳定性、防止预测特征点的位置偏差过大,提高精度。

我们大体知道了level 1由三个CNN组成,三个CNN分别预测各自所需要的特征点,然后进行位置平均。这三个CNN都包含了9层(如上面的表格所示),算是一个深度网络。level 1因为是粗定位,输入的图片区域比较大,特征提取难度比较大,所以我们设计这一层级网络的时候,需要保证网络的深度,用于提取复杂的特征。

2、level 2 网络架构

A、level 2的输入

经过了level 1 我们知道了,各个特征点的位置,接着我们要减小搜索范围,我们以第一层级预测到的特征点,以这五个预测特征点为中心,然后用一个较小的bbox,把这五个特征点的小区域范围内的图片裁剪出来,如下图所示:

    ,    

上图中,红色的点就是我们用level 1 预测出来的位置,然后在进行裁剪(以level 1的特征点为中心,裁剪出一个矩形框)那么我们要裁剪多大?这个可以从下面表格参数中知道,level 2采用的是S2行,我们只需要看S2那一行参数就可以了,即15*15大小的区域:

B、网络总体结构

level 2 由10个CNN组成,每个CNN网络层数、每层的相关参数,如上面的表格中S2那一行所示。总之就是leve 2 和level 3的结构都是用了S2那一行的参数,每个CNN包含6层。

这10个CNN,分别用于预测5个特征点,每个特征点用两个CNN,然后两个CNN对预测的结果进行平均。我们以左眼特征点为例,我们用表格S2行的参数设计出了LE21、LE22,我们在训练的时候,训练了两个模型,这两个CNN都是用于预测左眼特征点,然后我们使用的时候,就直接用这两个CNN预测到的特征点,做位置平均。

3、level 3网络架构

level 3是在level 2得到预测点位置的基础上,重新进行裁剪。我们知道由level 2的网络,我们可以进一步得到那5个特征点的位置(离正确的点越近了),然后我们利用level 2的预测位置,重新进行裁剪。然后在重新进行预测,level 3的总体结构如下:

与level 2结构相同,也是由10个CNN组成,每两个CNN预测1个特征点。那么level 3和level 2的区别在哪里呢?首先我们的裁剪区域发生了变化,我们也可以让level 3的裁剪图片大小再变得更小一些。

网络训练

测试误差评价标准公式如下:

其中l是人脸框的长度。

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

详细可参考大牛的博客:https://blog.csdn.net/hjimce/article/details/50099115

paper:《Extensive Facial Landmark Localization with Coarse to fine Convolutional Network Cascade》,发表于2013年ICCV上的一篇用于定位多个人脸特征点的文献,实现了68个人脸特征点的高精度定位。这篇文章基本上是在文献:《Deep Convolutional Network Cascade for Facial Point Detection》的基础上做了一点点的修改,使得我们构建的CNN模型可以用于定位更多的特征点

本篇最大的创新点在于:在网络的输入方面,不是用人脸检测器检测到的人脸区域图片作为网络的输入,而是采用CNN预测人脸的bounding box这个改进对初始level定位精度提高非常多,如下图所示,当我们输入一张图片的时候,我们用CNN,分别预测出Inner points和Contour points的最小包围盒:

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

在这篇paper的算法中,被预测的68个人脸特征点分为两个部分。

  • 第一部分:主要是人脸五官的特征点预测,这部分预测点的个数为51,这部分特征点命名为:Inner points;
  • 第二部分:用于预测人脸外轮廓的17个特征点。称之为:Contour points ;

                    
                                             Inner points                                          Contour 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维的向量

        

第二层次(level 2):

  • 网络的输入:把level 1得到的最小包围盒中的图片裁剪出来,作为输入,进行51个点人脸特征点预测。
  • 网络的输出:51个特征点预测位置(粗定位位置),所以CNN的输出是102神经元。

这一层次比较简单,就是常见的CNN,用普通的CNN预测51个特征点(因为这一层预测的精度还不够高,只能作为51个点的粗定位。我们需要有后面继续两个层次网络进行精定位)。

第三层次(level 3):做进一步的精定位。

  • 网络输入:利用level 2的51个点,对五官裁剪,进行分开训练、预测。本层需要有4个CNN模型,用于预测各自的特征点
  • 网络输出:各个器官的特征点

第二层次预测的51个点,之所以精度不够高,是因为我们输入的图片是大的图片,是对全局的统一预测,容易受冗余信息的干扰。说的简单一点吧:假设你要定位嘴巴的特征点,你的输入图片就应该只有嘴巴部分的区域图片,这样的精度才会比较高,而不是你把一整张人脸图片作为输入,这样冗余信息太多,容易干扰到我们的嘴巴区域的定位。

因此我们这一层次的网络,就是要利用level 2的网络预测到的51个点,把五官的图片裁剪出来,然后对五官进行分别的定位。具体的示意图如下:

第四层次(level 4):计算level 3的各个五官的旋转角度,然后把五官摆正,作为第四层次网络输入图片,然后在进行预测。

对于我们来说可以不去实现,只到level 3就好了,这篇paper是为了达到state-off-art 所以才增加了level 4。其实这一层网络,对精度的提高非常非常小,我们看一下paper的每一层的误差:

level 2 作为初始的预测,验证误差是0.051,通过leve 3的精定位,误差减小到了0.0438,也就是说相对精度相当于提高了14%,这一层精度的提高很明显。然而从level 3到level 4 误差从0.0438到0.0431,好像性能提高不了多少。因此对于我们如果要用于商用,需要考虑计算时间效率、精度等综合因素,可以不要采用paper的level 4,不划算,精度提高那么小,计算时间却增加了相当多。

二、Contour points预测

这17个点的预测比较简单粗暴,就只是两个层次的DCNN模型,这两个层次说的简单一点就是类似上面Inner points的第一、二两个层次网络。

第一层次:这个在前面已经讲过了,也就是预测Contour points的最小包围盒

第二层次:CNN直接预测这17个特征点。

这个预测过程,没有精定位过程。也就是没有第三、四层次的CNN精定位,一来是因为这些脸庞特征点的图片区域比较大,如果加上第三、四层次的话,会比较耗时间。

总结:这篇文献的思想和《Deep Convolutional Network Cascade for Facial Point Detection》的思想是一样的,是在这篇paper的基础上,进行改进的一种用于多个特征点预测的网络结构。

从这篇paper的创新方面讲:

1、文献把人脸的特征点定位,分开成两个部分了:Inner和Contour两部分特征点,进行分开预测

2、在Inner的预测部分,从level 2 开始把五官裁剪分开,进行精定位。

3、在每个器官的每个特征点的定位方面,并没有像《Deep Convolutional Network Cascade for Facial Point Detection》的方法,把每个特征点的都用独立的网络进行定位,不然,51个特征点的定位,精定位的每一层次就要有102个CNN模型(因为《Deep Convolutional Network Cascade for Facial Point Detection》文献每个特征点的精定位是用了两个网络进行训练、预测,然后用两个网络的输出作为平均值,所以是102个网络),这样太耗时间了,万一我要定位300个特征点,不得崩溃。因此face++的这篇paper并没有把每个特征点分开独立训练、预测,仅仅把各个器官分开训练。

4、多了一个bounding box 层,可以大大提高特征点粗定位网络的精度。

三、相关细节与原理解释

1、各个五官分开预测的原因解释

各个部分分开训练,这样网络的损失函数是分开的。这样做可以提高精度的原因在于:因为网络各个部位特征点的定位难度不同,或者说定位难度不平衡。比如,contour特征点的定位比inner特征点的定位难度大,这个主要是因为人脸外轮廓往往比较模糊、还有受到头发等背景因素的干扰,所以人脸的外轮廓的特征点的定位难度会比较大。这些因素,引起了训练损失函数各个特征点严重的不平衡,比如比较难定位的contour的特征点,就会对损失函数,占用比较大的比重,因此如果我们68个特征点一起训练的话,L2损失函数值基本上是contour的特征点占用了比较大的比重。所以文献才采用把inner和contour分开预测,这样可以避免不平衡问题。

同理,在inner预测部分,把五官的预测都分开。比如因为眉毛的误差往往会比较大,而眼睛的预测精度就比较高了,这样把各个器官都分开,不共用一个损失函数,可以避免不平衡问题。

2、采用CNN预测bounding box

相比与直接采用人脸检测器,进行预测人脸矩形框来说,这个方法比较靠谱。因为采用人脸检测器检测到的人脸框,往往包含了太多了无关的背景,会对我们的网络有一定的干扰。另一方面,如果直接采用人脸检测器,检测到的人脸并不是一定位于矩形的中心,这样对结果也会有一定的影响。

from :https://www.jianshu.com/p/e4b9317a817f

from:https://blog.csdn.net/u013948010/article/details/80520540

人脸对齐及关键点检测相关推荐

  1. 人脸定点:关键点检测方法汇总

    相关博客:  http://blog.csdn.net/yang_xian521/article/details/7468571  http://blog.sina.com.cn/s/blog_6d8 ...

  2. Demo : 人脸5个关键点检测

    Demo : 人脸5个关键点检测 资料 代码:gitee 数据集:百度云盘 密码:jc6w 算法构建 人脸关键点检测,需要使用回归算法,因此一开始的想法就是前面使用多层卷积,适当添加残差网络作为基础模 ...

  3. AI换脸-简单换脸、人脸对齐、关键点定位与画图

    ```bash简单换脸.人脸对齐.关键点定位与画图有人将其进行中文翻译也有将其进行一定改编有以下两个案例:1.<川普撞脸希拉里(基于 OpenCV 的面部特征交换)-2>变脸变脸贴图:从这 ...

  4. HyperLandmark-开源人脸106点关键点检测SDK,北京智云视图科技

    原 HyperLandmark-开源人脸106点关键点检测SDK 2018年07月19日 15:25:44 lsy17096535 阅读数:3260 </div><div class ...

  5. dilb人脸识别+68关键点检测

    **简单的人脸识别 记个笔记 ** # 导入库 import cv2.cv2 as cv2 import numpy as np import dlib import matplotlib.pyplo ...

  6. python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图

    这是一个利用dlib进行关键点定位 + opencv处理的人脸对齐.换脸.关键点识别的小demo.原文来自于<Switching Eds: Face swapping with Python, ...

  7. python+OpenCv+dlib实现人脸68个关键点检测

    pip install dlib==19.7.0 下载地址: http://dlib.net/files/ dlib中为我们提供了关于人脸检测标注训练好的文件可在http://dlib.net/fil ...

  8. 人脸数据库大全(包括人脸识别、关键点检测、表情识别,人脸姿态等等)

    搞计算机视觉的人,对人脸技术并不陌生.在做实验的时候需要各种数据集进行训练,却往往苦于找不到合适的数据集,这篇文章将给大家带来一点福音. 目前为止最全的是人脸数据库总结: The Color FERE ...

  9. caffe 人脸关键点检测_人脸关键点对齐

    摘要: 从传统方法到深度学习方法,对人脸关键点定位/人脸对齐的发展进行梳理,对该领域中经典的方法,最新成果进行汇总,并给出相应的paper原文,项目主页及代码链接.重点介绍深度学习的几种最新方法. 1 ...

最新文章

  1. 云服务器ECS挖矿木马病毒处理和解决方案
  2. 计算机管理器磁盘清理,修复win7提示“windows磁盘空间清理管理器已停止工作”的方法...
  3. Objective-C学习笔记--NSLog用法及例子
  4. okhttp_utils的使用以及与服务端springboot交互中遇到的问题
  5. kmeans算法学习2
  6. 基于AE的SimpleGIS框架的搭建
  7. nodejs通过响应回写的方式渲染页面资源
  8. pytest测试框架_带你深入理解自动化测试框架Pytest的配置文件!
  9. Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT,博主亲自验证有效
  10. 解决微信浏览器无法使用reload()刷新页面
  11. MOSS Visual How To 系列
  12. 趣味程序设计_打印日历
  13. uniapp app 腾讯云 IM 创建群组(陌生交友)
  14. 用css 添加手状样式,鼠标移上去变小手
  15. CentOS7常用软件安装配置说明
  16. 我们可以用什么来编辑html文件,编辑HTML文件要用什么软件?
  17. 法国留学DIY的必备条件和步骤
  18. REST API 详解
  19. 南邮linux编程实验报告,小弟在南邮选了一门令我终生后悔的选修课:linux基础教程,考试不会了!-!...
  20. 牛客小白月赛8 vector的使用

热门文章

  1. js获取局域网ip地址以及获取服务器端得时间(已测,复制粘贴即可使用)
  2. jmeter中md5加密
  3. 魅族公布苏宁818战报:魅蓝3s斩获单品销量冠军
  4. linux 关闭非法端口的多种方法 例如 111,135,137端口
  5. html写剑网三界面
  6. 字符串倒序输出的五种方法
  7. Linux文件目录操作命令-cp命令
  8. MySQL中特别实用的几种SQL语句
  9. Android-使用Jenkins自动化打包详解-Linux篇
  10. CF:E. Moving Chips【二维双dp + dp灵活交叉】