本文概述
- 要求
- 1.安装并编译dlib
- 2.为dlib安装Python绑定
- 3.安装人脸识别库
- 4.使用方法
在本文中, 我们将教你如何在Ubuntu 16.04中基本安装, 设置和使用python库” 面部识别” 。
要求 在继续使用该库之前, 你需要在系统上:
Python 3
在本教程中, 我们将使用Python 3跟踪该库的安装。
cmake
你的系统需要安装CMake, 这是一个开放源代码, 跨平台的工具家族, 旨在构建, 测试和打包软件。 CMake用于使用简单平台和与编译器无关的配置文件来控制软件编译过程, 并生成可在你选择的编译器环境中使用的本机makefile和工作区。 CMake工具套件是由Kitware创建的, 旨在满足ITK和VTK等开源项目对强大, 跨平台构建环境的需求。
如果尚未将其安装在系统中, 则可以运行以下命令进行安装:
# Update reposudo apt-get update# Install cmake if it's not installedsudo apt-get install build-essential cmake
1.安装并编译dlib 在继续使用Python进行面部识别库的使用和安装之前, 你将需要在系统上安装的dlib的可分发版本以及python绑定。 Dlib是一个现代的C ++工具箱, 其中包含机器学习算法和工具, 这些工具和工具可以用C ++创建复杂的软件来解决实际问题。它在工业和学术界广泛使用, 包括机器人技术, 嵌入式设备, 移动电话和大型高性能计算环境。 Dlib的开源许可允许你免费在任何应用程序中使用它。
要开始在系统中编译dlib, 请在系统的某个目录中克隆存储库:
# Clone the dlib library in some directory of the systemgit clone https://github.com/davisking/dlib.git
然后, 使用以下命令继续构建dlib:
# get into the cloned directorycd dlib# create build directory inside the cloned directorymkdir build# Switch to the created directorycd build# generate a Makefile in the current directorycmake ..# Build dlib !cmake --build .
这将开始构建过程, 一旦完成, dlib的本机库将在你的系统中可用。有关Dlib的更多信息, 请访问此处的官方网站。
2.为dlib安装Python绑定 构建dlib之后, 在上一步中再次切换到克隆的目录:
cd ..
并使用以下命令继续安装运行带有Python 3的setup.py文件的python绑定:
python3 setup.py install
这将安装绑定, 稍后你将可以在Python代码中导入dlib。如果在执行上一条命令时遇到以下异常:
Traceback (most recent call last):File "setup.py", line 42, in <
module>
from setuptools import setup, ExtensionImportError: No module named 'setuptools'
使用以下命令安装Python 3设置工具:
sudo apt-get install python3-setuptools
现在, 再次尝试运行python3 setup.py install命令。
3.安装人脸识别库 如前所述, 我们将使用面部识别库。该库使用世界上最简单的人脸识别库从Python或命令行中识别和处理人脸。使用dlib先进的人脸识别功能和深度学习功能构建。该模型在Wild基准中的Labeled Faces上的准确性为99.38%。
这也提供了一个简单的face_recognition命令行工具, 可让你轻松地从命令行对图像文件夹进行人脸识别。你可以使用以下命令进行安装:
注意 安装将需要一段时间才能下载和安装, 因此请耐心等待。
pip3 install face_recognition
如果尚未安装pip3, 请使用以下命令进行安装:
sudo apt-get -y install python3-pip
有关此库的更多信息, 请访问Github上的官方存储库。安装库之后, 你将可以从CLI或python脚本中使用它。
4.使用方法 安装face_recognition时, 你将获得两个简单的命令行程序:
- face_recognition-识别照片或文件夹中充满照片的脸部。
- face_detection-在照片或充满照片的文件夹中查找脸部。
人脸识别
例如, 使用此库, 你将可以根据一些小的数据库作为来源来识别一些面孔。创建一个目录, 其中包含脚本可以识别的可能人员, 在此示例中, 我们将拥有一个包含3位名人的目录:
文章图片
在命令中, 我们将把该目录标识为图像源。在其他目录中, 我们将存储要从数据库中识别的名人的图像, 显??然, 我们将使用其中一位混血的名人, 但使用另一张图像:
文章图片
逻辑如下, 图书馆将使用图像名人的目录作为数据库, 我们将搜索谁存储在未知目录中的图像。你可以运行以下命令来完成上述任务:
face_recognition ./celebrities/ ./unknown/
然后, 输出将是:
文章图片
该命令将输出已处理图像的路径, 在本例中为unknown_celebrity.jpg, 并将来自名人目录的匹配图像名称添加为后缀。在这种情况下, 图书馆可以从我们的图像中识别演员瑞恩·雷诺兹。请注意, 这也可以用于多个图像。
如前所述, CLI实用程序只是一个额外的功能, 有趣的事实之一是可以自己编写一些代码并使用一些逻辑来识别面孔, 例如:
import face_recognition# Load the jpg files into numpy arraysobama_image = face_recognition.load_image_file("Barack Obama.jpg")justin_image = face_recognition.load_image_file("Justin Timberlake.jpg")ryan_image = face_recognition.load_image_file("Ryan Reynolds.jpg")unknown_image = face_recognition.load_image_file("unknown_celebrity.jpg")# Get the face encodings for each face in each image file# Since there could be more than one face in each image, it returns a list of encodings.# But since I know each image only has one face, I only care about the first encoding in each image, so I grab index 0.try:obama_face_encoding = face_recognition.face_encodings(obama_image)[0]justin_face_encoding = face_recognition.face_encodings(justin_image)[0]ryan_face_encoding = face_recognition.face_encodings(ryan_image)[0]unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]except IndexError:print("I wasn't able to locate any faces in at least one of the images. Check the image files. Aborting...")quit()known_faces = [obama_face_encoding, justin_face_encoding, ryan_face_encoding]# results is an array of True/False telling if the unknown face matched anyone in the known_faces arrayresults = face_recognition.compare_faces(known_faces, unknown_face_encoding)print("Is the unknown face a picture of Obama? {}".format(results[0]))print("Is the unknown face a picture of Justin? {}".format(results[1]))print("Is the unknown face a picture of Ryan? {}".format(results[2]))print("Is the unknown face a new person that we've never seen before? {}".format(not True in results))
想法基本相同, 将” 数据库” 中图像生成的面部编码与你要识别的图像生成的编码进行比较。
人脸检测
人脸检测可让你识别图像中人脸的位置。库将返回图像中图像的坐标, 因此你可以使用这些坐标在图像中绘制正方形。就像人脸识别工具一样, 该命令将在Providen目录中打印图像的路径, 后跟坐标作为后缀, 例如:
face_detection ./celebrities/
这将生成以下输出:
文章图片
如你所见, 你可以在字符串的第一个逗号之后获取图像中已识别面部的坐标。你也可以将其与代码一起使用:
import face_recognitionimage = face_recognition.load_image_file("Ryan Reynolds.jpg")face_locations = face_recognition.face_locations(image)# [(98, 469, 284, 283)]print(face_locations)
【如何在Ubuntu 16.04中安装和使用python人脸识别和检测库】编码愉快!
推荐阅读
- 如何在JavaScript TinyMCE富文本编辑器中删除”由TinyMCE支持”标签
- 如何使用jQuery和AtWho创建@mentions自动完成功能
- 如何在JavaScript中按键对对象数组按字母顺序排序
- VBS获取指定目录下最新文件拷贝然后以当前日期命名
- 中控考勤机二次开发小记
- 如何激活已过试用期的System Center 2012 Operations Manager
- Microsoft Project Honolulu上手体验
- 数据仓库的未来 MariaDB ColumnStore
- 在Docker中部署Confluence和jira-software