您还可以用中文或韩语或日语阅读此文件的翻译版本。
从Python或命令行中识别和操纵面孔,并使用世界上最简单的面部识别库。
使用Dlib的最先进的面部识别建造,建立在深度学习中。该模型在野生基准中的标记面上的精度为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 )
查找面部特征对于许多重要的东西非常有用。但是,您也可以将其用于真正愚蠢的东西,例如应用数字化妆(想想“ meitu”):
认识谁出现在每张照片中。
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库一起进行实时识别:
请参阅此示例以获取代码。
用户限制的共享Jupyter笔记本电脑演示(不正式支持):
首先,请确保您已经安装了Python绑定:
然后,确保安装了CMAKE:
brew install cmake
最后,使用pip3
(或python 2的pip2
)从PYPI安装此模块:
pip3 install face_recognition
另外,您可以使用Docker尝试此库,请参阅此部分。
如果您在安装方面遇到麻烦,也可以尝试预先配置的VM。
pkg install graphics/py-face_recognition
虽然Windows没有正式支持,但有用的用户发布了有关如何安装此库的说明:
安装face_recognition
时,您将获得两个简单的命令行程序:
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
是图像中的一张面孔,与您的知名人士文件夹中的任何人都不匹配。
face_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
如果您只是想知道每张照片中的人的名字,但不在乎文件名,则可以这样做:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ' , ' -f2
Barack Obama
unknown_person
如果您拥有具有多个CPU内核的计算机,则可以并行进行面部识别。例如,如果您的系统具有4个CPU内核,则可以通过并行使用所有CPU内核来处理相同时间的4倍。
如果您使用的是Python 3.4或更新的,请传递--cpus <number_of_cpu_cores_to_use>
参数:
$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/
您也可以传递--cpus -1
以使用系统中的所有CPU内核。
您可以导入face_recognition
模块,然后仅使用几行代码轻松地操纵面。超级简单!
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!
请参阅此示例尝试一下。
您也可以选择加入基于深度学习的面部检测模型。
注意:GPU加速度(通过NVIDIA的CUDA库)才能通过此模型进行良好的性能。您还需要在补充dlib
时启用CUDA支持。
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image , model = "cnn" )
# face_locations is now an array listing the co-ordinates of each face!
请参阅此示例尝试一下。
如果您有很多图像和GPU,也可以在批处理中找到面孔。
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0]['left_eye'] would be the location and outline of the first person's left eye.
请参阅此示例尝试一下。
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!" )
请参阅此示例尝试一下。
所有示例都可以在此处找到。
如果您想创建一个独立的可执行文件,该可执行文件可以运行而无需安装python
或face_recognition
,则可以使用pyinstaller。但是,它需要一些自定义配置才能与此库一起使用。请参阅此问题的问题。
face_recognition
的文章和指南如果您想了解面对面的位置和识别方式,而不是依赖黑匣子库,请阅读我的文章。
由于face_recognition
取决于用C ++编写的dlib
,因此将其使用应用到Heroku或AWS等云托管提供商的应用程序可能很棘手。
为了使事情变得更容易,此存储库中有一个Dockerfile的示例,该示例显示了如何运行Docker容器中使用face_recognition
构建的应用程序。因此,您应该能够部署到支持Docker图像的任何服务。
您可以通过运行: docker-compose up --build
还有几个预制的码头图像。
Linux用户使用GPU(驱动程序> = 384.81)和已安装的NVIDIA-DOCKER可以在GPU上运行示例:打开Docker-compose.yml文件,并取消dockerfile: Dockerfile.gpu
和runtime and runtime: nvidia
lines:nvidia lines。
如果遇到问题,请在提交GitHub问题之前阅读Wiki的常见错误部分。