使用Python和dlib进行人脸检测

作者: 不靠谱的猫 2018-05-08 14:25:22

使用Python和dlib进行人脸检测

“Dlib是一个现代化的C ++工具包,包含用于创建复杂软件的机器学习算法和工具”。它使您能够直接在Python中运行许多任务,其中一个例子就是人脸检测。

安装dlib并不像只做一个“pip install dlib”那么简单,因为要正确配置和编译dlib,您首先需要安装其他系统依赖项。如果你按照这里描述的步骤,它应该很容易让dlib启动并运行。(在本文中,我将介绍如何在Mac上安装dlib,但如果您使用的是Ubuntu,请务必查看相关资源部分的链接。)

你需要确定的第一件事是你已经安装和更新了Hombrew。如果您需要安装它,请将其粘贴到终端中:

  1. $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  

或者,如果您需要更新Hombrew,请输入以下内容:

  1. $ brew update  

您现在可以使用Homebrew来安装CMake,Boost.Python,以及在您的系统中正确配置和编译dlib所需的两个依赖关系:

  1. $ brew install cmake   
  2. $ brew install boost-python  

最后,您需要手动下载并安装XQuartz。

您现在已准备好安装dlib。我们将通过首先为这个项目创建一个孤立的虚拟环境来做到这一点。我将使用virtualenv,但您可以使用任何您熟悉的虚拟环境工具,包括Python的venv模块。需要scikit-image库才能读取我们稍后将传递给dlib的图像文件,因此我们还需要pip安装它:

  1. $ virtualenv venv_dlib   
  2. $ source venv_dlib / bin / activate   
  3. $ pip install scikit-image   
  4. $ pip install dlib  

就是这样。有了这个,你应该有可用的dlib。

Dlib

Dlib提供了不同的脸部检测算法。我将在这里使用的是基于CNN的人脸检测器。您可以下载预训练模型:https://github.com/davisking/dlib-models。由于使用此模型的计算成本很高,因此最好在GPU上执行以下代码。使用CPU也可以,但速度会更慢。

要在下面的要点中运行人脸检测代码,我建议首先在虚拟环境中再安装两个库。这些库将使与代码交互和可视化结果更容易:

  1. $ pip install matplotlib   
  2. $ pip install jupyterlab  

安装完库后,您需要确保:

  •     下载预训练模型(https://dlib.net/files/mmod_human_face_detector.dat.bz2)并将其存储在项目的根目录中 
  •     创建一个名为'faces'的新目录,在该目录中存储带有希望检测的脸部的.jpg。 

有了这个,你终于准备好开始在图片中检测脸部了!您可以通过在Jupyter Notebook中运行以下代码来完成此操作  

  1. import dlib   
  2.     import matplotlib.patches as patches   
  3.     import matplotlib.pyplot as plt   
  4.     from pathlib import Path   
  5.     from skimage import io   
  6.     %matplotlib inline   
  7.     # Load trained model  
  8.     cnn_face_detector = dlib.cnn_face_detection_model_v1(  
  9.     'mmod_human_face_detector.dat')   
  10.     # Function to detect and show faces in images   
  11.     def detect_face_dlib(img_path, ax):   
  12.     # Read image and run algorithm   
  13.     img = io.imread(img_path)   
  14.     dets = cnn_face_detector(img, 1)   
  15.     # If there were faces detected, show them   
  16.     if len(dets) > 0:   
  17.     for d in dets:   
  18.     rect = patches.Rectangle(   
  19.     (d.rect.left(), d.rect.top()),   
  20.     d.rect.width(),   
  21.     d.rect.height(),   
  22.     fill=False,   
  23.     color='b',   
  24.     lw='2')   
  25.     ax.add_patch(rect)   
  26.     ax.imshow(img)   
  27.     ax.set_title(str(img_path).split('/')[-1])   
  28.     # Path to images   
  29.     images = list(Path('faces').glob('*.jpg'))   
  30.     # Show results   
  31.     fig = plt.figure(figsize=(15, 5))   
  32.     for i, img in enumerate(images): 
  33.     ax = fig.add_subplot(1, len(images), i+1)   
  34.     detect_face_dlib(img, ax)  

结果 

在运行代码之后,您应该看到图像中的脸部周围出现蓝色方块,如果您问我,考虑到我们只写了几行代码,这非常棒!

Python dlib 人脸检测
上一篇:从零开始使用Python进行深度学习! 下一篇:AI殡葬:你敢让机器人主持葬礼吗?
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

十个基本的Python数据科学软件包

过去五年人们对数据科学的兴趣显著上升。尽管有许多编程语言适合数据科学和机器学习,但Python是最受欢迎的。

布加迪 ·  2019-09-25 09:20:33
Logreduce:用Python和机器学习去除日志噪音

为了更容易地将最相关的数据与其余数据分开,可以使用先前成功运行的作业结果来训练 Logreduce 机器学习模型,以从失败的运行日志中提取异常。

Tristan De Cacqueray ·  2019-08-05 13:20:50
在浏览器中使用TensorFlow.js和Python构建机器学习模型

本文首先介绍了TensorFlow.js的重要性及其组件,并介绍使用其在浏览器中构建机器学习模型的方法。然后,构建使用计算机的网络摄像头检测身体姿势的应用程序。

THU数据派 ·  2019-07-23 10:22:11
图解NumPy,这是形象理解数组的一份教程

本文将介绍使用 NumPy 的一些主要方法,以及在将数据送入机器学习模型之前,它如何表示不同类型的数据(表格、图像、文本等)。

机器之心 ·  2019-07-16 07:52:49
什么?神经网络还能创造新知识?

本文通过神经网络透明原则来揭示其“黑盒知识”,为此来检验一个布尔异或函数的神经网络。

读芯术 ·  2019-07-02 13:37:23
使用Python进行社交媒体情感分析入门

本文研究了 NLP 的一个特定领域:情感分析。重点是确定输入语言的积极、消极或中性性质。本部分将解释 NLP 和情感分析的背景,并探讨两个开源的 Python 包。

Michael Mccune ·  2019-05-14 10:37:26
Python数据科学:神经网络

本次只是一个简单的神经网络入门,涉及神经元模型和BP神经网络。这里简单了解一下机器学习的三要素,分别是模型、策略与算法。

小F ·  2019-05-07 19:12:28
Python机器学习资源菜单,选库找工具不愁,GitHub精选列表都齐了

用Python搞机器学习、数据科学,需要很多相关的资料,各种库、工具,都是常用、常找、常查的内容。

郭一璞 ·  2019-04-11 09:00:05
Copyright©2005-2019 51CTO.COM 版权所有 未经许可 请勿转载