机器学习案例:人脸识别和人脸检测
01
Python Dlib框架及人脸识别模型库
1
Dlib框架
Dlib是基于C++的一个跨平台通用的框架。Dlib内容涵盖机器学习、图像处理、数值算法、数据压缩等。Dlib提供了Python的接口,在Python中安装Dlib时要先安装cmake模块和scikit-image模块,由于在安装dlib模块过程中需要对C++代码进行编译,所以安装dlib模块前要先安装好Visual Studio 2015以后版本。
使用pip模块管理工具下载dlib框架的相关模块。
1)下载cmake模块
pip install cmake
2)下载scikit-image模块
pip install scikit-image
3)下载dlib模块
pip install dlib
2
人脸识别模型库
在本案例中,使用下面两个已经训练好的人脸识别模型进行项目设计。
1)人脸关键点检测模型
shape_predictor_68_face_landmarks.dat是通过机器学习已经训练好的人脸关键点检测器,使用这个模型,可以很方便地检测人的脸部,并计算出人脸的特征关键点。
2)人脸识别模型
dlib_face_recognition_resnet_model_v1.dat是已经训练好的ResNet(Residual Neural Network)人脸识别模型。ResNet是一种经机器学习训练出152层的神经网络,称为残差网络,它可以加速神经网络的训练,模型的准确率也很高。
人脸检测模型和人脸识别模型的下载地址为http://dlib.net/files/。
02
人脸检测
1
人脸脸部检测
下面介绍应用人脸检测模型进行人脸检测的程序设计方法。      
【例11.4】 找出图像中的正向人脸,并用方框标识出来。
应用已经训练好的人脸检测模型,进行人脸检测,构建人脸外部矩形框,其核心语句为:
detector
 = dlib.get_frontal_face_detector()

shape
 = predictor(img,
1
)
程序设计步骤如图11.5所示。
■ 图11.5  人脸检测主要步骤
程序代码如下:

import
 dlib

from
 skimage
import
 io


# 使用 Dlib 的正面人脸检测器 frontal_face_detector
detector = dlib.get_frontal_face_detector()

# Dlib 的人脸检测模型
predictor = dlib.shape_predictor(
"shape_predictor_68_face_landmarks.dat"
)

# 图片所在路径
img = io.imread(
"x3.jpg"
)

# 生成 Dlib 的图像窗口
win = dlib.image_window()

win.set_image(img)

# 使用 detector 检测器来检测图像中的人脸
faces = detector(img,
1
)

print(
"人脸数:"
, len(faces))

for
 i, d
in
 enumerate(faces):

    print(
"第"
, i+
1
,
"个人脸的矩形框坐标:"
,

"left:"
, d.left(),

"right:"
, d.right(),

"top:"
, d.top(),

"bottom:"
, d.bottom())

# 绘制人脸脸部矩形框
win.add_overlay(faces)

# 保持图像
dlib.hit_enter_to_continue()
运行程序,可以输出每个人脸的脸部轮廓矩形框的坐标值,并在图片上绘制方框图形。检测单人及多人正面脸部的结果如图11.6所示。
■ 图11.6  检测正面脸部
shape_predictor_68_face_landmarks.dat是一个检测人脸68个关键点的检测器,应用这个模型,可以很方便地计算出人脸的特征关键点,并绘制出脸部轮廓。
提取脸部轮廓的核心语句为:
shape
 = predictor(img, faces[i])
# 计算脸部轮廓关键点的位置
  win.add_overlay(shape)
# 绘制脸部轮廓线
03
视频讲解
04
参考图书
Python程序设计案例教程——从入门到机器学习(第2版)(微课版)
ISBN:978-7-302-56769-1
作者:张思民
定价:49.8元
内容简介
本书是一本系统介绍Python应用程序设计方法的书籍。全书共分11章,主要内容包括Python语言快速入门、Python语法速览、类与模块、图形用户界面设计、Python的图像处理、文件与数据库编程(数据存储)、多线程与异常处理、网络程序设计、网络爬虫实战入门、数据分析与数据可视化、Python机器学习实战入门。本书每章都配有相应的习题和视频教学,以帮助读者学习和理解。
本书内容由浅入深,循序渐进,讲解详细,示例丰富,每个知识点都配备了大量实例和图示加以说明,并用简短的典型示例进行详细分析和解释;每章均精心选编了经典案例,对读者学习会有很大帮助,可以让读者轻松上手。
05
精彩推荐
继续阅读
阅读原文