人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记

这篇具有很好参考价值的文章主要介绍了人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3、我们将看一些将面部标记检测应用于图像的结果。

什么是面部标记?

===================================================================

人脸标记点检测是形状预测问题的一个子集。给定一个输入图像(通常是一个指定感兴趣对象的ROI),形状预测器尝试沿形状定位感兴趣的关键点。

在人脸标记的背景下,我们的目标是使用形状预测方法检测人脸上的重要人脸结构。

因此,检测面部标记是一个两步过程:

​ 步骤1:在图像中定位人脸。

​ 步骤2:检测人脸ROI上的关键面部结构。

人脸检测(步骤1)可以通过多种方式实现。

我们可以使用OpenCV内置的Haar级联。

我们可以将预先训练好的HOG+线性SVM对象检测器专门用于人脸检测任务。

或者我们甚至可以使用基于深度学习的算法进行人脸定位。

无论哪种情况,用于检测图像中人脸的实际算法都无关紧要。相反,重要的是,通过某种方法,我们获得了面边界框(即,图像中面的(x,y)-坐标)。

给定面部区域,我们可以应用步骤2:检测面部区域中的关键面部结构。

有多种面部标记检测器,但所有方法基本上都试图定位和标记以下面部区域:

  • 右眉

  • 左眉

  • 右眼

  • 左眼

dlib库中包含的面部标记检测器是Kazemi和Sullivan(2014)提出的一系列回归树的一毫秒面部校准的实现。

此方法首先使用:

  • 图像上标记的面部标记的训练集。这些图像被手动标记,指定每个面部结构周围区域的特定(x,y)坐标。

  • 先验,更具体地说,是输入像素对之间距离的概率。

给定该训练数据,训练回归树集合,以直接从像素强度本身估计面部标记位置(即,不进行“特征提取”)。

最终的结果是一个面部标记检测器,可用于实时检测具有高质量预测的面部标记。

dlib的面部标记检测器

=======================================================================

dlib库中预先训练的面部标记检测器用于估计映射到面部结构的68(x,y)坐标的位置。

68个坐标的索引可在下图中显示:

人脸标记任务,2024年程序员学习,opencv,python,人工智能

这些注释是68点iBUG 300-W数据集的一部分,dlib面部标记预测器是在该数据集上训练的。

值得注意的是,还有其他风格的面部标记检测器,包括可以在HELEN数据集上训练的194点模型。

无论使用哪一个数据集,都可以利用相同的dlib框架在输入训练数据上训练形状预测器-如果您想训练面部标记检测器或自定义形状预测器,这非常有用。

在这篇博文的剩余部分,我将演示如何在图像中检测这些面部标记。

使用dlib、OpenCV和Python检测面部标记

=====================================================================================

这篇博文使用到了imutils库face_utils.py中的两个函数。

第一个实用函数是rect_to_bb,是“矩形到边框”的缩写:

def rect_to_bb(rect):

#获取dlib预测的边界并将其转换

#按照我们通常使用的格式(x,y,w,h)

#使用OpenCV

x = rect.left()

y = rect.top()

w = rect.right() - x

h = rect.bottom() - y

返回一个元组 (x, y, w, h)

return (x, y, w, h)

此函数接受一个参数rect,该参数假定为dlib检测器(即面部检测器)生成的边框矩形。

rect对象包括检测的(x,y)-坐标。

然而,在OpenCV中,我们通常认为边界框是“(x,y,width,height)”,因此为了方便起见,rect_to_bb函数将这个rect对象转换为4元组坐标。

第二,shape_to_np函数:

def shape_to_np(shape, dtype=“int”):

#初始化(x,y)-坐标列表

coords = np.zeros((68, 2), dtype=dtype)

#在68个面部标记上循环并转换它们

#到(x,y)-坐标的2元组

for i in range(0, 68):

coords[i] = (shape.part(i).x, shape.part(i).y)

#返回(x,y)坐标的列表

return coords

dlib面部标记检测器将返回一个包含面部标记区域68(x,y)坐标的形状对象。

使用shape_to_np函数,我们可以将这个对象转换成一个NumPy数组。

有了这两个辅助函数,我们现在就可以检测图像中的面部标记了。

图像


打开一个新文件,将其命名为facial_landmarks.py,然后插入以下代码:

import the necessary packages

from imutils import face_utils

import numpy as np

import argparse

import imutils

import dlib

import cv2

#构造参数解析器并解析参数

ap = argparse.ArgumentParser()

ap.add_argument(“-p”, “–shape-predictor”, required=True,

help=“path to facial landmark predictor”)

ap.add_argument(“-i”, “–image”, required=True,

help=“path to input image”)

args = vars(ap.parse_args())

导入所需的Python包。

将使用imutils的face_utils子模块访问上面详述的助手函数。

然后将导入dlib。

解析我们的命令行参数:

–shape-predictor:这是通往dlib预先训练的面部标记检测器的路径。你可以在这里下载检测器模型,也可以使用本文的“下载”部分来获取代码+示例图像+预先训练过的检测器。

–image:我们要检测面部标记的输入图像的路径。

既然我们的导入和命令行参数已经处理完毕,让我们初始化dlib的面部检测器和面部标记预测器:

初始化dlib的人脸检测器(基于HOG)然后创建

面部标记预测器

detector = dlib.get_frontal_face_detector()

predictor = dlib.shape_predictor(args[“shape_predictor”])

初始化dlib的预训练人脸检测器,该检测器基于对用于对象检测的定向梯度标准直方图+线性SVM方法的修改。

然后使用提供的shape_predictor的路径加载面部标记预测器。

但是,在我们能够实际检测面部标记点之前,我们首先需要检测输入图像中的面部:

加载输入图像,调整大小,并将其转换为灰度

image = cv2.imread(args[“image”])

image = imutils.resize(image, width=500)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

在灰度图像中检测人脸

rects = detector(gray, 1)

通过OpenCV从磁盘加载我们的输入图像,然后通过调整图像大小使其具有500像素的宽度并将其转换为灰度来预处理图像。

处理检测图像中面的边界框。

探测器的第一个参数是我们的灰度图像(尽管这种方法也可以用于彩色图像)。

第二个参数是在应用检测器之前放大图像时要应用的图像金字塔层的数量(这相当于在图像上计算cv2.N次)。

在人脸检测之前提高输入图像分辨率的好处是,它可能允许我们检测图像中的更多人脸-缺点是输入图像越大,检测过程的计算成本就越高。

给定图像中人脸的(x,y)-坐标,我们现在可以对每个人脸区域应用人脸标记检测:

循环面部检测

for (i, rect) in enumerate(rects):

确定面部区域的面部标志,然后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
人脸标记任务,2024年程序员学习,opencv,python,人工智能
人脸标记任务,2024年程序员学习,opencv,python,人工智能
人脸标记任务,2024年程序员学习,opencv,python,人工智能
人脸标记任务,2024年程序员学习,opencv,python,人工智能
人脸标记任务,2024年程序员学习,opencv,python,人工智能
人脸标记任务,2024年程序员学习,opencv,python,人工智能

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
人脸标记任务,2024年程序员学习,opencv,python,人工智能

0.png)
人脸标记任务,2024年程序员学习,opencv,python,人工智能
人脸标记任务,2024年程序员学习,opencv,python,人工智能

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
[外链图片转存中…(img-13Ozzt1z-1711821452906)]文章来源地址https://www.toymoban.com/news/detail-849470.html

到了这里,关于人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过Dlib和opencv实现人脸识别和活体检测

    目录 一、准备工作 1.1 需要的库 1.2准备需要的文件和图片 1.3 测试程序 二、人脸识别开发 2.1 录入自己的人脸信息 2.2 提取录入的人脸特征 2.3 实时捕获人脸并进行识别 三、活体检测 3.1 眨眼检测 3.2 张嘴检测 3.3 摇头检测 下面这些是我突发奇想想做来玩玩,就在github上下载了

    2023年04月08日
    浏览(49)
  • OpenCV笔记整理【人脸检测之Harr级联分类器&&dlib库】

    1. 级联分类器: OpenCV提供的级联分类器有Harr、HOG、LBP这3种,这些分类器以XML文件保存,这里主要演示Harr检测人脸(OpenCV提供的分类器不仅限于检测人脸,还包括下表特征检测,当然OpenCV还支持训练自己的级联分类器,这里不做说明。。。)。 2. 函数介绍: object = cv2.Casca

    2024年01月22日
    浏览(46)
  • 计算机视觉:使用dlib实现人脸检测

    Dlib是一个广泛使用的开源库,在计算机视觉和机器学习领域具有重要影响。它是由Davis King在2002年开发,主要用C++语言编写,但也提供了Python接口。Dlib结合了高效的算法和易用性,使其成为学术界和工业界的热门选择。 多样的机器学习算法:Dlib包含丰富的机器学习算法,如

    2024年04月28日
    浏览(49)
  • 基于Python+OpenCV+dlib+Tensorflow深度学习的人脸表情识别系统

    欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。   人脸表情识别是一种重要的计算机视觉任务,它涉及到对人脸图像中的表情进行分类和理解。在这个系统中,我们将使用Python、OpenCV、dlib和Tensorflow来实现深度学习模型,以识别人脸表情。

    2024年02月01日
    浏览(49)
  • 基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)

    近几年应用opencv机器学习方法识别人脸的技术成为了热潮,本人根据当今的识别技术与方法,历时四个多月开发出一套基于dlib机器学习库的识别项目。希望大家能一起交流学习。 1、项目功能介绍 Tkinter 人脸录入界面, 支持录入时设置 (中文) 姓名; 调用摄像头进行人脸识别

    2024年02月08日
    浏览(49)
  • 毕业设计:python人脸识别系统 实时检测 深度学习 Dlib库 大数据 毕业设计(源码)✅

    🍅 大家好,今天给大家分享一个Python项目,感兴趣的可以先收藏起来,点赞、关注不迷路! 🍅 大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。 技术栈: Python语言、pyqt5图形界面、opencv、ResNet深度卷积神经网络、Dlib库 系统

    2024年02月20日
    浏览(91)
  • 计算机毕业设计:基于python人脸识别考勤系统 OpenCV+Dlib(包含文档+源码+部署教程)

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库 方法实现、实现步骤 1、实例化人脸检测

    2024年02月04日
    浏览(67)
  • 使用 OpenCV 进行面部和眼睛检测

    OpenCV是构建计算机视觉应用程序的强大工具。计算机视觉中最常见的任务之一是人脸检测,它涉及识别图像或视频中人脸的存在、位置和面部特征。 在本文中,我们将学习如何使用 Haar 级联分类器检测图像中的人脸。 先决条件 在开始之前,你需要在计算机上安装 OpenCV。 参

    2024年02月09日
    浏览(67)
  • python人脸识别考勤系统 dlib+OpenCV和Pyqt5、数据库sqlite 人脸识别系统 计算机 毕业设计 源码

    Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库 本系统使用dlib作为人脸识别工具,dlib提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并映射到

    2024年02月08日
    浏览(56)
  • 人脸识别系统OpenCV+dlib+python(含数据库)Pyqt5界面设计 项目源码 毕业设计

    Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库      本系统使用dlib作为人脸识别工具,dlib提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并

    2024年02月05日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包