首页 AI学术青年与开发者社区

计算机视觉基础入门课程(从算法到实战应用)

开课时间:所有课时已更新完成,可随时开始学习
开课时长:24个课时,12次课
机器学习 基础入门
会员免费
现价:¥699.00
原价:¥999.00

  开通会员,立省699元 立即开通

  当前课程,会员领券立减59元>>

该课程已关闭

深度学习时代的 人脸识别

 

pipeline 

->检测  (boarding bolds)

->对齐 (关键点检测)

-> 特征提取 (高维-低维)

-> 识别,(验证)

 

1. 人脸检测

1) 难点: 尺度/肤色/遮挡/角度/光照...

2) 人脸检测有两种方法: 回归问题, Proposal+分类+合并

2.1) 回归问题

建模(设计参数系), 从原始图像中学习一个函数, 从中回归初设计的4个参数.

[x,y,w,h] = f(I), f函数可以是设计,也可以neural network.

问题: 多目标检测, 参数爆炸.

2.2) Proposal+分类+合并.

滑窗 - 分类器(二分类) - 合并, 是人脸识别的主流思想

滑窗, 密集滑,有意义的滑(proposal, 多尺寸)

分类器, CNN- softmax. 级联10跟小分类器(检测率叠乘,误检率叠乘), adaboost思想,弱分类器组合成强分类器.使用单一强分类器,耗时太大(滑窗的尺寸有不同.)

合并, 非极大值抑制. 流程:1)将所有框分数排名取最大; 2)遍历其余框,和当前最高框重合度大于阈值删除; 3)从未处理的框中选最高的,重复上述过程. (类似聚类,置信度)

 

 

2. 人脸对齐(转正)

1) 确定人脸中的标定点 landmark 的位置, 3个点即可.

2) 放射变换: 

二维坐标到另外的二维坐标之间的线性变换(平移/缩放/旋转); 

不共线的3对对应点(6个参数)决定了一个唯一的放射变换. c1c2平移的量, a1b2缩放的量.

3) landmark detection 一般检测5个点, 回归10个参数的量.

4) 回归问题, loss function.

不是 softmax-loss(用于分类的loss);

是 cross-entropy-loss,or,ucdn-loss;

多次回归,级联的思想

 

 

3. 特征学习

1) 分类模型: Deepface, deepID, VGG, ResNet. 问题在于最后的softmax,如果是10000分类的话..

2) 度量学习模型, Triplet Loss, 谷歌, 同类相近异类相远. 对距离进行学习(欧式距离).

 

4. 人脸验证.

1:1 人脸比对.

1) 假定两张人脸提取的特征向量是xj和xk, 欧氏距离or余弦距离.

2)  余弦距离方法笔记方法比较简单, 可以快速判断特征提取网络的性能, 但对于人脸验证的问题, Joint Bayesian方法具有更好的性能.

3) Joint Bayesian方法: 后验概率, EM算法迭代.

1:N 人脸搜索.

1) 人脸特征向量, 逐一比对.

2) 对人脸特征向量做hash编码, 得到只包含0/1元素的向量, 只需要计算向量间的汉明距离(即两个特征向量之间做异成,可大大缩小比较时间), 且特征向量按比特存储,减少内存的消耗.( 大规模图像检索,也需要hash编码)

3) 公开的人脸识别图片数据库.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

课时6笔记:

人脸识别——deep learning age

1. 人脸识别流程

a. 检测

b. 对齐

c.特征提取

d.识别

2. 检测

1)回归

2)proposal+分类+合并

3)关键点检测

3.对齐(三个点即可 )

不共线的三对对应点决定了一个唯一的仿射变换

仿射变换

4.特征学习

1)Triplet Loss “ 同类相近,异类相远”

2)度量学习

5. 识别

1)人脸验证

2)人脸检索

6.回归问题

回归需要用UPDM loss

分类需要用softmax loss

[展开全文]

为什么进行人脸对齐:希望神经网络只学习身份信息,而不是学习人脸的角度等信息。

为什么选3个点进行人脸对齐:不共线的3个点决定了唯一的仿射变换,其中a、b值决定了缩放量,c值决定了平移量

 

[展开全文]

人脸识别的时代 如何进行人脸识别?

具体流程如下:

1.找到人脸,也就是人脸检测,用bb表示;

2.有了bb表示的人脸,将人脸对齐,也就是变换为水平方向放置;

3.有了对齐的人脸,可以提取特征;

4.之后进行识别;

 

各部分难点如下:

1.人脸提取:人脸有尺度,肤色,遮挡,角度,光照等等问题;人脸检测有两种解决方式,一种用回归方法来解决,具体是学习一个f(Image)=[x,y,w,h]函数来进行BB检测,但是问题是这种方法输入可能只能是一张图片,对于一张图片上有几千张脸这个函数的复杂度会很高;第二种人脸检测方法是基于proposal的方法,类似FCNN中的region proposal,有了多个滑窗,我们可以用二分类器来进行是否为人脸的判断,判断出来的滑窗可以进行进一步滑窗融合来实现最终的人脸bb检测。当然这个proposal的生成也有多种方法,可以基于grid按照固定步长产生,也可以使用selective search进行处理(我自己的观点)。有了几个人脸的proposal,我们使用NMS进行region合并。NMS的具体原理就是,对于每个bb,我们都能得到一个置信度,选置信度最高的bb,之后将与这个bb重合面积大于一定阀值的bb进行剔除。

2.人脸对齐:个人理解是希望给人脸识别提供一个强先验,我们希望学习的是人脸身份信息,而不是人脸的位置信息。如何对齐?首先要进行关键点监测,检测到两只眼睛和嘴角或嘴巴中心的三个点的位置,只需要三个点是因为二维平面内只需要三个点就可以确定一个仿射变换,前提是三点不共线。总的来说就是如果知道三点的位置而且三点不共线,可以确定一个二维平面内的仿射变换。经过仿射变换就可以得到一个对齐的图片。不过一般使用五个点,两个眼睛,鼻头,嘴唇两个点。特征点的选取可以使用cnn来做,具体的误差函数可以是欧几里得距离或者softmax损失函数,cnn的输出结果就是五个点的具体位置。一般来说cnn的结构是cnn级连的,效果较好。

3.人脸识别:有了对齐的脸,可以进行特征学习,基本架构为cnn+分类层,这种网络架构有一个问题就是网络参数绝大部分都在后面的全连接层,而cnn层的参数较少。google提出的FaceNet使用triplet loss进行网络学习。

每一个triplet loss由三张图片构成:anchor,negative以及positive。基本思想是学习一个特征表达,使得positve和anchor的距离小于anchor和negative的距离。这种loss是直接对于距离进行学习,而不是学习softmax。

4.人脸验证:

a)给定两张人脸图片,判断是否为同一个人。可以用欧氏距离,余弦距离等判断。注意,判断方法和训练方法中的距离计算要保持一致。不过这种方法用来判断是不是一个人并不是一个很好的方法。Joint Bayesian可能是一种比较好的方法,这种方法学术上用的比较广泛,工业界一般使用余弦距离或者欧氏距离。

b)给定一张人脸图片,判断身份。为了提高搜索速度,我们可以使用hash编码来对人脸特征进行处理,得到只包含01的向量,比对时是需要使用向量之间的汉明距离。

[展开全文]

相关课程

开课日期:深度学习鼻祖Hinton公开课视频,随到随学开始
免费课 29882
开课日期:2020-07-04 08:50开始
4906

授课教师

暂无教师
微信扫码分享课程