FaceRecognition 项目的人脸识别是基于业内领先的 C++开源库 dlib 中的深度学习模型,用 Labeled Faces in the Wild 人脸数据集进行测试,有高达 99.38% 的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。

Labeled Faces in the Wild 是美国麻省大学安姆斯特分校(University of Massachusetts Amherst)制作的人脸数据集,该数据集包含了从网络收集的 13,000 多张面部图像。
本项目提供了简易的 face_recognition
命令行工具,可以用它处理整个文件夹里的图片。
特性
从图片里找到人脸
定位图片中的所有人脸:

import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
识别人脸关键点
识别人脸关键点,包括眼睛、鼻子、嘴和下巴。

import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)
识别人脸关键点在很多领域都有用处,但同样也可以把这个功能玩坏,比如本项目的 digital make-up 自动化妆案例(就像美图秀秀一样)。

识别图片中的人是谁

import face_recognition
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.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)
也可以配合其它的 Python 库(比如 opencv)实现实时人脸检测:

安装
环境配置
在 Mac 或者 Linux 上安装本项目
pip3 install face_recognition
在 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 上运行本项目的方法:
https://github.com/ageitgey/face_recognition/issues/175#issue-257710508
使用方法
当安装好了本项目,可以使用两种命令行工具:
-
face_recognition
– 在单张图片或一个图片文件夹中认出是谁的脸。 -
face_detection
– 在单张图片或一个图片文件夹中定位人脸位置。
face_recognition 命令行工具
face_recognition
命令行工具可以在单张图片或一个图片文件夹中认出是谁的脸。
首先,得有一个已经知道名字的人脸图片文件夹,一个人一张图,图片的文件名即为对应的人的名字:

然后,需要第二个图片文件夹,文件夹里面是希望识别的图片:

然后,在命令行中切换到这两个文件夹所在路径,然后使用 face_recognition
命令行,传入这两个图片文件夹,然后就会输出未知图片中人的名字:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
输出结果的每一行对应着图片中的一张脸,图片名字和对应人脸识别结果用逗号分开。
如果结果输出了 unknown_person
,那么代表这张脸没有对应上已知人脸图片文件夹中的任何一个人。
ace_detection 命令行工具
face_detection
命令行工具可以在单张图片或一个图片文件夹中定位人脸位置(输出像素点坐标)。
在命令行中使用 face_detection
,传入一个图片文件夹或单张图片文件来进行人脸位置检测:
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
输出结果的每一行都对应图片中的一张脸,输出坐标代表着这张脸的上、右、下、左像素点坐标。
调整人脸识别的容错率和敏感度
如果一张脸识别出不止一个结果,那么这意味着他和其他人长的太像了(本项目对于小孩和亚洲人的人脸识别准确率有待提升)。可以把容错率调低一些,使识别结果更加严格。
通过传入参数 --tolerance
来实现这个功能,默认的容错率是 0.6,容错率越低,识别越严格准确。
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
如果想看人脸匹配的具体数值,可以传入参数 --show-distance true
:
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
开源地址
https://github.com/ageitgey/face_recognition
后端专属技术群 构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步! 文明发言,以 交流技术
、职位内推
、行业探讨
为主广告人士勿入,切勿轻信私聊,防止被骗
加我好友,拉你进群
原文始发于微信公众号(极客之家):一个强大简单、易上手的人脸识别项目
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/285020.html