最简单的人脸识别系统搭建

最简单的人脸识别系统搭建前言:人脸识别系统目前已经非常的成熟了,所以也有一些优秀的开源项目,比如我们今天要用的到insightface,它包含了人脸检测和识别模块。配置Windows10python3.6mxnet-cu1001.5.0cuda10numpy1.14.5首先我们了解一下这里的人脸识别是怎么做的分为一下几步骤。1.检测人脸,就是从图片检测出来人脸所在的位置。2.根据返回出来的的人脸位…

小帅编:努力不一定成功,放弃就等于失败!

注:有任何问题可以在下面评论或者私信小帅编,看到一定会回复。

前言:人脸识别系统目前已经非常的成熟了,所以也有一些优秀的开源项目,比如我们今天要用的到insightface。不啰嗦直接上代码。

cndn下载 人脸识别代码

这是小编自己手撸的一个人脸识别系统,代码比较简单,代码量也很少就三个py文件,可谓是麻雀虽小五脏俱全。因为要写得完善健全的话,代码量肯定会增加很多,对于我们来说阅读起来不太友好。所以看懂系统搭建流程以及代码后,可以根据自己需求去改动和完善。

环境
Windows 10
python3.6
cuda10
mxnet-cu100 1.5.0
insightface 0.1.5
numpy 1.14.5
识别对象介绍(熟悉的可自动跳过)

想必小伙伴应该都认识苍老师的,苍老师是大家熟悉和喜欢的日本演员,确确实实影响了一代人,言传身教更是体现的淋漓尽致。每次看到苍老师的电影,都会被她的演技所折服。2017年苍井空宣布退出女演员行业。2018年1月1日晒出婚戒宣布已于圈外老公结婚,苍井空称老公“不是帅哥也没有钱,但是接受了自己以前的工作”。去年5月1日,苍井空产下双胞胎儿子,此后一直宅在家里精心照顾宝宝,回归于平淡生活。
在这里插入图片描述
以及这位号称日本林志玲,波多老师是一位经历过坎坷的老师,入籍H.M.P公司后, 本以为她是继星野美优后又一素人神话,但是却很快被公司所遗弃,直到2009年9月9日在SKY HIGH公司的精心包装下,波多野结衣才重新回到我们的视线。
在这里插入图片描述
咏美老师,98年出生,现在也才只有22岁的年龄,但是在日本娱乐圈已经算得上是一位老资格了,她拥有让人羡慕的长相,只是看上一眼就能感受到她的精致,而且这样的美女,在现实生活中,确实很少见,而且再加上她这高挑又性感的身材,她能从众多日本女星中突出重围,也是合情合理。
在这里插入图片描述

流程

1.检测人脸,就是从图片检测出来人脸所在的位置代码如下。
import insightface
import cv2

img = cv2.imread('image_path')
model = insightface.model_zoo.get_model('retinaface_r50_v1')
# ctx_id = -1 代表不用cuda加速,如要使用则填对应显卡号0,1,2等。。。
model.prepare(ctx_id = -1, nms=0.4)

# 返回坐标bbox 和每张人脸的五个关键点landmark 
bbox, landmark = model.detect(img, threshold=0.5, scale=1.0)

2.根据返回结果取出人脸图像和对应每张人脸的五个关键点。
for i, box in enumerate(bbox):
	face = image[box[1]:box[3],box[0]:box[2]]
	ladk = landmark[i]
3.取出人脸的图片有些人是歪着头的怎么办呢。

调整前
哈哈,当然是扶正他啊!你看上面苍老师的头就是歪的,这样直接送入提取特征的网络肯定是不好的,所以各位小伙伴千万不能歪了哦。扶正的原理是根据那五个关键点来做的,人脸对齐代码在项目里的face_alignment.py。
在这里插入图片描述

4.根据人脸照片放到我们insightface里面提取特征的网络里面,得到一个512维的特征向量。
''' 输入112*112*3的人脸得到512维向量 '''
model = insightface.model_zoo.get_model('arcface_r100_v1')
model.prepare(ctx_id = -1)

emb = model.get_embedding(img)
5.将这个特征向量与人脸底库(人脸底库就是最开始预存的需要被识别的所有人脸,通过上面提取特征网络提取出来的向量)的所有特征向量进行一个相似度计算,这里我是使用的余弦相似度计算。计算出来相似度最高的对应于相应的图片
''' 计算余弦相似度 '''
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

arr1 = np.random.randn(1,512)
arr2 = np.random.randn(5,512)
cos = cosine_similarity(np.array(arr1), np.array(arr2))

在这里插入图片描述
1.在data/facedata/ 按照我的格式放进去你自己需要录进去的底库数据
2.底库数据放好后执行SetFaces.py,将人脸向量录入底库
3.在test.py里面改好你要测试的图片路径,执行test.py就好了。

今天的文章最简单的人脸识别系统搭建分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/33210.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注