程序员用「美貌」突破二维图像的人脸识别

GitChat 作者:于航
原文: 如何利用“女装术”突破基于二维图像的人脸识别
关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术

【不要错过文末彩蛋】

首先声明,这并不是一篇认真严肃地讨论某种IT技术的文章,但这并不代表本文所描述的内容和观点没有任何技术含量。其次,本人在撰写这篇文章时已经征得女朋友的同意,本人也无任何精神类疾病史,所以请诸位放心阅读。

传统的人脸识别技术主要包括“基于几何特征的方法”、“基于模板的方法”和“基于模型的方法”,“基于几何特征的方法”是通过将面部几个重要器官的特征点位置作为分类特征进而推导出一组特征向量,向量中包含如距离和角度等信息,每一幅人脸画面之间通过各自的特征向量来计算对应的相似度进而进行人脸识别和判断,但由于特征点的数量过少,并且特征点的敏感性不高,因此该方法的准确率并不高。

“基于模板的方法”作为“几何特征方法”的改进,加入了一个“损失函数”(Cost Function),通过调节和优化该损失函数,使该函数最小化时对应模型的准确率最高,但这种方式的计算量过大并且需要大量的预处理和精细的参数选择,神经网络便是“基于模板的方法”中的一种。“基于模型的方法”中效果较好的弹性图匹配技术是通过几何特征和对灰度分布信息进行小波纹理分析相结合的识别算法,但该算法的时间复杂度较高,速度较慢,实现复杂。如果将这些种方法根据计算成本、准确率等方面综合对比下来,基于“神经网络”的人脸检测方案会更具有优势。但这些技术仅仅基于二维图片信息所给出的特征而作出的人脸判断结果,其鲁棒性是否可靠呢/p>

原始

在化妆之前,我们先用未经加工的原始图片来进行人脸检测,记录一下化妆前的效果。这里我直接选用了头像的照片,人脸检测平台选用了 Face++。可以看到检测结果中的性别正确,但是年龄推断的准确率并不高,脸部的各个特征点定位准确。

enter image description here

其中虚线框代表可选过程。第一步通常都是用清水洁肤,也就是俗称的洗脸。在洁肤的过程中是否需要使用洗面奶要看个人,由于洗面奶具有较强的洁面去油功效,因此大部分都含有表面活化剂,不建议一天使用超过两次。一般我们都是在睡前使用洗面奶来进行彻底的洁肤,如果是隔天早上需要化妆,则第二天早上的洁肤过程便不建议再使用洗面奶了。当然这个具体还是要因人而异,如果你的皮肤出油情况特别严重影响了上妆的过程,那可能还是需要一次彻底清洁的过程。

在洁肤之后是可选的敷面膜过程,这个过程并不是必要的。但如果你是很严重的干皮,可以考虑加入一个补水面膜的过程。后续的水、精华和乳液则是常用的套路,也是日常护肤中需要的步骤。我自己使用的是 Innisfree 的绿茶水加乳液和红石榴的精华,当然你也可以选择一些男士专用的产品,但基本上都差不多。

这里大致说下精华、水和乳液的基本作用。这里的水一般指化妆水或者爽肤水,主要是用来为肌肤迅速补充水分同时恢复皮肤的酸碱平衡。乳液的主要作用是用来保湿和补充营养。精华一般含有高浓度的护肤成分,主要用于除皱、保湿、美白和抗衰老等作用,在一定程度上可以修正肌肤的问题。

彩妆

彩妆是一个很大的话题,每一个部位的彩妆画法都有很大的学问。首先还是通过一个 Flowchart 来概括下我自己化妆时彩妆部分的大致流程:

enter image description here

最后得到的结果如下所示:

enter image description here

可见,Face++ 对两张图片的人脸识别结果中的性别判断并不准确。这同时也显示了二维/图像人脸识别的一些局限性,在缺少了面部各个部位高度这一特征后,单纯的二维图片可以对其上的像素排列进行任意的改变,并且这种改变的成本并不高。Face++ 的整个人脸识别流程可以归结为:人脸检测 -> 人脸定位 -> 人脸几何校正 -> 人脸光学矫正 -> 特征向量提取 -> 人脸识别

当一张人脸图片输入人脸检测系统后,首先需要通过人脸检测先找到并确认出人脸的位置,然后在这个基础上定位人脸关键点的位置(如眼睛中心或嘴角等)。这些关键点的位置可以用来进行人脸的几何校正,即把人脸通过缩放、旋转、拉伸等图像变化变到一个比较标准的大小位置。这样待识别的人脸区域会更加规整,以便于后续进行匹配。接下来带有标准点的人脸图像会通过一些滤波的方法,去除一些对光照更加敏感的面部特征。在经过这些预处理过程之后,我们就可以通过诸如 Gabor 等边缘检测算法从人脸区域提取各种特征。这些特征数值最后会被拼接成一个特征向量,这个特征向量会经过最后的人脸识别系统进行特征比对,最后得出识别结果。

收尾

我们并不清楚 Face++ 对于人脸性别的判断是基于哪些特征进行的,但无论如何,基于二维图像的人脸识别判断很难达到99%的准确率,并且其鲁棒性也无法达到一个很高的要求,因此也无法用于需要较高准确率的安全验证领域。相对基于简单二维图像的人脸识别技术,增加了基于红外高度测量技术的三维人脸识别技术未来将会有更广阔的应用场景。

【GitChat达人课】

  1. 前端恶棍 · 大漠穷秋 :《Angular 初学者快速上手教程 》
  2. Python 中文社区联合创始人 · Zoom.Quiet :《GitQ: GitHub 入味儿 》
  3. 前端颜值担当 · 余博伦:《如何从零学习 React 技术栈 》
  4. GA 最早期使用者 · GordonChoi:《GA 电商数据分析实践课》
  5. 技术总监及合伙人 · 杨彪:《Gradle 从入门到实战》
  6. 混元霹雳手 · 江湖前端:《Vue 组件通信全揭秘》
  7. 知名互联网公司安卓工程师 · 张拭心:《安卓工程师跳槽面试全指南》

这里写图片描述

来源:软件供应链

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年9月22日
下一篇 2017年9月22日

相关推荐