2D与3D人脸识别详解

article/2025/9/10 13:06:33

人脸是人体最重要的生物特征之一,而人脸研究主要集中在人脸识别方面,人脸的表达模型分为2D人脸和3D人脸。2D人脸识别研究的时间相对较长,方法流程也相对成熟,在多个领域都有使用,但由于2D信息存在深度数据丢失的局限性,无法完整的表达出真实人脸,所以在实际应用中存在着一些不足,例如识别准确率不高、活体检测准确率不高等。

3D人脸模型比2D人脸模型有更强的描述能力,能更好的表达出真实人脸,所以基于3D数据的人脸识别不管识别准确率还是活体检测准确率都有很大的提高。

2D人脸识别、3D人脸识别现状如何?

2D人脸识别现状

2D人脸识别的优势是实现的算法相对比较多,有一套比较成熟的流程,图像数据获取比较简单,只需一个普通摄像头即可,所以基于2D图像数据的人脸识别是目前的主流,在安防、监控、门禁、考勤、金融身份辅助认证、娱乐等多种场景中都有应用。

2D人脸识别根据其技术发展可分为两大类:传统人脸识别、基于神经网络人脸识别:

  1. 传统人脸识别

传统人脸识别主要采用数学方法,从图像矩阵中提取对应的特征,该特征一般为尺度不变特征,常用的算法有SURF、SIFT、HARRIS、GFTT等。

  1. 基于神经网络人脸识别

目前2D人脸识别算法在各个人脸识别挑战赛、在各种的开源数据集上测试的识别准确率已经达到了99.80%(人脸识别算法insightface在LFW数据集上的测试结果),识别准确率甚至可以跟人类相媲美,但在苛刻的金融环境仅作为一种辅助手段,人脸识别之后还需要别的验证手段,如输入手机号等。

这是为什么?

因为2D人脸识别有一定的局限性,为了弥补不足,3D人脸识别应运而生。

3D人脸识别现状

目前3D人脸识别在市场上根据使用摄像头成像原理主要分为:3D结构光、TOF、双目立体视觉。

3D结构光

3D结构光通过红外光投射器,将具有一定结构特征的光线投射到被拍摄物体上,再由专门的红外摄像头进行采集。主要利用三角形相似的原理进行计算,从而得出图像上每个点的深度信息,最终得到三维数据。

基于3D结构光的人脸识别已在一些智能手机上实际应用,如国外使用了超过10亿张图像(IR和深度图像)训练的FaceId;国内自主研发手机厂商的人脸识别。

TOF

TOF简单的说就是激光测距,照射光源一般采用方波脉冲调制,根据脉冲发射和接收的时间差来测算距离。

采用TOF的方式获取3D数据主要在Kinect上实现,Kinect在2009年推出,目的是作为跟机器的交互设备,用在游戏方面。主要获取并处理的是人体的姿态数据。

双目立体视觉

双目是基于视差原理并由多幅图像获取物体三维几何信息的方法。由双摄像机从不同角度同时获得被测物的两幅数字图像,并基于视差原理恢复出物体的三维几何信息,从而得出图像上每个点的深度信息、最终得到三维数据。

由于双目立体视觉成像原理对硬件要求比较高,特别是相机的焦距、两个摄像头的平面位置,应用范围相对3D结构光TOF少。

3D结构光、TOF、双目的区别如下
在这里插入图片描述
按深度信息使用的方法可以分为两类:3D人脸识别、2D+人脸识别。

3D人脸识别

3D人脸识别处理的是3D的数据,如点云、体素等,这些数据是完整的,立体的,能表达出物体各个角度的特征,不管一个人正脸还是侧脸,理论上都是同一个人。但是因为点云等3D数据具有数据量大、而且点云数据具有无序性、稀疏性等特点,3D人脸识别开发难度比较大。

2D+人脸识别

由于3D人脸识别开发难度比较大,于是有2D+人脸识别,其处理方式比较简单,只是将3D的人脸数据分为2D的RGB数据+深度数据。处理的方法为先采用2D的人脸识别方法处理2D的RGB数据,然后再处理深度数据。这样的处理实现起来就相对较快,因为目前的2D人脸识别有一套比较成熟的方法,特别是CNN出现后,2D的人脸识别在各挑战赛、数据集上识别的准确率已经达到甚至超过人类的识别精度。

2D+人脸识别的方法能比较好将2D人脸识别的方法迁移过来,但是这样人为的将深度信息跟RGB信息分开处理不如3D人脸识别准确率高。2D+人脸识别相对2D人脸识别准确率提高不会很大,但是在活体检测的准确率上有一定的提高。

相对于目前的2D人脸识别,3D人脸识别处理方法上有什么不同,各有什么优缺点?

2D和3D人脸识别的差异

人脸识别2D、3D主要的区别是图像数据的获取、人脸特征的提取方式不一样。但是2D人脸识别跟3D人脸识别步骤基本上一致,都是图像数据获取–>人脸检测–>特征提取–>信息比对,大体的步骤如下表所示:
在这里插入图片描述

由上表可见3D人脸数据比2D人脸数据多了一维深度的信息,不管在识别准确度上还是活体检测准确度上3D人脸识别都比2D人脸识别有优势。但由于3D人脸数据比2D人脸数据多了一维深度信息,在数据处理的方法上有比较大的差异。
在这里插入图片描述

可以看出3D人脸识别细节上比2D的人脸识别复杂。下面我们展开说明。

首先大体回顾2D人脸识别现有的经典模型及实现方式。

2D人脸识别实现

2D的人脸识别因为研究的时间较长,挑战赛、开源数据集等比较多,因此诞生了一批准确率较高的识别人脸识别算法,如deepface、facenet、arcface等,这些算法的流程基本都可以按照前面说的四个大步骤(图像数据采集 -->人脸检测 -->特征提取 -->信息比对)进行,下面对这些2D人脸识别的实现步骤进行分析。

  1. 图像数据采集

图像采集主要是获取目标(这里主要是人脸)的RGB彩色图像,2D图像的获取相对简单,只需要获取到RGB的图像信息,不需要深度信息。获取图像数据的方式只需要一个普通摄像头模组即可,简单方便。

图像采集完毕之后需要对图像进行预处理,如滤波、亮度调整、去噪等,保证输出图片的质量达到要求,减少干扰。预处理是比较重要的一个环节,预处理做好了能提高后面识别步骤的准确度。常用的预处理算法有均值滤波、高斯滤波等线性滤波;中值滤波、双边滤波等非线性滤波;腐蚀、膨胀、开运算、闭运算等形态学滤波;还有伽马矫正、亮度调整、基于直方图统计的图像增强等。

2.人脸检测

人脸检测的目的是找到人脸的区域,并


http://chatgpt.dhexx.cn/article/JTZ3JnOT.shtml

相关文章

一文读懂3D人脸识别十年发展及未来趋势

来源丨机器之心 人脸识别 是机器学习社区研究最多的课题之一,以 3D 人脸识别为代表的相关 ML 技术十年来都有哪些进展? 这篇文章给出了 答案。 近年来,人脸识别的研究已经转向使用 3D 人脸表面,因为 3D 几何信息可以表征更多的鉴别…

商汤科技3D人脸识别技术加持智能门锁,帮你解放双手

刚刚过去的元旦佳节,很多人选择聚餐聚会,共同迎接新年的到来,或是跟恋人一起度过浪漫的跨年夜。 在外有欢声笑语的氛围,回到家也应该有舒适的惬意。若是来到家门口,还要放下拎着的大包小包年货,腾出手来去…

3D人脸识别

目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见Pipeline 3D人脸识别 3D人脸重建 总结 导语 随着深度学习技术的推进,人脸相关任务研究也跃升为学界和业界的热点。人们所熟知的人脸任务一般包括人脸检测&#xff0…

一文为你详解2D与3D人脸识别有什么区别?

最近业界内刮起了一股“人脸识别安全”的大讨论,小到个人大到超市以及银行,都在使用这个刷脸认证或支付,说它好吧,确实解决了无接触,快速高效等问题,你说它不好吧,也是有原因的,比如…

图像算法之3D人脸识别技术原理概述

随着深度学习技术的进步,面部相关任务的研究也成为学术界和工业界的热门话题。众所周知的面部任务通常包括面部检测,面部识别,面部表情识别等,其主要使用2D RGB面部(通常包括一些纹理信息)作为输入; 3D扫描…

vue 小结

var vm new Vue({el : // 挂载点})string 字符串。indexof(‘x’) 如果含有x 则返回 -1 数组添加:push 数组截取:splice

文件加密软件

在电商年代,互联网给大家的衣食住行、工作造成巨大便捷,随之各种各样电子设备的呈现,客户也开始运用文件加密软件来保障自己的数据。现阶段市场上的免费加密软件诸多,客户都是犹豫不决文件加密软件哪家好用这个难题,因…

第十八节 JS中的正则表达式

复习字符串操作: search    查找 substring   获取子字符串 charAt    获取某个字符 split     分割字符串,获取数组 1 var str abcdefghijk; 2 alert(str.search(b)); //返回1,表示b在字符串中的位置是1,不存…

ansible-playbook部署Docker Swarm集群

通过ansible-playbook,部署Docker Swarm集群。 docker安装目录: /var/lib/dockerdocker命令目录: /usr/bin/dockercompose命令目录: /usr/local/bin/docker-composeweavescope: docker可视化管理工具scope命令目录: …

WebGIS中利用AGS JS+eCharts实现一些数据展示的探索

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.背景 eCharts提供了迁徙图、热点图、夜视图等跟地图能够很好的结合起来的数据展示方式。但是如何将eCharts和我们的AGS JS框架以及自身的地图相结合&…

AngularJS所有版本下载地址

AngularJS官网本身采用AngularJS库构建,页面中的AngularJS库通过Google的CDN(内容分发网络)引入,所以国内访问会有问题。 大家可以从下面地址获取AngularJS所以版本: https://code.angularjs.org/ 各种版本应有尽有&a…

视频教程-Web前端进阶-AngularJs4从基础到实战-AngularJS

Web前端进阶-AngularJs4从基础到实战 优就业互联网营销首席讲师 精通各大搜索引擎原理,对SEO有深入的研究和独到见解,擅长站内与站外优化与策略部署。熟悉常用的Web项目开发技术,擅长营销型、成交型网站策划,精通织梦、帝国、word…

arcgis js(二)显示三维地图

1、上一节讲了arcgis js入门与提高(一)加载二维地图arcgis js(一)显示二维地图_郝大大的博客-CSDN博客,本节继续讲如何加载三维地图,与3.x版本不同,ArcGIS API for JavaScript 3.x版本地图都是显…

【九】坐标格网添加以及调整

一、前言 有些小伙伴应该见过上述这种专业的制图,本节主要是针对上述图片中的坐标格网进行讲解。如果添加并且对其进行设置。 二、具体步骤 1、接上前文的内容继续,首先一样添加相关数据并且切换到布局视图。 2、 单击一下数据格网,然后被选…

AngularJS简单入门教学和使用

前端框架千千万&#xff0c;今天我们来学习简单的AngularJS的入门案例和学习&#xff0c;让我们快速掌握和使用 使用步骤 引入js文件&#xff0c;前端框架首先就是引入js脚本&#xff0c;这里可以去官网上进行下载 <script src"../plugins/angularjs/angular.min.j…

js搭建网站 web服务器,AngularJS如何搭建web服务器?angularjs搭建web服务器的详细过程...

本篇文章主要的介绍了关于angularjs启动web服务器的操作&#xff0c;希望能帮到大家&#xff0c;现在开始看文章吧 安装node.js 下载链接 官网地址&#xff1a; https://nodejs.org/en/ 我下的解压版的&#xff0c;直接解压到你想安装的目录中 在我的电脑(右键)→属性→高级系统…

python画气球_戳气球(python)

问题描述* 有 n 个气球&#xff0c;编号为0 到 n-1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。如果你戳破气球 i &#xff0c;就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代…

312. 戳气球(区间dp)

链接&#xff1a;https://leetcode-cn.com/problems/burst-balloons/ 首先这个长度为500的范围可以猜测出是O(n^3)区间dp这里主要讲述为什么状态定义要定义成开区间而不是闭区间 最大的原因&#xff1a;闭区间计算出来的状态是无法保证正确性的 假如使用一开始的闭区间定义去…

Python 算法戳气球

戳气球 题目描述&#xff1a; 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#xff0c;你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里…

1012-戳气球

题目如下 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#xff0c;你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代…