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

该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。这也提供了一个简单的 face_recognition 命令行工具,你可以打开命令行中任意图像文件夹,进行人脸识别!

特征:找出下面图片中所有的人脸:

import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_locations = face_recognition.face_locations(image)

找到并且控制图像中的脸部特征:找到并勾勒出每个人的眼睛、鼻子、嘴和下巴。

import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_landmarks_list = face_recognition.face_landmarks(image)

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

import face_recognitionknown_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 ',' -f2Barack Obamaunknown_person

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

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

$ 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_recognitionimage = 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_recognitionpicture_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返回搜狐,查看更多

责任编辑:

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

  1. python个人网站系统_利用基于Python的Pelican打造一个自己的个人纯静态网站

    其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来可以把开发中遇到的问题记录用来自省,第四可以通过交换友链来结识更多的技术领域 ...

  2. python requests是什么_如何基于Python + requests实现发送HTTP请求

    这篇文章主要介绍了如何基于Python + requests实现发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.在接口自动化测试 ...

  3. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  4. 基于Python的开源人脸识别库,离线识别率高达99.38%

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

  5. python 人脸识别_手把手教你用python实现人脸识别,识别率高达99.38%

    之前本人在实训时需要实现人脸识别这个功能,当时是借助百度的人脸识别api,这个需要注册账号,还需要用到密钥.操作起来也不麻烦,代码也不多.就是如果网速跟不上,返回的结果时,速度有点慢.当时也没那么在意 ...

  6. 基于Python的开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38% 2019年04月18日 18:13:18 AI终结者 阅读数 1233 项目地址:https://github.com/ageitgey/ ...

  7. 《Python与硬件项目案例》— 基于Python的口罩检测与指纹识别签到系统设计

    <Python与硬件项目案例>- 基于Python的口罩检测与指纹识别签到系统设计 目录 <Python与硬件项目案例>- 基于Python的口罩检测与指纹识别签到系统设计 1 ...

  8. 《Python与硬件项目案例》— 基于Python与指纹模块AS608的指纹识别签到考勤系统(下篇)(期末大作业、课程设计、毕业设计、结课项目)

    目录 <Python与硬件项目案例>- 基于Python与指纹模块AS608的指纹识别签到考勤系统(下篇) 概述 参考代码 <Python与硬件项目案例>- 基于Python与 ...

  9. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等

    Python之PIL之绘图:基于Python的PIL库绘制各种图形.添加文字等 目录 一.绘制各种形状各种案例 1.绘制矩形 2.绘制圆形.弧线形

最新文章

  1. 多迪人事主管揭秘:面试官是如何面试Web前端求职者?
  2. Mysql 事务锁表,解决方法
  3. Linux套接字聊天
  4. go语言中channel的创建和销毁以及匿名函数的使用
  5. Java并发编程系列之Semaphore详解
  6. MySQL(九)插入、更新和删除
  7. React Native - FlexBox弹性盒模型
  8. CSS快速入门-箭头和图标
  9. Jmeter连接Mysql
  10. html5游戏制作总结
  11. 分布式应用中的一致性协议
  12. axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程
  13. 人脸关键点:DAN-Deep Alignment Network: A convolutional neural network for robust face alignment
  14. 20200501:力扣185周赛上
  15. 爬虫----记录某新闻详情页app逆向过程(app逆向初学第一次实战)
  16. 自由曲面透镜设计matlab,实现LED台灯均匀照明的自由曲面透镜仿真设计
  17. java项目环境怎么写_开发环境怎么写
  18. 人工智能在药物不良反应预测中的应用
  19. iOS 开发 code sign 代码签名深入剖析
  20. jqprint插件打印去掉页眉页脚的方式

热门文章

  1. 使用nexus3配置golang私有仓库(go私服)
  2. JavaFX控制器:设置按钮点击事件代码示例
  3. docker私有仓库harbor配置helm chart仓库(安装helm chart插件)
  4. 【nginx配置】 proxy_pass反向代理配置中url后面加不加/的说明
  5. kafka与zookeeper版本对应关系表
  6. idea配置Run Dashboard的方法(亲测有效)
  7. String的concat方法与join方法
  8. php 字符串包含另一个字符串_每天一个PHP语法二字符串使用及内部结构
  9. ifconfig命令找不到_Linux基本命令
  10. 卷积网络的学习(卷积核,通道,padding,stride等概念)