Haar

简介: 【6月更文挑战第11天】

haarcascade_frontalface_alt.xml 是 OpenCV 提供的预训练 Haar 特征分类器模型文件,用于人脸检测。它基于 Haar 特征级联分类器算法训练而成,能够在图像或视频中检测到人脸。

Haar 特征级联分类器

Haar 特征级联分类器是一种基于机器学习的人脸检测方法,最早由 Paul Viola 和 Michael Jones 在 2001 年提出。这个方法利用大量的正样本(包含人脸的图像)和负样本(不包含人脸的图像)进行训练,生成一个能够快速检测人脸的分类器。

haarcascade_frontalface_alt.xml 文件的作用

  1. 预训练模型

    • 该文件包含一个经过训练的分类器模型,能够检测图像中的人脸。这使得开发者无需自己训练模型即可使用人脸检测功能。
  2. 人脸检测

    • 通过加载这个 XML 文件,OpenCV 可以使用其中的特征和级联分类器进行人脸检测。

数据的由来

训练这种级联分类器模型需要大量的正样本和负样本:

  1. 正样本

    • 包含人脸的图像,用于告诉分类器什么是人脸。通常,这些图像会经过各种变换(例如,旋转、缩放)以增加样本的多样性。
  2. 负样本

    • 不包含人脸的图像,用于告诉分类器什么不是人脸。这些图像来自各种背景和场景,以确保分类器能够区分人脸和非人脸区域。

训练过程

训练过程主要包括以下步骤:

  1. Haar 特征提取

    • Haar 特征是一组简单的矩形特征,计算图像中不同区域的像素差异。常见的 Haar 特征包括边缘特征、线特征和四角特征。
  2. 积分图像

    • 为了加速特征计算,使用积分图像。积分图像在常数时间内计算任何矩形区域的像素和,从而大大加快特征计算速度。
  3. AdaBoost 算法

    • 使用 AdaBoost 算法选择最能区分人脸和非人脸的特征,并组合成一个强分类器。AdaBoost 通过多次迭代,从特征集中选择一组弱分类器,并赋予它们不同的权重。
  4. 级联分类器

    • 训练得到的分类器组成一个级联结构,分为多个阶段。每个阶段包含若干个弱分类器。输入图像从第一个阶段开始进行检测,如果某个阶段判断为非人脸,则立即丢弃该区域,减少计算量。如果通过所有阶段的检测,则认为该区域包含人脸。

示例代码

以下是一个使用 haarcascade_frontalface_alt.xml 进行人脸检测的示例代码:

import cv2

# 加载图像
image = cv2.imread('path_to_image.jpg')

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 加载预训练的 Haar 特征分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_alt.xml')

# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=4, flags=cv2.CASCADE_SCALE_IMAGE, minSize=(30, 30))

# 绘制矩形框
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

# 显示结果
cv2.imshow('Detected Faces', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
目录
相关文章
QGS
(麒麟V10-arm)编译安装php-7.4及部分依赖
记(麒麟V10-arm)编译安装php-7.4及部分依赖
QGS
2061 0
(麒麟V10-arm)编译安装php-7.4及部分依赖
|
机器学习/深度学习 计算机视觉
深度学习常见的损失函数
深度学习常见的损失函数
956 1
深度学习常见的损失函数
|
数据安全/隐私保护
【鸿蒙软件开发】文本输入(TextInput/TextArea)
【鸿蒙软件开发】文本输入(TextInput/TextArea)
1709 0
|
8月前
|
机器学习/深度学习 算法 数据可视化
从另一个视角看Transformer:注意力机制就是可微分的k-NN算法
注意力机制可理解为一种“软k-NN”:查询向量通过缩放点积计算与各键的相似度,softmax归一化为权重,对值向量加权平均。1/√d缩放防止高维饱和,掩码控制信息流动(如因果、填充)。不同相似度函数(点积、余弦、RBF)对应不同归纳偏置,多头则在多个子空间并行该过程。
617 7
|
XML 机器学习/深度学习 算法
haarcascade_frontalface_alt
【6月更文挑战第18天】
844 4
|
编解码 算法 计算机视觉
Adaboost 人脸检测原理剖析
【1月更文挑战第6天】
Adaboost 人脸检测原理剖析
|
安全 应用服务中间件 Go
如何在 HTML 中添加 CSP 策略
内容安全策略(CSP)是一种安全机制,用于防止跨站脚本攻击等安全问题。本文将介绍如何在 HTML 中添加 CSP 策略,以提高网站的安全性。
|
IDE Java Maven
【Java异常】Error:(14,35) java:程序包eu.bitwalker.useragentutils不存在 的解决方案
【Java异常】Error:(14,35) java:程序包eu.bitwalker.useragentutils不存在 的解决方案
1259 0
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
629 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
人工智能 数据可视化 算法