deepface--python包人脸识别的使用

  • 介绍
  • 安装
  • 人脸检测和对齐
  • 人脸特征表示
  • 特征向量验证
  • 所需权重位置

介绍

deepface
是一个轻量级的python人脸识别和人脸属性分析(年龄、性别、情感和种族)框架。混合了多种模型:VGG-Face,Google FaceNet,OpenFace,Facebook DeepFace,DeepID,ArcFace和Dlib。该库主要基于 Keras 和 TensorFlow。

人脸识别流程由 4 个常见阶段组成:人脸检测、人脸对齐、人脸特征表示和特征向量验证。Deepface 在后台处理所有这些常见阶段。您只需使用一行代码即可调用其验证、查找或分析功能。

本文只介绍人脸识别,不介绍人脸属性分析。

安装

pip install deepface

注意: 其需要以下包:

numpy>=1.14.0
pandas>=0.23.4
gdown>=3.10.1
tqdm>=4.30.0
Pillow>=5.2.0
opencv-python>=4.2.0.34
opencv-contrib-python>=4.3.0.36
tensorflow>=1.9.0
keras>=2.2.0
Flask>=1.1.2
mtcnn>=0.1.0
lightgbm>=2.3.1
dlib>=19.20.0
retina-face>=0.0.1

人脸检测和对齐

可选的检测方法:opencv,ssd,dlib,mtcnn,retinaface,默认使用的是opencv,

#人脸检测和对齐
from deepface import DeepFace
detected_face = DeepFace.detectFace("img.jpg", detector_backend = "opencv",enforce_detection = True, align = True)

mtcnn,retinaface的人脸检测效果要比opencv,ssd要好,但是opencv,ssd检测速度快。

人脸特征表示

depface中可以使用的人脸识别特征提取模型有:VGG-Face, Facenet, Facenet512, OpenFace, DeepFace, DeepID, ArcFace, Dlib
FacenetVGG-FaceArcFaceDlib要比 OpenFaceDeepIDDeepFace效果好,但是模型大小有的要大一些。

用deepface提供的函数来提取人脸特征:

from deepface import DeepFace
facerep = DeepFace.represent(img_path, model_name = 'VGG-Face', model = None, enforce_detection = True, detector_backend = 'opencv', align = True, normalization = 'base')

这些模型具有不同的输入和输出形状,例如VGG-Face需要(224,224,3)的输入形状,输出2622维向量。而Facenet需要(160,160,3)的输入,输出128维向量。
可以用下面的代码查看输入形状。

from deepface.basemodels import VGGFace
model = VGGFace.loadModel()
input_shape = model.layers[0].input_shape[0][1:3]

用下面的代码查看输出形状。

from deepface.basemodels import VGGFace
model = VGGFace.loadModel()
out_size = model.layers[-1].input_shape[-1]

直接用模型提取人脸特征如下:

from deepface.commons import functions
from deepface.basemodels import VGGFace
model = VGGFace.loadModel()
img = functions.preprocess_face(img, target_size=(224, 224), grayscale = False, enforce_detection = True, detector_backend = 'opencv', return_region = False, align = True)
facerep = model.predict(img)[0,:]

可以用数据库存储人脸特征向量,新检测的人脸用同样的方法提取特征后直接与数据库中的人脸向量一一比较并确认身份。

特征向量验证

deepface特征向量验证时的距离指标有:cosine,euclidean,euclidean_l2
当使用DeepFace里的verify函数会对两张图片进行人脸检测并对齐,然后提取特征向量并验证距离。

from deepface import DeepFace
result = DeepFace.verify(img1_path, img2_path = '', model_name = 'VGG-Face', distance_metric = 'cosine', model = None, enforce_detection = True, detector_backend = 'opencv', align = True, prog_bar = True, normalization = 'base')

其返回的结果是类似下面的字典:

  {"verified": True, "distance": 0.2563, "max_threshold_to_verify": 0.40, "model": "VGG-Face", "similarity_metric": "cosine"}

也可以不使用封装好的函数而是自己验证两个向量的距离并确定阈值。

所需权重位置

因为deepface里面的一些模型需要训练好的权重,所以当选择一些使用一些深度模型时例如retinafaceVGGFace,会先下载权重。这些权重的存储地址类似下面:
/home/path/.deepface/weights/retinaface.h5
显示隐藏文件夹ctr+h

deepface使用相关推荐

  1. 人脸验证(一)--Deepface

    转自:blog.csdn.net/stdcoutzyx/article/details/46776415 DeepFace基本框架 人脸识别的基本流程是: detect -> aligh -&g ...

  2. 人工智能 deepface 换脸技术 学习

    介绍 Deepface是一个轻量级的python人脸识别和人脸属性分析(年龄.性别.情感和种族)框架.它是一种混合人脸识别框架缠绕状态的最先进的模型:VGG-Face,Google FaceNet,O ...

  3. 人脸识别——FaceBook的DeepFace、Google的FaceNet、DeepID

    DeepFace--Facebook的人脸识别 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 连续看了DeepID和FaceNet后,看了更早期的一篇论文,即FB的DeepF ...

  4. 使用 Python +OpenCV+Deepface实现人脸、情感和种族检测

    我们使用 OpenCV.deepface 库和 haarcascade_frontalface_default.xml 文件来检测图像中的人脸.面部表情和人种. 从 https://unsplash. ...

  5. 人脸识别之人脸验证(一)--Deepface

    转自:blog.csdn.net/stdcoutzyx/article/details/46776415 DeepFace基本框架 人脸识别的基本流程是: detect -> aligh -&g ...

  6. 基于DeepFace模型设计的人脸识别软件

    资源下载地址:https://download.csdn.net/download/sheziqiong/85601096 人脸识别软件(无外部API) V2.0 基于DeepFace模型设计的人脸识 ...

  7. Ubuntu 21.04 使用Docker部署深度学习项目(cuda11.2+cudnn8.8+deepface)

    文章目录 1.安装Docker 1.1 确定系统版本 1.2 卸载旧版本 1.3 设置stable镜像仓库 1.4 安装Docker ce 1.5 测试 1.6 阿里云镜像加速 1.7 重启服务器 2 ...

  8. 【读点论文】DeepFace: Closing the Gap to Human-Level Performance in Face Verification。深度学习开始对人脸下手

    DeepFace: Closing the Gap to Human-Level Performance in Face Verification 最早将深度学习用于人脸验证的开创性工作.Facebo ...

  9. 人脸识别:1.DeepFace

    DeepFace: Closing the Gap to Human-Level Performance in Face Verification Cite 基于卷积的人脸识别pipeline共有四个 ...

  10. [深度学习论文笔记][Face Recognition] DeepFace: Closing the Gap to Human-Level Performance in Face Verificati

    Taigman, Yaniv, et al. "Deepface: Closing the gap to human-level performance in face verificati ...

最新文章

  1. 《Adobe Premiere Pro CC经典教程(彩色版)》——2.2 建立项目
  2. python hexdump_hexdump用法
  3. python输出所有素数_Python实现输出某区间范围内全部素数的方法
  4. boost::describe模块宏BOOST_DESCRIBE_PP_FOR_EACH的测试程序
  5. Leet Code OJ 260. Single Number III [Difficulty: Medium]
  6. 如何快速删除打印机任务
  7. superhot预告片下载_预告片:裸指关节SOA
  8. r spgm 语言_Spatial Simultaneous Equations空间联立方程 的R package和经典文献
  9. vue2.0中组建里面套用组件_vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码...
  10. el-table因为出现垂直滚动条造成多一个td的空白格
  11. Shell中的感叹号
  12. python 小于号大于号是什么意思_大于号和小于号怎么区别
  13. 一次 ASAN 找不到 symbolizer 问题的分析与解决
  14. 数显之家快讯:【SHIO世硕心语】2021年,中国最赚钱的时代到来!
  15. 网易云音乐评论墙php源码,网易云音乐热评墙那些令人感慨的句子,哪一句打动了你?...
  16. 【Python 每日一技】根据序列中每个元素共同的数据域进行分组迭代
  17. 【主题词——蓝色妖姬】
  18. DevEco Studio中文、鸿蒙IDE汉化
  19. 有道云笔记markdown语法整理
  20. 换用国内apt源解决树莓派安装ubuntu后apt-get速度慢的问题

热门文章

  1. BP神经网络简单应用实例,bp神经网络应用举例
  2. python渗透测试神器_专题:网络安全工具百宝箱之渗透测试神器_51CTO.COM
  3. 小爱同学课程表自动导入教程(2)——新版青果教务系统
  4. Android 身份证拍照 识别 文字识别 (百度)
  5. coreldraw梯形校正_有哪些比较好的CDR教程?
  6. 计算机终端mac是什么,苹果Mac OS终端是什么,Mac OS终端的作用是什么?
  7. android停止补间动画,android 帧动画,补间动画,属性动画的简单总结
  8. Java字符串拼接的优雅方式
  9. python中的pandas库如何读数据_Python之Pandas库学习(二):数据读写
  10. 【经验分享】MAC系统自带截屏、录屏小工具