一个强大简单、易上手的人脸识别项目

戳上方蓝字“极客之家”关注!

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)实现实时人脸检测:

一个强大简单、易上手的人脸识别项目

安装

环境配置
  • Python 3.3+ or Python 2.7
  • macOS or Linux
  • Windows 并不是官方支持的,但也许也能用
在 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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!