20220919 人脸 Reid

硬核科普:人脸特征提取 读懂独一无二的你 - 知乎

人脸识别工具:

Faiss入门及应用经验记录 - 知乎

https://github.com/JDAI-CV/FaceX-Zoo

评价指标:

人脸识别合集 | 人脸识别概述 - 知乎

人脸识别模型评价指标 - 知乎

人脸识别中的评价指标 - 知乎

1、深度解析|人脸识别中的人脸监测、定位校准和对比等技术-今日头条 (toutiao.com)

一个简单的人脸识别系统的设计和实现 - 知乎 (zhihu.com)

2、

insightface/recognition at master · deepinsight/insightface · GitHub

3、人脸矫正方案收集_yuanlulu的博客-CSDN博客_人脸识别人脸矫正 

4、3d人脸识别和人脸识别的区别-万年历

5、GitHub - deepcam-cn/yolov5-face: YOLO5Face: Why Reinventing a Face Detector (https://arxiv.org/abs/2105.12931) ECCV Workshops 2022)

YOLOv5-Face | 原理超精细讲解、训练步骤还原、C++边缘部署(就要这么学!!!)

6、实战

Version:0.9 StartHTML:0000000105 EndHTML:0000021287 StartFragment:0000000141 EndFragment:0000021247

在⼈脸识别领域,通常使⽤PCA进⾏特征降维,PCA具有简单且易于实现的特点,能够有效地减少特
征维度。这⾥介绍⼀种基于PCA的⽅法将512维⼈脸特征降为256维。
1.计算⼈脸特征的协⽅差矩阵;
2.对协⽅差矩阵进⾏特征值分解,得到特征值和特征向量;
3.按特征值从⼤到⼩排序,选择前256个特征向量;
4.将⼈脸特征与前256个特征向量做点积,得到256维的⼈脸特征。
此外,为了保证降维后的256维特征能够满⾜⼈脸特征⽐对的需要,可以采⽤离线训练的⽅法,⽤降维
后的256维⼈脸特征重新训练⼀个⼩型的⼈脸特征⽐对模型,从⽽达到满⾜⼈脸特征⽐对的需要的效
果。
1 以下是⼀种基于 PCA 的降维算法的 Python 代码实现,可将 512 维的⼈脸特征降为 256 维:
2
3 ```python
4 import numpy as np
5
6 def pca_reduce_dim ( fea , n_components ):
7 "" "
8 : param fea : 待降维的⼈脸特征, 512 维, shape [ batch_size , 512 ]
9 : param n_components : 降维后保留的特征维度数,设为 256
10 : return : 降维后的⼈脸特征, 256 维, shape [ batch_size , 256 ]
11 "" "
12 # 中⼼化
13 fea_mean = np . mean ( fea , axis = 0 )
14 fea = fea - fea_mean
15
16 # 计算协⽅差矩阵
17 cov_mat = np . cov ( fea , rowvar = False )
18
19 # 特征值分解
20 eig_val , eig_vec = np . linalg . eig ( cov_mat )
21
22 # 排序
23 sorted_indices = np . argsort ( eig_val )[:: - 1 ]
24 25 # 选择前 n_components 个特征向量
26 eig_vec = eig_vec [:, sorted_indices [: n_components ]]
27
28 # 计算降维后的特征
29 pca_fea = np . dot ( fea , eig_vec )
30
31 return pca_fea
32 ```
33
需要说明的是,在实际应⽤中,为了防⽌出现过拟合现象,有时需要采⽤交叉验证等⽅法确定合适的降维特征
维度。

7、partial_fc人脸识别算法
数据集:      

glint100k

webface42m数据集

CVPR 2021 | WebFace260M:百万级人脸识别数据集和基准 - 知乎

8.

在人脸识别中,深度学习模型可以提取多种特征,这些特征包括但不限于以下几类:

  1. 面部特征:深度学习模型能够学习到人脸的整体形状、轮廓和基本特征,如眼睛、鼻子、嘴巴的位置和形状,以及面部的整体结构。

  2. 纹理特征:模型可以学习到人脸的皮肤纹理、斑点、皱纹等细节特征,这些特征可以用于识别和验证。

  3. 眼睛特征:深度学习模型可以提取眼睛的特征,包括瞳孔大小、眼球位置、眼睛的形状和轮廓等。

  4. 嘴巴特征:模型能够学习到嘴巴的特征,包括嘴唇的形状、嘴角的位置和嘴唇的开合程度。

  5. 鼻子特征:深度学习模型可以提取鼻子的形状、大小和位置等特征。

  6. 脸部表情特征:模型可以检测和分析脸部的表情,如微笑、愤怒、惊讶等,这些特征对于情感分析和情感识别非常重要。

  7. 光照和阴影特征:模型可以学习到光照条件下的面部特征,包括阴影、高光和光线变化等。

  8. 深层特征:深度学习模型的多层卷积和全连接层可以提取更高级别的抽象特征,如脸部的整体表示、面部的对称性等。

  9. 姿态特征:模型可以检测头部的姿态,包括头部的旋转和倾斜角度,这有助于提高人脸识别的鲁棒性。

  10. 嵌入向量:深度学习模型通常会将人脸图像映射到嵌入向量空间,这些向量捕捉了人脸的高级特征,可以用于比较和识别。

总之,深度学习模型可以从人脸图像中提取多种特征,从低级的几何特征到高级的抽象特征,这些特征有助于区分不同人脸之间的差异,从而实现人脸识别、验证和相关任务。这些特征的组合使得深度学习模型在处理复杂的人脸数据时表现出色。

9.

在ArcFace损失函数中,有一个被称为 scale 的参数,通常表示为 �s。这个参数是用来调整余弦相似度的缩放的,对模型的训练和性能有一定的影响。ArcFace损失函数的一般形式如下:

ArcFace loss=−1�∑�=1�log⁡(��⋅cos⁡(���,�)��⋅cos⁡(���,�)+∑�≠����⋅cos⁡(��,�))ArcFace loss=−N1​∑i=1N​log(es⋅cos(θyi​,i​)+∑j=yi​​es⋅cos(θj,i​)es⋅cos(θyi​,i​)​)

其中:

  • �N 是训练样本的数量。
  • ��yi​ 是样本 �i 的真实类别标签。
  • ���,�θyi​,i​ 表示样本 �i 属于类别 ��yi​ 的特征向量与权重向量的夹角。

scale 参数 �s 在这个损失函数中的作用是调整余弦相似度的范围,使得在特征空间中更好地优化相似性。通过调整 �s 的值,可以影响损失函数对同一类别样本的相似性的敏感性。

通常,通过调整 scale 参数,可以实现以下效果:

  1. 增加 scale 的值:

    • 可以增强同一类别样本的相似性,使得特征空间中同一类别的样本更加集中。
    • 可能提高模型对同一类别样本的区分度,但需要注意过大的 scale 值可能导致梯度爆炸或训练不稳定。
  2. 减小 scale 的值:

    • 可以减小同一类别样本之间的相似性,使得特征空间中同一类别的样本分散开。
    • 可能提高模型对不同类别样本的区分度,但过小的 scale 值可能导致相似性不够明显。

选择适当的 scale 参数通常需要根据具体的任务和数据集进行调整,以平衡同一类别样本的相似性和不同类别样本的差异性,从而提高人脸识别模型的性能。在实践中,这个参数可能需要通过交叉验证或调试来确定最佳值。

10.arcface

思路:

1.基于softmax衍生而来,x,w归一化,最终是求余弦相似度,角度越小,余弦相似度越大。再在角度上加m,为了得到更小的角度,再减去m,类内角度会更小,从而类间距角度更大。scal是放大相似度的倍数,使类间距更大,类内聚拢。

代码思路:

1.x,w归一化 2.全连接相当于计算余弦相似度 3.计算正弦值 4.phi=cos(角度+m)= cos角度cosm-sin角度sinm 5.将label生成one-hot 6.将正样本one-hot*phi+负样本余弦相似度(1-one-hot)*cosine 7.放大scale倍 8.作为输出,计算loss

11.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值