项目经历-笔记

整理项目经验涉及到相关的技术模型

一、人脸识别

1 InsightFace

1.1 SCRFD

人脸检测的模型 输入是图像 输出是检测到的目标位置和相关信息(如关键点、置信度等)

加载方式
self.detector = SCRFD(os.path.join(assets_dir, 'det_10g.onnx'))
self.detector.prepare(0)
调用方式
# 检测人脸并获取关键点
bboxes, kpss = self.detector.autodetect(image, max_num=1)

bboxes的检测框结果 x1 y1 x2 y2 conf
在这里插入图片描述
kpss中包含每个人脸的关键点位置。每个关键点位置是一个二维坐标,表示脸部不同部位(如眼睛、鼻子、嘴巴等)的坐标

在这里插入图片描述
在这里插入图片描述

1.2 ArcFaceONNX

初始化和运行 ArcFace 模型来进行人脸特征提取

加载方式
model_path = os.path.join(assets_dir, 'w600k_r50.onnx')
self.rec = ArcFaceONNX(model_path)
self.rec.prepare(0)
调用方式
feat = self.rec.get(image, kps)

该方法接收一个图像 img 和关键点 kps,首先通过 face_align.norm_crop 进行人脸对齐处理(基于关键点),然后调用 get_feat 方法提取图像的特征嵌入(embedding),最后将特征进行扁平化并返回。

在这里插入图片描述

1.3 余弦相似度计算

    def nmscompute_sim(self, feat1, feat2):
        from numpy.linalg import norm
        feat1 = feat1.ravel()
        feat2 = feat2.ravel()
        sim = np.dot(feat1, feat2) / (norm(feat1) * norm(feat2))
        return sim

ravel()转换成一维数组
norm()计算向量的范数(模长)

设置阈值 判断是否是同一个人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值