许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  在线会议中人脸面部轮廓图像提取(三):Dlib库人脸面部轮廓特征提取

在线会议中人脸面部轮廓图像提取(三):Dlib库人脸面部轮廓特征提取

阅读数 7
点赞 0
article_banner

前言:所使用图片并无盈利等目的,如有侵犯他人肖像权请联系删除。

当当当当,第三期来廖!接上一期在线会议中人脸面部轮廓图像提取(二)——HOG人脸面部轮廓图像特征提取,介绍完 HOG  特征提取我们继续学习Dlib库提取特征叭!

> Dlib是一个现代化的C++工具箱,其中包含用于在C++中创建复杂软件以解决实际问题的机器学习算法和工具。它广泛应用于工业界和学术界,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。Dlib的开源许可证允许在任何应用程序中免费使用它。

1、人脸轮廓图像提取原理

在我们检测到人脸区域之后,接下来要研究的问题是获取到不同的脸部的特征,以区分不同人脸,即人脸特征检测(facial feature detection)。它也被称为人脸特征点检测( facial landmark detection )。

   人脸特征点通常会标识出脸部的下列数个区域:

  • 右眼眉毛(Right eyebrow)
  • 左眼眉毛(Left eyebrow)
  • 右眼(Right eye)
  • 左眼(Left eye)
  • 嘴巴(Mouth)
  • 鼻子(Nose)
  • 下巴(Jaw)

检测人脸特征点,分为如下两步:

  1. 第一步:定位图像中人脸区域;
  2. 这一步我们可以使用之前学到过的 OpenCV中Harr检测器 或者 Dlib中HOG加SVM的检测器。

第一步:在人脸区域内检测出人脸关键特征;

   对于第二步,我们使用Dlib中的特征点检测。

   Dlib中使用的人脸特征检测的原理来自2014年,由Vahid KazemiJosephine Sullivan在论文 《One Millisecond Face Alignment with an Ensemble of Regression Trees》中提出的人脸特征点评估的方法。

   论文中方法的主要思想是:

使用级联回归树(ensemble of regression trees, ERT),即使用级联回归因子,基于梯度提高学习的回归树方法。该方法首先需要使用一系列标定好的人脸图片作为训练集,然后会生成一个模型。使机器学习模型能够找出任何脸上的这些特征点。

简要的分为以下三步:

  1. 定义一张脸上的68个具体的特征点(landmarks);
  2. 标记面部特征点,获得带标记的训练数据。需要手动标记图像上的面部特征点,标签指定围绕每个面部结构的区域;
  3. 给定训练数据,训练回归树的集合,直接从像素强度本身估计面部界标位置,得到模型。

2、模型算法实现

Dlib提供两种 人脸检测 模型:

  • shape_predictor_5_face_landmarks.dat:

        检测5个人脸特征关键点,即双眼的眼头及眼尾以及鼻头这五个位置。因为只检测五个点,所以执行速度很快。如图:
    在这里插入图片描述

        5点人脸特征图
  • shape_predictor_68_face_landmarks.dat:

        检测68个人脸特征关键点。如图:
    在这里插入图片描述

68点人脸特征图

3、具体实践步骤

  1. 利用Dlib的正向人脸检测器 get_frontal_face_detector(),进行人脸检测,提取人脸外部矩形框:
detector = dlib.get_frontal_face_detector()  
faces = detector(image, 1)  

返回的faces为识别出的脸部数组。

  1. 利用训练好的人脸68点特征检测器,进行人脸面部轮廓特征提取:
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")  
shape = predictor(image, face)  
  1. 源码示例与解析:
import cv2
import dlib
# 读取图片
img_path = "C.jpg"
img = cv2.imread(img_path)
n = 2
img = cv2.resize(img, (0, 0), fx=1/n, fy=1/n, interpolation=cv2.INTER_NEAREST)
# 转换为灰阶图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 正向人脸检测器将图像
detector = dlib.get_frontal_face_detector()
# 使用训练好的68个特征点模型
predictor_path = "shape_predictor_68_face_landmarks.dat"
predictor = dlib.shape_predictor(predictor_path)
# 使用检测器来检测图像中的人脸
faces = detector(gray, 1)
# 打印结果
print("人脸数: ", len(faces))
for i, face in enumerate(faces):
	print("第", i+1, "个人脸的矩形框坐标:\n","left:", face.left(), "right:", face.right(), "top:", face.top(), "bottom:", face.bottom())
	# 获取人脸特征点
	shape = predictor(img, face)
	print("第", i+
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空