python 封装dlib模型进行人脸识别系统的登录认证
1、直接上干货
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import dlib
import numpy as np
class faceDiscernModel:
def __init__(self):
# 加载预训练人脸检测CNN模型
self.cnn_face_model = "./model/mmod_human_face_detector.dat"
self.cnn_face_detector = dlib.cnn_face_detection_model_v1(self.cnn_face_model) # 加载人脸特征检测模型
self.predictor_path = "./model/shape_predictor_5_face_landmarks.dat"
self.predictor = dlib.shape_predictor(self.predictor_path) # 加载人脸特征提取模型
self.featureModel = "./model/dlib_face_recognition_resnet_model_v1.dat"
self.feater = dlib.face_recognition_model_v1(self.featureModel) def get_faces_feature(self,imgPath): # 读取人脸图片
img = dlib.load_rgb_image(imgPath) feat = [] # 检测每个人脸的边界框
dets = self.cnn_face_detector(img, 1) # len(dets) 是检测到的人脸数量
for i, d in enumerate(dets):
# print("Detection {}: Left: {} Top: {} Right: {} Bottom: {} Confidence: {}".format(
# i, d.rect.left(), d.rect.top(), d.rect.right(), d.rect.bottom(), d.confidence)) # 检测 box i 内的人脸关键点
shape = self.predictor(img, d.rect) # 计算特征向量
face_descriptor = self.feater.compute_face_descriptor(img, shape) feat.append(face_descriptor) return feat def Euclidean_distance_test(self,feature_1,feature_2):
return np.sqrt(np.sum((np.array(feature_1)-np.array(feature_2))**2)) def face_compare(self,imgPath_1,imgPath_2,assess=0.6):
feature_1 = self.get_faces_feature(imgPath_1)
feature_2 = self.get_faces_feature(imgPath_2)
score = self.Euclidean_distance_test(feature_1=feature_1,feature_2=feature_2)
if score > assess:
return False
elif 0< score < assess:
return True
else:
return False if __name__ == '__main__': imgPath_1 = "./faceImage/test.jpg"
imgPath_2 = "./faceImage/test1.jpg"
faceDiscern = faceDiscernModel()
st = time.time()
result = faceDiscern.face_compare(imgPath_1,imgPath_2) print(time.time()-st)
print(result)
2、模型下载地址
python 封装dlib模型进行人脸识别系统的登录认证的更多相关文章
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 人脸识别系统 —— 基于python的人工智能识别核心
起因 自打用python+django写了一个点菜系统,就一直沉迷python编程.正好前几天公司boss要我研究一下人脸识别,于是我先用python编写了一个人脸识别系统的核心,用于之后的整个系统. ...
- Python3+Dlib实现简单人脸识别案例
Python3+Dlib实现简单人脸识别案例 写在前边 很早很早之前,当我还是一个傻了吧唧的专科生的时候,我就听说过人脸识别,听说过算法,听说过人工智能,并且也出生牛犊不怕虎般的学习过TensorFl ...
- facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
搭建人脸库 选择的方式是从百度下载明星照片 照片下载,downloadImageByBaidu.py # coding=utf-8 """ 爬取百度图片的高清原图 &qu ...
- C++ 人脸识别系统的浅理解
机器学习 机器学习的目的是把数据转换成信息. 机器学习通过从数据里提取规则或模式来把数据转成信息. 人脸识别 人脸识别通过级联分类器对特征的分级筛选来确定是否是人脸. 每个节点的正确识别率很高,但正确 ...
- Nodejs开发人脸识别系统-教你实现高大上的人工智能
Nodejs开发人脸识别系统-教你实现高大上的人工智能 一.缘起缘生 前段时间有个H5很火,上传个头像就可以显示自己穿军装的样子,无意中看到了一篇帖子叫 全民刷军装背后的AI技术及简单实现 ,里面 ...
随机推荐
- Web Api 接口测试工具:WebApiTestClient
前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...
- JS - this 总结
this指向最后调用该函数的对象 // 示例一: var name = "windowsName"; function a() { var name = "Cherry& ...
- oracle 创建表的规则
1.表明首字母 应该为字母 2.表名的最大长度为30个字符 3.不能使用oracle保留字和关键字来作表名 4.同一用户下的不同表不能具有相同的名称 5.可以使用下划线.数字和字母,但不能使用空格与单 ...
- ZROI 19.08.09模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(70pts:\) 维护一个栈,从一侧向另一侧扫描,如果新加入的元素与当前栈顶相同,则出栈,否则进栈.显然一个子串是括号序列,当 ...
- 安装twisted遇到的坑
在使用twisted框架的时候,我们需要知道他是干什么的? twisted支持很多种协议,包括传输层的TCP, UDP, TLS和引用层的HTTP和FTP等. twisted框架其主要发行版本是以p ...
- 【shell】文本匹配问题
原文本通过TITLE分段 TITLE1 xxx yyy TITLE2 xxx yyy hello zzz hello TITLE3 xxx hello 类似于这样的,hello可能有多个,需要打印出含 ...
- mybatis config 配置设置说明
<!– 配置设置 –> 2. <settings> 3. <!– 配置全局性 cache 的 ( 开 / 关) defau ...
- 在线PDF的实现 纯js
/// <summary> /// 使用微软的TransmitFile下载文件 /// </summary> /// <param name="filePath ...
- MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main re
出现这个问题是因为工程是应用win32,必须要有main函数,修改方式为: configuration properties中General->configuration Type->将a ...
- UVa 122 Trees on the level (动态建树 && 层序遍历二叉树)
题意 :输入一棵二叉树,你的任务是按从上到下.从左到右的顺序输出各个结点的值.每个结 点都按照从根结点到它的移动序列给出(L表示左,R表示右).在输入中,每个结点的左 括号和右括号之间没有空格,相邻 ...