face_recognition是一个强大、简单、易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统。此项目是世界上最简洁的人脸识别库,你可以使用Python和命令行工具提取、识别、操作人脸。 本项目的人脸识别是基于业内领先的C 开源库 dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。 开源地址:https://github.com/ageitgey/face_recognition
1.问题描述
在Windows使用此face_recognition项目时,由于官方不提供Windows版本:安装时总是遇到不同问题。
不同操作系统的安装方法 在 Mac 或者 Linux上安装本项目 First, make sure you have dlib already installed with Python bindings: 第一步,安装dlib和相关Python依赖:
- 如何在macOS或者Ubuntu上安装dlib
Then, install this module from pypi using pip3
(or pip2
for Python 2):
pip3 install face_recognition
如果你遇到了幺蛾子,可以用Ubuntu虚拟机安装本项目,看下面这个教程。 如何使用Adam Geitgey大神提供的Ubuntu虚拟机镜像文件安装配置虚拟机,本项目已经包含在镜像中.
在 Mac 或者 Linux上安装本项目 2
修改你的pip镜像源为清华镜像,然后使用pip install face_recognition
,可以自动帮你安装各种依赖,包括dlib。只是在安装dlib的时候可能会出问题,因为dlib需要编译,出现的问题一般是gcc
或者g
版本的问题,所以在pip install face_recognition
之前,可以通过在命令行键入
export CC=/usr/local/bin/gcc export CXX=/usr/local/bin/g
来指定你gcc和g 对应的位置,(这两句话会临时修改当前终端的环境变量/usr/local/bin/gcc对应你自己gcc或者g 所在目录)。
在树莓派上安装
- 树莓派安装指南
在Windows上安装 虽然本项目官方并不支持Windows,但一些大神们摸索出了在Windows上运行本项目的方法:
- @masoudr写的教程:如何在Win10系统上安装 dlib库和 face_recognition项目
使用Ubuntu虚拟机镜像文件安装配置虚拟机,本项目已经包含在这个镜像中
- 如何使用Adam Geitgey大神提供的Ubuntu虚拟机镜像文件安装配置虚拟机,本项目已经包含在镜像中(需要电脑中安装VMWare Player 或者 VirtualBox)
使用conda和pip都无法直接安装。
2.问题解决
经过不断尝试,最终选择用pip安装指定版本dlib==19.7.0,再安装face_recognition。(如果需要请自行安装Cmake):
pip install dlib==19.7.0
pip install face_recognition
3.简单使用
face_recognition基于dli封装很多常用人脸识别相关算法,这里举两个常用例子
1).人脸检测
代码语言:javascript复制import face_recognition
import cv2
img_path = "gril.jpg"
imgs = cv2.imread(img_path,cv2.IMREAD_COLOR)
face_locations = face_recognition.face_locations(imgs)
print(face_locations)
cv2.rectangle(imgs,(face_locations[0][1],face_locations[0][0]),(face_locations[0][3],face_locations[0][2]),color=(0,255,0))
while True:
cv2.imshow('image',imgs)
if(cv2.waitKey(0)==27):
break
else:
cv2.imwrite("save.jpg",imgs)
cv2.destroyAllWindows()
如右图所示。
2).人脸比对(识别)
人脸识别原理其实很容易理解,就是对人脸提取特征,再对特征进行相似度(或者距离比对),最后选取合适阈值来判断是否为同一人
代码一,两张刘亦菲照片:输出 [True]
代码语言:javascript复制import face_recognition
known_image = face_recognition.load_image_file("lyf.jpg")
unknown_image = face_recognition.load_image_file("lyf1.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
print(results)
代码二,刘亦菲与郭富城:输出 [False]
代码语言:javascript复制import face_recognition
known_image = face_recognition.load_image_file("lyf1.jpg")
unknown_image = face_recognition.load_image_file("gfc.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
print(results)