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

2024-02-02 13:32

本文主要是介绍开源 | 基于Python的人脸识别:识别准确率高达99.38%!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


开源 | 基于Python的人脸识别:识别准确率高达99.38%!
2017-09-03 1024深度学习 1024深度学习
1024深度学习

deeplearning1024

正如TED的精神:Ideas worth spreading,同样技术也不应该局限在少数人手中,技术值得更加广泛的传播,AI应该更加民主化,所以我们做了这个公众号,希望在自己学习的过程中,也能帮助到更多的人接触到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 ',' -f2Barack 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_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

-END-

这篇关于开源 | 基于Python的人脸识别:识别准确率高达99.38%!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670851

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip