一、定义

1、介绍

本项目是世界上最强大、简洁的人脸识别库,你可以使用Python和命令行工具提取、识别、操作人脸。
本项目的人脸识别是基于业内领先的C++开源库dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。
Labeled Faces in the Wild是美国麻省大学安姆斯特分校(University of Massachusetts Amherst)制作的人脸数据集,该数据集包含了从网络收集的13,000多张面部图像。

github和官网网址:

https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md
https://face-recognition.readthedocs.io/en/latest/face_recognition.html

2、人脸识别步骤:

1)人脸检测

要想识别人脸,首先需要在图像或者视频帧中找到所有人脸的位置,并将人脸部分的图像切割出来。

可以使用方向梯度直方图(HOG)来检测人脸位置。先将图片灰度化,因为色彩对于找到人脸位置并无明显作用,接着计算图像中各像素的梯度。

通过将图像变换为HOG形式,我们就可以提取图像的特征,从而获取人脸位置。

2)人脸对齐

一张图片中的人脸可能是倾斜的,或者仅仅是侧脸。为了方便给人脸编码,需要将人脸对齐成同一种标准的形状。

人脸对齐的第一步就是人脸是特征点估计。Dlib有专门的函数和模型,能够实现人脸68个特征点的定位。

找到特征点后,就可以通过图像的几何变换(仿射、旋转、缩放),使各个特征点对齐(将眼睛、嘴等部位移到相同位置)。

3)人脸编码

训练一个神经网络,将输入的脸部图像生成为128维的预测值。
训练的大致过程为:将同一人的两张不同照片和另一人的照片一起喂入神经网络,不断迭代训练,使同一人的两张照片编码后的预测值接近,不同人的照片预测值拉远。也就是减小类内距离,增大类间距离。具体算法参考facenet[3]。

4)识别身份

预先将所有人的连放入人脸库中,全部用上述的神经网络编码为128维并保存。识别时,将人脸预测为128维的向量后,与人脸库中的数据进行比对。

比对方法有很多种,可以直接找出阈值范围内欧氏距离最小的人脸,或者训练一个末端的SVM或者knn分类器,直接生成人的代号(身份)。
knn分类器构建方法可参考这个代码。

整体的使用python实现人脸识别的代码可以参考使用OpenCV,Python和深度学习进行人脸识别。

二、通过python代码实现

1、安装

1)windows系统 python3.10下安装 dlib

Steins-Gate-Divergence-Meter-Clock-VisitorCounter/dlib-19.22.99-cp310-cp310-win_amd64.whl at main · longsongline/Steins-Gate-Divergence-Meter-Clock-VisitorCounter · GitHub

2)安装 face_recognition 库

pip3 install face_recognition

2、代码案例

# coding=utf-8
import sys
import cv2
from PIL import Image,ImageDraw,ImageFont
import numpy as np
import face_recognition# 加载已知人脸图像
known_image = face_recognition.load_image_file("know_img.jpg")# 提取已知人脸的编码
known_face_encoding = face_recognition.face_encodings(known_image)[0]# 初始化摄像头
video_capture = cv2.VideoCapture(0)def cv2AddChineseText(frame, name, position, fill):font = ImageFont.truetype('simsun.ttc', 30)img_pil = Image.fromarray(frame)draw = ImageDraw.Draw(img_pil)draw.text(position, name, font=font, fill=fill)return np.array((img_pil))while True:# 读取摄像头中的图像ret, frame = video_capture.read()# 将图像转换为RGB格式rgb_frame = frame[:, :, ::-1]# 检测图像中的人脸face_locations = face_recognition.face_locations(rgb_frame)face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)# 在图像中标记人脸位置for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):# 判断检测到的人脸是否和已知人脸匹配matches = face_recognition.compare_faces([known_face_encoding], face_encoding, tolerance=0.38)# 如果匹配,则标记人脸为已知人脸name = "unknow"if True in matches:name = "know"# 在图像中标记人脸位置和姓名cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)# cv2.putText(frame, name, (left + 6, bottom - 6), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 1)frame = cv2AddChineseText(frame, name, (left, top - 38), (0, 0, 255))# 显示图像cv2.imshow('Video', frame)# 按下q键退出程序if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头
video_capture.release()# 关闭所有窗口
cv2.destroyAllWindows()

python实现人脸识别(face_recognition)相关推荐

  1. python实现人脸识别比对_人脸识别并比对实现(基于face_recognition)

    Face Recognition 是一个基于python的人脸识别框架,我们在此之上来实现人脸比对. 环境要求 Python 3.3+ or Python 2.7 macOS or Linux (Wi ...

  2. Python实现人脸识别功能,face_recognition的使用 | 机器学习

    目录 前言 环境部署 代码 总结 前言 接着上一篇:AI识别照片是谁,人脸识别face_recognition开源项目安装使用 | 机器学习_阿良的博客-CSDN博客 根据项目提供的demo代码,调整 ...

  3. python人脸识别训练模型_开源 | 基于Python的人脸识别:识别准确率高达99.38%!

    原标题:开源 | 基于Python的人脸识别:识别准确率高达99.38%! 该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wi ...

  4. 机器学习之人脸识别face_recognition使用

    机器学习之人脸识别face_recognition使用 简介 一 二 主要方法介绍 1. load_image_file 加载图像 2. face_locations 定位图中所有人脸 3. face ...

  5. Python+OpenCV人脸识别签到考勤系统(新手入门)

    Python+OpenCV人脸识别签到考勤系统(新手入门) 前言 项目效果图 项目需要的环境 编译器 辅助开发QT-designer 项目配置 代码部分 核心代码 项目目录结构 后记 正式版改进 项目 ...

  6. 基于Python的人脸识别考勤系统

    基于Python的人脸识别考勤系统 Python源文件: 基于Python3.7编程环境开发 需要安装 tkinter pil face_recognition OpenCV2 库来实现人脸识别 需要 ...

  7. python人脸识别门禁系统毕设_开源|手把手教你用Python进行人脸识别(附源代码)...

    原标题:开源|手把手教你用Python进行人脸识别(附源代码) 全球人工智能 来源:Github 翻译:黄玮 想要了解目前世界上最简洁的人脸识别库吗?现在小编带大家来学习使用Python语言或命令行进 ...

  8. python人脸检测怎么弄_如何通过python实现人脸识别验证

    这篇文章主要介绍了如何通过python实现人脸识别验证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 直接上代码,此案例是根据https://git ...

  9. 用Python进行人脸识别「包括源代码」

    Python可以从图像或视频中检测和识别你的脸. 人脸检测与识别是计算机视觉领域的研究热点之一. 人脸识别的应用包括人脸解锁.安全防护等,医生和医务人员利用人脸识别来获取病历和病史,更好地诊断疾病. ...

最新文章

  1. [问题解决] Python中 == 与 is 的区别
  2. 5g pdu session_运营商下架4G套餐,用户被5G!
  3. [转载]Web 研发模式演变
  4. 如何使用Docker、Docker-Compose和Rancher搭建部署Pipeline(二)
  5. go中使用sqlite
  6. RestTemplate HttpMessageConverter报错的解决方案no suitable HttpMessageConverter
  7. 与一线Linux嵌入式开发工程师的对话
  8. spring bean加载过程_Spring的Bean加载容器机制
  9. 伦巴时间步的动作要领_成人拉丁舞_伦巴、恰恰、桑巴舞、牛仔舞、斗牛舞
  10. 阿里云张献涛:2021 弹性计算发生了哪些变化
  11. 仙剑缘_仙剑缘手游下载-仙剑缘最新版-仙剑缘手机版_易玩网
  12. linux 限速命令,linux上传限速脚本介绍
  13. Win10如何把D盘空间分给C盘|Win10硬盘分成多个分区
  14. C++QT13位时间戳转换成年月日时分秒毫秒
  15. Linux系统下生成bit和mcs文件
  16. PWmat案例赏析:利用激光脉冲实现绝缘体-金属超快转变
  17. 【FPGA】调用IP核实现心形波
  18. 双电子两个格点Hubbard模型严格对角化
  19. 阿里云产业赋能:多端小程序Saas平台的突围之路
  20. 八、 以太坊的杰出之作:智能合约

热门文章

  1. Web前端系列技术之HTML基础(从入门开始)①
  2. 对外开放的通用接口设计
  3. 面朝大海, 春暖花开
  4. c语言转化音乐格式转换器安卓版,音乐格式转换器安卓版
  5. 自己眼中的程序员VS别人眼中的程序员
  6. 知道创宇的爬虫面试题
  7. 【Java核心技术卷一】对象与类:使用预定义类与用户自定义类
  8. CPU散热器的电磁辐射仿真分析
  9. Android端实现多人音视频聊天应用(二):多人视频通话
  10. Intel.VTune.Performance.Analyzer.v8.0.014.ISO下载