人脸识别--传统+深度方法

news2024/11/15 11:05:31

 人脸识别算法--非深度方法

在前深度学习时代,非深度的方法探索了不同的人脸识别算法。

先考虑一下非深度学习时代,人脸识别难在哪?或者说目标识别的难点在哪?

图像是一个高度冗余的数据

    * 图像数据中包含大量与语义无关的内容
    
    * 图像数据中还包含大量噪声
    
所有的图像识别算法,都是在解决这个问题。

也就是说,如何从冗余的数据中,提取出关键的信息。

深度学习通过不断的卷积,越来越多的通道数量,以及大量的参数解决这个问题。

非深度方法如何处理?

PCA(主成分分析)

**动机**:

    - 将高维特征映射到低维特征,减少计算复杂度和存储空间
    - 从数据中提取最相关信息

**问题定义**:

将一个n维数据,映射到k维上。

**基本思想**:

什么才是最不冗余的坐标轴?

只有正交的坐标轴,才是最不冗余的

因此,PCA的工作就是从原始空间中,顺序的找到一组组正交的坐标轴

例如,第一个坐标轴的选择,是原始数据中,方差最大的方向;

第二个坐标轴是与第一个坐标轴正交的平面中,方差最大的;依次类推。

最终,可以得到n个坐标轴。

我们可以发现一个问题:大部分的方差都集中在某几个维度中,其余维度的方差几乎没有。

因此,舍弃m个轴,保留方差最大的k个轴,从而实现对数据的降维。
**问题**:

如何得到包含最大差异的主成分方向?

**协方差矩阵**

协方差矩阵中,对角线位置是描述了每个维度本身的数据差异程度,而其余点则描述了不同维度之间的数据差异程度。
那么回顾一下我们的问题:如何找出数据的最大方差的方向?

也就是说,我们要把协方差矩阵进行降复杂度,也就是说,我们把里面一些数据轴删除以后(值为零),这个矩阵和原来看起来差距不大。
**特征值分解**

特征值越大,重建出的矩阵为第一大主成分

 **实现特征值分解:SVD**

 PCA的直观感受


**PCA的代码实现**

import numpy as np

X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
n_samples, n_features = X.shape
mean=np.array([np.mean(X[:,i]) for i in range(n_features)])
norm_X=X-mean
scatter_matrix=np.dot(np.transpose(norm_X),norm_X)
eig_val, eig_vec = np.linalg.eig(scatter_matrix)

print(eig_val)
print()
print(eig_vec)
eig_pairs = [(np.abs(eig_val[i]), eig_vec[:,i]) for i in range(n_features)]
eig_pairs.sort(reverse=True)
feature=np.array([ele[1] for ele in eig_pairs[:1]])
print(feature)
data=np.dot(norm_X,np.transpose(feature))
print(data)

opencv的使用方法

```
import cv2
pca = cv2.PCACompute(X, mean=None, maxComponents=2)
```
那么PCA和人脸识别有什么关联呢?

我们可以将人脸图像视为一个高维数据

将人脸变换到一个共同的子空间上,在这个子空间中进行识别与辨识,就能提高准确率。

本质上,PCA是一种空间变换方法

特征脸人脸识别

人脸识别问题,在特征脸看来,就是一个人脸特征分布识别的问题。

首先,训练集中每一个人脸,都被认为是一个坐标轴

一个新的人脸,在每个人脸坐标轴上,都有一个投影。

在那个人脸坐标轴上投影的多,就是哪个人脸。

具体步骤

基向量 (对于一张新的人脸:减去平均后与特征矩阵相乘(投影),得到每一维的概率)

1. 获取所有人的人脸图像各1张

2. 计算平均人脸

    每张人脸都拉长为一个向量
    对应维度的向量求平均,得到一个平均向量
    
3. 计算每张图像与平均图像的差值

4. 把差值图像集合成矩阵,用pca找到n个特征向量(基向量)组成矩阵P(这里可以求转置的特征向量)

5. 对于一张新人脸,进行矩阵变换,得到新的向量

6. 新的向量与所有人脸图像的差值求取距离,足够近的距离则表示人脸被识别成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hadoop3.3.1 Windows环境配置

1.解压hadoop-3.3.1.tar.gz 到windows安装路径 D:\h3\hadoop-3.3.1 2.检查Windows jdk是否安装正常 3.下载winutils GitHub - steveloughran/winutils: Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 解压到D:\h3\ 并重命名…

Python每日一练(20230504) 课程表 Course Schedule I/II

目录 1. 课程表 Course Schedule I 2. 课程表 Course Schedule II 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 课程表 Course Schedule I 你这个学期必须选修 numCourses 门课程&a…

五一劳动节程序员应该知道的知识——计算机

前言 现在AI崛起,计算机已经成为我们不可或缺的一部分,几乎在所有行业和领域都有广泛应用 。 五一已经快要过去了,程序员们应该都放假了,那我们是不是应该去了解了解我们的伙伴——计算机,了去解计算机是怎样工作的&am…

在CSDN逮到一个字节10年老测试开发,聊过之后收益良多···

老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼。前几天我在上班摸鱼刷CSDN的时候认识了一位字节测试开发大佬,在字节工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内…

REST API 最佳实践

文章目录 0.什么是 REST API?1.REST API 设计建议1.用名词表示资源2.用复数名词表示集合3.在端点上使用嵌套显示关系4.用 HTTP 方法操作资源5.用过滤、排序和分页请求数据6.用 JSON 作为发送和接收数据的格式7.将实际数据包装在 data 字段中8.非资源请求用动词9.考虑…

搭建环境问题集合(jupyter lab和pycharm)

1、python console找到该项目映射位置在哪里? import os print(os.getcwd()) 2、Linux终端运行命令,Ctrlc & Ctrlz 在Linux中,Ctrl Z组合键可以将当前正在运行的进程暂停,并将该进程放到后台去执行。 linux命令行下Ctrlc的作…

uniapp实现小程序打开相册或拍照上传图片附赠兼容H5方法

文章目录 前言一、支持相册选择和拍照二、删除图片三、效果图存在问题 前言 小程序上传图片,或者拍照上传图片,并附带兼容H5上传图片方法,压缩图片。 一、支持相册选择和拍照 支持选择相册和拍照,可以使用uniapp提供的api&#…

arxiv2022 | MolT5:Translation between Molecules and Natural Language

Ambitious goal !! 任务:molecule captioning and text-guided de novo molecule generation. 论文链接:https://arxiv.org/abs/2204.11817 代码链接:GitHub - blender-nlp/MolT5: Associated Repository for "…

MySQL知识学习03(三大日志详解 binlog、redo log、undo log)

前言 MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志 binlog(归档日志)和事务日志 redo log(重做日志)和 undo log(回滚日志&#xf…

【校招VIP】很神奇,把简历上的学校名称和姓名盖住,其它的部分都很常见,那简历通过率一定很低

在五一之前的一场简历指导的直播里面,发现了一份有意思的简历。 大家如果把这份简历的学校和姓名抹掉,会发现好像跟自己写的简历一模一样。 技能、项目等都是很通用的。 也就是说,这份简历你能写,你的同学也可以写,甚…

项目执行落地的6个步骤

项目执行是将项目计划付诸行动的过程,为客户或利益相关者生产可交付的产品或服务,也就是所谓的产品或服务。它发生在规划阶段之后,在此期间,一个团队确定了项目的关键目标,以及时间表和预算。 执行包括协调资源和衡量…

现在的00后测试员这么野?领导:这我真管不了...

马上就要迎来一年一度的毕业季,今年即将有1158万00后毕业生正式踏入职场。虽然00后是最近两年才晋升为新鲜出炉的职场小鲜肉,但在一众前辈的眼中,已经身居重任,期望他们能够成为职场中的一股清流,改变一贯以来的职场风…

I2C工作流程

FM33A0XX的I2C接口只用作主机,且不支持多主机,因此挂在总线上的其他设备都是从机。总线上总是由主机提供同步时钟SCL,SDA数据流方向可以是主机发送从机接收,或者从机发送主机接收。 数据发送流程 1、主机发起 START 时序 2、主机…

比较两种精细结构的迭代次数

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点,训练集AB各由5张二值化的图片组成,让A中有6个1,B中全是0,排列组合A ,统计迭代次数的顺序。共有5005组不同的排列组合,但只有181个不同的迭代…

C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码

>生信老白写的基础代码.fasta MAYBENOANYUSAGE 1 EMBL 1.1 EMBL组织 欧洲分子生物学实验室EMBL(European Molecular Biology Laboratory)1974年由欧洲14个国家加上亚洲的以色列共同发起建立,现在由欧洲30个成员国政府支持组成&#xf…

文字流光效果

提示&#xff1a;文字流光动画效果&#xff0c;炫酷标题 前言 提示&#xff1a;以下是本篇文章的代码内容,供大家参考,相互学习 一、html代码 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html; charsetu…

文献阅读(50)—— Transformer 用于肺癌诊断预测

文献阅读&#xff08;50&#xff09;—— Transformer 用于肺癌诊断预测 文章目录 文献阅读&#xff08;50&#xff09;—— Transformer 用于肺癌诊断预测先验知识/知识拓展文章结构背景文章方法1. 文章核心网络结构2. Time Encoding ViT &#xff08;TeViT&#xff09;3. Tim…

【测试面试】软件测试技术面试,知己知彼百战百胜-成为offer收割机...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试面试题&am…

自动化测试中验证码问题如何解决?

经常会被问到如何解决验证码的问题&#xff0c;在此记录一下我所知道的几种方式。 对于web应用来说&#xff0c;大部分的系统在用户登录时都要求用户输入验证码&#xff0c;验证码的类型的很多&#xff0c;有字母数字的&#xff0c;有汉字的&#xff0c;甚至还要用户输入一条算…

贪心法——迪杰斯特拉算法

问题描述&#xff1a; 迪杰斯特拉算法Time Limit: 2000 MSMemory Limit: 5000 KB Description 给定n(n<500)个顶点,以及E(E<10000)条边&#xff0c;使用迪杰斯特拉算法计算顶点s到顶点t的最短路径.Input 第一行输入T表示有T组数据。每组数据第一行输入n、E、s、t&…