前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Openface人脸识别的原理与过程

Openface人脸识别的原理与过程

作者头像
微风、掠过
发布2018-04-10 15:34:57
2.9K0
发布2018-04-10 15:34:57
举报

Openface人脸识别的原理与过程:

https://zhuanlan.zhihu.com/p/24567586

原理可参考如下论文:

《OpenFace: A general-purpose face recognition library with mobile applications》

第一步:找出所有的面孔

我们流水线的第一步是人脸检测。

我们的目标是找出并比较当前像素与直接围绕它的像素的深度。然后我们要画一个箭头来代表图像变暗的方向:

用梯度来代替像素这事看起来没有明确目的,但其实背后的理由很充分。如果我们直接分析像素,同一个人明暗不同的两张照片将具有完全不同的像素值。但是如果只考虑亮度变化方向(direction)的话,明暗图像将会有同样的结果。这使得问题变得更容易解决!

但是保存每个像素的梯度太过细节化了,我们最终很有可能「一叶障目不见泰山」。如果能从更高的角度上观察基本的明暗流动,我们就可以看出图像的基本规律,这会比之前更好。

为了做到这一点,我们将图像分割成一些16×16像素的小方块。在每个小方块中,我们将计算出每个主方向上有多少个梯度(有多少指向上,指向右上,指向右等)。然后我们将用指向性最强那个方向的箭头来代替原来的那个小方块。

最终的结果是,我们把原始图像转换成了一个非常简单的表达形式,这种表达形式可以用一种简单的方式来捕获面部的基本结构:

利用HOG去detector人脸

HOG脸部图案

第二步为面部特征点估计(face landmark estimation)。

但这次我们会使用由瓦希德·卡奇米(Vahid Kazemi)和约瑟菲娜·沙利文(Josephine Sullivan)在2014年发明的方法ERT(集成回归树)

68点序号图

第三步:给脸部编码

所以,解决方案是训练一个深度卷积神经网络(就像我们在第三章做的那样)。但是,并不是让它去识别图片中的物体,这一次我们的训练是要让它为脸部生成128个测量值。通过训练网络来生成这个128个特征,使得这些特征具有如下关系:相同人的图片距离尽可能接近,而不同人的照片距离尽可能远。

每次训练要观察三个不同的脸部图像(Triplet loss):

1.加载一张已知的人的面部训练图像

2.加载同一个人的另一张照片

3.加载另外一个人的照片

机器学习专业人士把每张脸的128个测量值称为一个嵌入(embedding)。将复杂的原始数据(如图片)缩减为可由计算机生成的一个数列的方法,在机器学习(特别是语言翻译)中出现了很多次。我们正在使用的这种脸部提取方法是由Google的研究人员在2015年发明的,但也有许多类似方法存在。

该训练网络已经完成,我们只需要使用它即可生成128个特征值。

第四步:从编码中找出人的名字

面部识别分类器:基于简单线性SVM

总结:

1.使用HOG算法给图片编码,以创建图片的简化版本。使用这个简化的图像,找到其中看起来最像通用HOG面部编码的部分。

2.通过找到脸上的主要特征点,找出脸部的姿势。一旦我们找到这些特征点,就利用它们把图像扭曲,使眼睛和嘴巴居中。

3.把上一步得到的面部图像放入神经网络中,神经网络知道如何找到128个特征测量值。保存这128个测量值。

4.看看我们过去已经测量过的所有脸部,找出哪个人的测量值和我们要测量的面部最接近。这就是你要找的人!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档