Dlib 库 - 人脸检测及人脸关键点检测

本文介绍了Dlib库在人脸检测和人脸关键点检测方面的应用。包括基于HOG特征和线性分类器的传统人脸检测方法,以及使用预训练CNN模型进行更精确但资源消耗更大的人脸检测。在人脸关键点检测部分,详细阐述了如何结合HOG人脸框和CNN进行68个关键点的定位,并提供了预训练模型和数据集的链接。此外,还提及了根据CVPR 2014论文中方法训练人脸关键点检测CNN模型的过程。
摘要由CSDN通过智能技术生成

原文:Dlib 库 - 人脸检测及人脸关键点检测 - AIUAI

Dlib 官网 - Dlib C++ Library

Dlib - Github

Dlib 是一个十分优秀好用的机器学习库,其源码均由 C++ 实现,并提供了 Python 接口,可广泛适用于很多场景.

这里主要记录 Dlib 中关于人脸检测和人脸关键点等技术的 python 应用.

pip 安装:

sudo apt-get install cmake
sudo pip install dlib

Github 源码安装.

1. 人脸检测 Face Detector

人脸检测,是检测出图片中包含的正面人脸.

1.1. 基于 HOG 特征和线性分类器的人脸检测

下面是采用经典的 HOG(Histogram of Oriented Gradients) 特征 结合线性分类器、图像金字塔(image pyramid) 及滑窗检测机制(sliding window detection scheme)实现的人脸检测器.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import dlib

detector = dlib.get_frontal_face_detector()

def face_detect(imgfile):
    win = dlib.image_window()

    print("Processing file: {}".format(imgfile))
    img = dlib.load_rgb_image(imgfile)

    # 人脸检测
    dets = detector(img, 1)

    # len(dets) 即为检测到的人脸个数
    print("Number of faces detected: {}".format(len(dets)))

    # 遍历所有检测到人脸的坐标
    # left:人脸左边距离图片左边界的距离
    # right:人脸右边距离图片左边界的距离
    # top:人脸上边距离图片上边界的距离
    # bottom:人脸下边距离图片上边界的距离
    for i, d in enumerate(dets):
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
            i, d.left(), d.top(), d.right(), d.bottom()))

    win.clear_overlay()
    win.set_image(img)
    win.add_overlay(dets)
    dlib.hit_enter_to_continue()


def face_detect_with_scores(imgfile):
    win = dlib.image_window()

    # 如果要进一步得到更全面的检测信息,如每个检测结果的分数(score).
    # score 值越大,则检测的可信度越高.
    img = dlib.load_rgb_image(imgfile)

    # 第三个参数 -1 用于设置调整检测阈值;
    # 如果该参数值为负数,则返回更多的结果;
    # 如果该参数值为正数,则返回较少的结果.
    dets, scores, idx = detector.run(img, 1, -1)
    for i, d in enumerate(dets):
        print("Detection {}, score: {}, face_type:{}".format(
            d, scores[i], idx[i]))

    win.clear_overlay()
    win.set_image
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值