开源 | 基于Python的人脸识别:识别准确率高达99.38%!

2017 年 7 月 29 日 全球人工智能

欢迎加入全球最大的AI开发者社群>>

该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。这也提供了一个简单的 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)


找出脸部特征对很多重要的事情都非常有用。但是你也可以用它来做一些「蠢事」,比如数字化妆(美图):



识别图片中的人脸:识别每张图片中的人物。


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 库执行实时人脸识别:



代码:https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py


安装要求

  • Python 3+ 或 Python 2.7

  • macOS 或 Linux (Windows 未测试)

  • 还可在树莓派 2+上运行(按照具体指令来安装运行:https://gist.github.com/ageitgey/1ac8dbe8572f3f533df6269dab35df65)

  • 预配置的 VM 图像同样可用。

使用pin3从pypi安装这一模块:

pip3 install face_recognition


重要提示:pip 尝试编译 dlib 依赖时很可能会遇到一些问题。如果遇到问题,前往该地址(https://gist.github.com/ageitgey/629d75c1baac34dfa5ca2a1928a7aeaf)从来源(而不是 pip)中安装 dlib,从而修复该错误。


手动安装 dlib 后,再次运行 pip3 install face_recognition,完成安装。

如果安装还有问题,你还可以试试预配置的 VM(https://medium.com/@ageitgey/try-deep-learning-in-python-now-with-a-fully-pre-configured-vm-1d97d4c3e9b


用途:命令行界面

安装 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 是未与已知人物文件夹中任何照片相匹配的人脸。如果你只想知道每张照片中的人物姓名,不在意文件名,那么你可以采用以下做法:

$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ',' -f2 Barack Obama unknown_person


如果你的电脑配有多核 CPU,你就可以同时执行多个人脸识别任务。例如,如果你的系统有 4 个 CPU 核,你可以同时使用这 4 个 CPU 核,那么同样时间内处理的图像数量是原来的四倍。


如果你使用 Python 3.4 或更新的版本,传入--cpus <number_of_cpu_cores_to_use>参数:

$ face_recognition -cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/


你还可以传入--cpus -1,来使用系统中所有的 CPU 核。


Python 模块:使用 face_recognition 模块,几行代码轻松控制人脸,so easy!API 地址:https://face-recognition.readthedocs.io 

自动定位图像中人物的脸部特征

import face_recognition image = face_recognition.load_image_file("my_picture.jpg") face_locations = face_recognition.face_locations(image) # face_locations is now an array listing the co-ordinates of each face!


图像人脸识别

import face_recognition picture_of_me = face_recognition.load_image_file("me.jpg") my_face_encoding = face_recognition.face_encodings(picture_of_me)[0] # my_face_encoding now contains a universal 'encoding' of my facial features that can be compared to any other picture of a face! unknown_picture = face_recognition.load_image_file("unknown.jpg") unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0] # Now we can see the two face encodings are of the same person with `compare_faces`! results = face_recognition.compare_faces([my_face_encoding], unknown_face_encoding)if results[0] == True:    print("It's a picture of me!")else:    print("It's not a picture of me!")


注意事项

该人脸识别模型基于成年人照片训练,因此对儿童照片的识别效果不好。该模型默认比较阈值是 0.6,容易混淆儿童的面部。


将该模型配置到云主机(Heroku、AWS 等)

face_recognition 赖以存在的 dlib 是用 C++语言写的,因此将该内置该模型的 app 配置到 Heroku 或 AWS 等云主机提供商就很复杂。在该 repo 中有一个 Dockerfile 示例,展示如何在 Docker 容器中运行内置 face_recognition 模型的 app(详见该网址:https://www.docker.com/)。参考该示例,您能够将该模型配置到任何支持 Docker 图像的服务。


常见问题

问题1:使用 face_recognition 或运行样本时,出现 Illegal instruction (core dumped)。

解决方案:dlib 需要在 SSE4 或 AVX 支持下编译,但是你的 CPU 太旧,无法支持编译。你需要根据此处(https://github.com/ageitgey/face_recognition/issues/11#issuecomment-287398611)所示修改代码,然后对 dilb 进行重新编译。


问题2:运行摄像头样本时,出现 RuntimeError: Unsupported image type, must be 8bit gray or RGB image.

解决方案:你的摄像头可能并未在 OpenCV 上正确设置。点击此处(https://github.com/ageitgey/face_recognition/issues/21#issuecomment-287779524)了解更多。


问题3:运行 pip2 install face_recognition 时出现 MemoryError。

解决方案:face_recognition_models 文件太大,不适合你可用的 pip 缓存内存。试一下 pip2 --no-cache-dir install face_recognition,解决该问题。


问题4:AttributeError: 'module' object has no attribute 'face_recognition_model_v1'

解决方案:你安装的 dlib 版本过旧,需要 19.4 或者更新的版本。请升级 dlib 版本。


问题5:TypeError: imread() got an unexpected keyword argument 'mode'

解决方案:你安装的 scipy 版本过旧,需要 0.17 或者更新的版本。请升级 scipy 版本。


开源地址:https://github.com/ageitgey/face_recognition#face-recognition


热门文章推荐

基础|深度学习入门必须理解这25个概念

周志华提出多类最优边界分配机mcODM,代替支持向量机

重磅|腾讯公布首批25个人工智能加速器项目名单!

国家战略:国务院发布“新一代人工智能发展规划”

京东发布登月机器学习平台:为第四次零售革命输出AI能力

重磅|中国870家的AI公司融资905亿人民币!

浙大女科学家解密:从最后一面逆袭第一名!

资料|麻省理工课程:深度学习数据基础(PPT)

推荐| 40张动态图详解全部传感器关注原理!

警惕中国人工智能有一只推荐算法叫:莆田系算法!

登录查看更多
4

相关内容

Cognition:Cognition:International Journal of Cognitive Science Explanation:认知:国际认知科学杂志。 Publisher:Elsevier。 SIT: http://www.journals.elsevier.com/cognition/
专知会员服务
53+阅读 · 2020年7月4日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
189+阅读 · 2020年6月29日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
港中文开源基于PyTorch的多任务人脸识别框架
极市平台
17+阅读 · 2019年8月31日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
Python | 50行代码实现人脸检测
计算机与网络安全
3+阅读 · 2018年1月23日
推荐|基于Python的人脸识别库,离线识别率高达99.38%!
全球人工智能
3+阅读 · 2017年12月25日
Python的开源人脸识别库:离线识别率高达99.38%
互联网架构师
6+阅读 · 2017年12月10日
【源码】Python的开源人脸识别库:离线识别率高达99.38%
全球人工智能
11+阅读 · 2017年10月29日
基于Python的开源人脸识别库:离线识别率高达99.38%
炼数成金订阅号
5+阅读 · 2017年7月28日
可怕,40 行代码的人脸识别实践
51CTO博客
3+阅读 · 2017年7月22日
Arxiv
20+阅读 · 2020年6月8日
Deep Learning for Deepfakes Creation and Detection
Arxiv
6+阅读 · 2019年9月25日
SlowFast Networks for Video Recognition
Arxiv
4+阅读 · 2019年4月18日
Arxiv
4+阅读 · 2018年12月20日
Arxiv
4+阅读 · 2018年1月19日
VIP会员
相关资讯
港中文开源基于PyTorch的多任务人脸识别框架
极市平台
17+阅读 · 2019年8月31日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
Python | 50行代码实现人脸检测
计算机与网络安全
3+阅读 · 2018年1月23日
推荐|基于Python的人脸识别库,离线识别率高达99.38%!
全球人工智能
3+阅读 · 2017年12月25日
Python的开源人脸识别库:离线识别率高达99.38%
互联网架构师
6+阅读 · 2017年12月10日
【源码】Python的开源人脸识别库:离线识别率高达99.38%
全球人工智能
11+阅读 · 2017年10月29日
基于Python的开源人脸识别库:离线识别率高达99.38%
炼数成金订阅号
5+阅读 · 2017年7月28日
可怕,40 行代码的人脸识别实践
51CTO博客
3+阅读 · 2017年7月22日
Top
微信扫码咨询专知VIP会员