1.使用insightface加载训练好的模型进行特征提取

首先,致敬作者,他的代码库在:https://github.com/deepinsight/insightface

1.安装项目运行环境。

python=2.7

由于我的服务器上已经安装了cuda8.0,所以环境配置起来很容易,输入如下代码:

pip install -U six scipy scikit-learn opencv-python scikit-image easydict mxnet-cu80

中间遇到了一个问题:

python setup.py egg_info

这个是前辈的解决方案,我也靠这个解决了

2.下载pretrained_model。

一共下载两个,一个为人脸识别model,一个为性别年龄识别model,由于代码中必须加载这两个model,所以就算不用都要下载。

官方model_zoo

3.将model上传到insightface/models中。

如果有服务器就连接服务器。

服务器连接和文件传输应用下载

4.运行人脸特征提取程序。

首先进入路径:

$INSIGHTFACE_HOME/deploy

路径下的test.py就是用来提取人脸特征的,稍微修改下test.py:

vim test.py
import face_model
import argparse
import cv2
import sys
import numpy as np
parser = argparse.ArgumentParser(description='face model test')
# general
parser.add_argument('--image-size', default='112,112', help='')
# 这个比较重要,人脸识别的model,我的经验是要用绝对路径
parser.add_argument('--model', default='/disk1t/insightface/insightface/models/model-r100-ii/model,0', help='path to load model.')
# 这个比较重要,年龄性别的model,我的经验是要用绝对路径
parser.add_argument('--ga-model', default='/disk1t/insightface/insightface/models/gamodel-r50/model,0', help='path to load model.')
parser.add_argument('--gpu', default=0, type=int, help='gpu id')
parser.add_argument('--det', default=0, type=int, help='mtcnn option, 1 means using R+O, 0 means detect from begining')
parser.add_argument('--flip', default=0, type=int, help='whether do lr flip aug')
parser.add_argument('--threshold', default=1.24, type=float, help='ver dist threshold')
args = parser.parse_args()
print(args)
# 加载model
model = face_model.FaceModel(args)
# 读取图片
img = cv2.imread('Tom_Hanks_54745.png')
# 模型加载图片
img = model.get_input(img)
# 获得特征
f1 = model.get_feature(img)
# 输出特征
print(f1)
#print(f1[0:10])
#gender, age = model.get_ga(img)
#print(gender)
#print(age)
#sys.exit(0)
#img = cv2.imread('/raid5data/dplearn/megaface/facescrubr/112x112/Tom_Hanks/Tom_Hanks_54733.png')
#f2 = model.get_feature(img)
#dist = np.sum(np.square(f1-f2))
#print(dist)
#sim = np.dot(f1, f2.T)
#print(sim)
#diff = np.subtract(source_feature, target_feature)
#dist = np.sum(np.square(diff),1)

5.最后获得特征

6.到此,人脸特征提取就完成了

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值