OpenCV人脸识别(1)原理介绍

article/2025/10/26 10:29:40

前言

本系列博客学习如何使用OpenCV来执行面部识别。

为了构建人脸识别系统,我们首先进行人脸检测,使用深度学习从每个人脸提取人脸特征,在提取到特征上训练人脸识别模型,然后用OpenCV识别图像和视频流中的人脸。

这里提取人脸特征,用到Embedding(嵌入)。

那什么是Embedding(嵌入)呢?,把高维原始数据(人脸图像)映射到低维流形,使得高维的原始数据被映射到低维流形之后变得可分,而这个映射就叫嵌入(Embedding);它起到提取特征和降维的作用;

关于Embedding(嵌入)的原理可以看看:https://www.zhihu.com/question/38002635、https://zhuanlan.zhihu.com/p/138310401

 

思路

本博客中,我们将学习如何将深度学习和OpenCV一起应用(除了scikit-learn之外没有其他库):

  1. 检测面部
  2. 计算128-d面部嵌入Embedding(特征向量)以量化面部特征
  3. 在嵌入(Embedding)之上训练支持向量机(SVM)
  4. 识别图像和视频流中的面部

所有这些任务都将通过OpenCV完成,使我们能够获得“纯粹的”OpenCV人脸识别内容。

 

流程框架:

其中关键步骤是DNN特征提取器,可生成128维面部嵌入(Embedding)。

                        图1: OpenCV人脸识别流程概述。

两个关键步骤:

  1. 应用面部检测,其检测图像中面部的存在和位置,但不识别它
  2. 提取量化图像中每个面部的128维特征向量(称为“嵌入”)

 

首先,我们将图像或视频帧输入到人脸识别管道。给定输入图像,我们应用面部检测来检测图像中面部的位置。

我们可以选择计算面部标志,使我们能够预处理和对齐面部。

顾名思义,面部对齐

(1)识别面部的几何结构

(2)基于平移,旋转和缩放来尝试获得面部的规范对齐的过程。

虽然可选,但已经证明面部对齐可以提高某些管道中的面部识别精度。

在我们(可选)应用面对齐和裁剪之后,我们通过深度神经网络传递输入面:

FaceNet深度学习模型计算128-d嵌入,即:生成128维特征向量,量化面部本身。

 

但网络如何实际计算面部嵌入?

答案在于训练过程本身,包括:

  1. 输入数据到网络
  2. 三重损失功能

为了训练具有深度学习的人脸识别模型,每个输入批量数据包括三个图像:

  1. 正面形象
  2. 图像

锚是我们目前的脸,有身份的一个

第二张图像是我们的正面图像 - 此图像还包含人物A的脸部。

另一方面,负面图像不具有相同的身份,可能属于人BC甚至Y

关键是锚和正图像都属于同一个人/面部,而负面图像不包含相同的面部。

神经网络计算每个面的128-d嵌入,然后调整网络的权重(通过三元组丢失函数),这样:

  1. 锚和正像的128-d嵌入更靠近在一起
  2. 与此同时,推动负面图像父亲的嵌入

以这种方式,网络能够学习量化面部并返回适合于面部识别的高度鲁棒且有区别的嵌入。

 

进而,我们实际上可以重用为我们自己的应用程序OpenFace模型,而无需显式地训练它!

即使我们今天使用的深度学习模型(很可能)从未见过我们即将通过它的面部,模型仍然能够计算每个面部的嵌入 - 理想情况下,这些面部嵌入将足够不同的是,我们可以在面部嵌入的基础上训练“标准”机器学习分类器(SVM,SGD分类器,随机森林等),从而获得我们的OpenCV人脸识别管道。

 

先看一下效果,建立信心完成人脸识别的功能模块

解释:pu:97.31%          pu为识别用户的名称(后面我们使用--用户名的拼音建立文件夹),这里的pu是我的用户名;

                                      97.31%为识别用户的准确率

 

希望对你有帮助。

 

 


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

相关文章

基于Python的面部表情识别分析系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85660758 面部表情识别 练习技能: 爬虫数据清洗计算机视觉(图片基本处理,信息提取)深度学习 图像识别技术文档 一、项目概述 项目名称:面部…

基于人脸面部检测的口罩识别系统

基于人脸面部检测的口罩识别系统 摘 要 作为数字图像处理和计算机视觉领域的一个重要组成部分,利用摄像机对图像进行采集,从图像中检测人脸并进行口罩穿戴的识别的有着非常重要的研究意义和应用价值。面对突如其来的新型肺炎疫情,人们生活秩…

[深度概念]·简述人脸识别开发原理

0、文章概述 我们知道人脸识别在这几年应用相当广泛,人脸考勤,人脸社交,人脸支付,哪里都有这黑科技的影响,特别这几年机器学习流行,使得人脸识别在应用和准确率更是达到了一个较高的水准。 下面将带着大家…

基于深度学习的人脸面部表情识别系统【含Python源码+PyqtUI界面+原理详解】

功能演示 摘要:面部表情识别(Facial Expression Recognition)是一种通过技术手段识别人物图像中人脸面部表情的技术。本文详细介绍了其实现的技术原理,同时给出完整的Python实现代码、训练好的深度学习模型,并且通过Py…

2022年12月编程语言排行榜公布!

2022年迎来了最后一个月,我们可以看到,在这一年中编程语言起起伏伏,有的语言始终炙手可热,而有的语言却逐渐“没落”… 日前,全球知名TIOBE编程语言社区发布了12月编程语言排行榜,有哪些新变化&#xff1f…

html不是编程语言什么梗,html不是编程语言?

HTML究竟算不算是一门编程语言,这是争执已久的话题。其实,从本质来讲,HTML确实算不上是一门编程语言。 HTML全称,HyperText Markup Language。字面理解,HTML就是一种超文本语言,何谓超文本,就是…

2017年编程语言排名

https://spectrum.ieee.org发布了2017年编程语言排名,这个榜单是对数十种流行的编程语言进行排名。 请参考: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017 可以对排名规则进行选择 可选择的权重分别为&#xf…

【总结】编程语言的分类

一、计算机编程语言的分类 1、低级语言 机器语言(二进制代码)、汇编语言(面向机器的程序设计语言)和符号语言。汇编语言源程序必须经过汇编,生成目 标文件,然后执行。 机器语言优缺点如下…

编程语言排行榜 - 2020年度最热门编程语言盘点!

如今,广大用户更喜欢利用移动应用程序,来获取他们所关心的产品与信息。而移动应用程序也成为了企业在市场竞争中,保持领先地位的成功关键。据某项调查预测:到2020年,全英国移动应用的用户下载数量将增加到200亿次。当然…

IT培训分享:11种热门编程语言的主要用途

IT行业发展前景广阔,想进去IT领域的小伙伴也是与日俱增。但编程语言的种类那么多,具体学习哪个好呢?建议刚开始学习就要明白自己的目的来进行有针对性的学习。今天小千就以自己了解到的知识,来给大家简单介绍一下时下热门编程语言…

最受欢迎的八种编程语言

DevJobsScanner公司分析了2022年超过1200万份开发者工作需求,其中舍弃了对语言要求比较模糊的工作,有明确编程语言要求的工作有700万份,最终得出了目前行业需求量最高的 8 种编程语言。 让我们一起看看在目前的市场需求中,哪些语…

软件测试用例编写方法

软件测试学习导图如下: 软件测试的宗旨就是尽早地和不断地进行测试,更早、更快、更多的发现错误。 编写测试用例主要用到五种方法:等价类划分、边界值分析、因果图法、场景法(用户故事法)、错误推测 等价类划分&#…

编写测试用例方法之正交表分析法

今天我们再来介绍另外一个编写测试用例的方法:正交表分析法,这个方法是一种比较方便的方法。话不多说,开始整干货,老规矩,首先全图镇楼。 之前我们在对产品进行测试用例设计的时候,都是针对单个输入框。如果…

测试用例的编写方法

测试用例 买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例! 测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,它是指导测试工…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

亲测快捷高效的编写测试用例方法

目录 一、什么是测试用例? 二、设计用例是否有必要? 三、设计用例的益处? 四、一定要写测试用例吗? 五、测试用例怎么写? 六、用例必备4个方面? 七、用例设计理念? 八、没有需求文档&am…

测试用例的特性以及编写测试用例的方法

测试用例的特性以及编写测试用例的方法 测试用例的定义:什么是测试用例?测试用例的特征: 编写测试用例的好处:测试用例的作用: 测试用例的4个特性测试用例通常包括以下几个组成元素:编写测试用例的基本方法…

【软件测试】编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

编写测试用例常用的七大方法

测试用例格式包括十大特点 用例编号 测试项 测试标题 用例属性 重要级别:高中低 预置条件 测试输入 操作步骤 预期结果 实际结果 第一:等价类 1,等价类定义 2,等价类划分 3,等价类划分规则 4,进行…

【测试】编写测试用例的思路和方法

文章目录 1)什么是测试用例?1.1 测试用例的定义测试用例的内容: *为什么需要测试用例?测试用例的作用: 1.2 测试用例的元素测试目标(Why):测试对象(What)&…