InsightFace实现人脸比对[升级版] | 不用建立索引的那种 (二)
InsightFace-paddle的版本还是太麻烦了
并没有真正做到不建立索引
下面来说一下真正不需要建立索引的
https://github.com/deepinsight/insightfacehttps://github.com/deepinsight/insightface没错,这次我们使用原版InsightFace项目
安装非常简单,使用pip的包
pip install -U insightface
安装好了之后直接上测试代码:
# 测试代码
import argparse
import cv2
import sys
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image
assert insightface.__version__>='0.3'
parser = argparse.ArgumentParser(description='insightface app test')
parser.add_argument('--ctx', default=0, type=int, help='ctx id, <0 means using cpu')
parser.add_argument('--det-size', default=640, type=int, help='detection size')
args = parser.parse_args()
app = FaceAnalysis(name="antelopev2")
app.prepare(ctx_id=args.ctx, det_size=(args.det_size,args.det_size))
img_1 = cv2.imread("face1.png")
img_2 = cv2.imread("face2.png")
faces_1 = app.get(img_1)
faces_2 = app.get(img_2)
assert len(faces_1)!=0 and len(faces_2)!=0
#rimg_1 = app.draw_on(img_1, faces_1)
#rimg_2 = app.draw_on(img_2, faces_2)
#cv2.imwrite("./f1_output.jpg", rimg_1)
#cv2.imwrite("./f2_output.jpg", rimg_2)
# then print all-to-all face similarity
feats = []
for face in faces_1:feats.append(face.normed_embedding)
for face in faces_2:feats.append(face.normed_embedding)
feats = np.array(feats, dtype=np.float32)
sims = np.dot(feats, feats.T)
print(sims)
思路非常简单,通过内置接口获得面部嵌入,然后算个点积就行了,至于那个相似度矩阵,两张照片直接取sims[0][1]那个位置的值就可以了,一般来说大于0.45就认为这两张照片是同一个人,但是实际来看如果不是什么稀奇古怪的角度或者光线,但部分都是0.1以内和0.7以上。
速度上非常快,使用onnxruntime-gpu时推理时间能控制在10ms左右
我就不放图了,如果测试成功记得回来点个赞~
InsightFace实现人脸比对[升级版] | 不用建立索引的那种 (二)相关推荐
- InsightFace-Paddle实现人脸比对 | 不用建立索引的那种 (一)
需要任意两张同一个人的照片能够准确分辨出是不是同一个人,尽量简化识别过程,不需要知道是谁,也最好不用建立索引文件. 现在这个版本的insughtface很奇怪,不知道为什么自己建立索引的时候需要每个人 ...
- 人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载)
人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载) 目录 人脸识别2:InsightFace实现人脸识别Face Recognition(含源码下载) 1. ...
- 人脸识别3:C/C++ InsightFace实现人脸识别Face Recognition(含源码)
人脸识别3:C/C++ InsightFace实现人脸识别Face Recognition(含源码) 目录 1. 前言 2. 项目安装 (1)项目结构 (2)配置开发环境(OpenCV+OpenCL+ ...
- 人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码)
人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码) 目录 人脸识别4:Android InsightFace实现人脸识别Face Recognit ...
- 数据库性能优化1——正确建立索引以及最左前缀原则
1. 索引建立的原则 用于索引的最好的备选数据列是那些出现在WHERE子句.join子句.ORDER BY或GROUP BY子句中的列. 仅仅出现在SELECT关键字后面的输出数据列列表中的数据列不是 ...
- 建立索引和主外约束_Mysql索引原理
阅读文本大概需要3分钟. 作者:菜菜聊架构来源:https://www.cnblogs.com/caicz/p/11009507.html 一.为什么要有索引 索引在MySQL中也叫做"键& ...
- MySQL索引介绍,普通索引,全文索引,空间索引,多列索引使用原则,建立索引常用的规则
转自:https://blog.csdn.net/tomorrow_fine/article/details/78337735 1.MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可 ...
- w ndows 高级索引,软媒原创:为Windows7建立索引,搜索文件更给力
Win7之家( www.win7china.com):软媒原创:为Windows7建立索引,搜索文件更给力 也许你还记得XP时代搜索文件时出现的那只黄色的小狗狗,在Windows7时代,搜索变得更加快 ...
- mysql 建表时建立索引_mysql 分享建表和索引的几点规范
一. MySQL建表,字段需设置为非空,需设置字段默认值. 二. MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL. 三. MySQL建表,如果字段等价于外键,应在该字段加索引. ...
最新文章
- 公司的费用报销系统【为什么不好用】?做业务系统软件的可以参考一下
- method initializationerror not found:JUnit4单元测试报错问题
- lisp精要(2)-基础(1)
- 最新版mac使用m1芯片,使用nvm安装低版本的node报错问题
- 你问我答,准备面试需要做哪些技术储备,面试官更加关心什么方面的技术点?...
- windows10在线升级失败后的一些补救措施
- 哈哈,终于想着注册博客了
- mysql约束教程,MySQL 约束
- mysql c api简单连接池
- ip fragmentation_为什么 TCP/IP 协议会拆分数据
- j2me怎么运行java_[转载]使用J2ME进行开发一个简单的KJava应用程序示例(2)
- NBGI 传说系列历史
- Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)
- 最新抓包工具BurpSuite2022.2.3 pj版
- 华为牛人的十年工作感悟
- Apple Watch简述
- 从底层操作系统到容器云平台:OpenCloudOS与秒云构筑完美兼容链
- 什么是android应用程序未安装,Android 解决应用程序未安装的三种方法
- 计算机网络技术教程第3版课后答案,《计算机网络技术基础教程》课后习题答案刘四清版3.doc...
- java技术栈是什么意思?一次认全9大主流技术栈!