Adaboost 人脸检测原理剖析

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

Adaboost 人脸检测原理剖析

Haar-like 特征可以分为边缘特征、中心特征、对角线特征以及线性特征。

(a)即为边缘特征,其用于检测目标图像在边缘上的变化信息,如人脸边缘与背景的灰度变化,人头发与人脸额头之间的灰度变化等;

(b)即为线性特征,其用于检测目标图像在水平以及垂直方向上的变化信息,如人的鼻梁两侧肤色要比鼻梁上的颜色深等;
image.png

(c)即为中心特征和对角线特征,其用于检测对角线上以及矩形模板外围和中心之间的变化信息,如人的眼睛比人脸的其他部分颜色要深,嘴巴要比其周围肤色颜色要深等。并且在这些水平垂直的基础上,又添加了 45°方向的矩形模板。通过采用这三种不同形式的矩形模板来表示人脸区域的特征,达到区分人脸部分与背景部分并将两者分割的目的。

image.png

在OpenCV接口中,实现了Haar/LBP/HOG等多种特征,以Haar特征为例介绍,Haar特征最先由Paul Viola等人提出,后经过Rainer Lienhart等扩展引入45°倾斜特征,成为现在OpenCV所使用的的样子共计14种Haar特征,包括5种Basic特征、3种Core特征和6种Titled(即45°旋转)特征。

人脸检测分类器=haar-like (特征)+CART(弱)+ Adaboost(强) + Cascade(级联)

Haar特征可以在检测窗口中由放大+平移产生一系列子特征,但是白:黑区域面积比始终保持不变。
image.png

以x3特征为例,在放大+平移过程中白:黑:白面积比始终是1:1:1。
首先在红框所示的检测窗口中生成大小为3个像素的最小x3特征;之后分别沿着x和y平移产生了在检测窗口中不同位置的大量最小3像素x3特征;然后把最小x3特征分别沿着x和y放大,再平移,又产生了一系列大一点x3特征;然后继续放大+平移,重复此过程,直到放大后的x3和检测窗口一样大。这样x3就产生了完整的x3系列特征。

将矩形作为人脸检测的特征向量,称为矩形特征。本算法选取了最简单的5个矩形特征模板进行训练,以得到一套用于人脸检测的最适合的矩形特征,事实证明,虽然这种特征选取方法的训练速度时间较长,但是检测效率很高。
矩形特征在人脸图像上的特征匹配:
上行是 24×24 像素窗口内选出的矩形特征,
下行是 24×24 像素分辨率的人脸图像与上行选出的矩形特征的匹配!

矩形特征对一些简单的图形结构,比如边缘、线段,比较敏感,但是其只能描述特定走向(水平、垂直、对角)的结构,因此比较粗略。如图,脸部一些 特征能够由矩形特征简单地描绘,例如,通常,眼睛要比脸颊颜色更深;鼻梁两 侧要比鼻梁颜色要深;嘴巴要比周围颜色更深。

image.png

相关文章
|
编解码 算法
Adaboost 人脸检测原理剖析2
【1月更文挑战第7天】
|
2月前
|
自然语言处理 监控 搜索推荐
2026年3月电商行业有哪些agent应用
人工智能驱动电商智能化升级:瓴羊系列Agent产品(Quick Service、智能小Q、Quick Audience、Dataphin、Agent One)覆盖客服、数据分析、营销、数据治理与决策执行全链路,实现从“人找功能”到“功能找人”的范式变革。(239字)
|
6月前
|
机器学习/深度学习 数据采集 前端开发
Python 开发技术栈梳理:从数据库、爬虫到 Django 与机器学习
很多Python开发者学习碎片化,缺乏系统性。本文整理了一套从基础语法到全栈开发的完整学习资源,涵盖Python核心、数据库、前端、爬虫、Django框架、机器学习与算法,助你构建完整技术体系,适合进阶提升。
517 11
|
PyTorch 算法框架/工具
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
1299 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
|
人工智能 自然语言处理 安全
关于大模型越狱的多种方式,有这些防御手段
【8月更文挑战第22天】在AI领域,大语言模型与视觉-语言模型显著提升了自然语言处理及视觉任务能力,但同时也引发了严重的安全与伦理问题,特别是大模型越狱现象。越狱可通过梯度、进化、演示、规则或多智能体等方式实现,利用模型弱点操纵其输出。针对此威胁,研究者提出包括提示检测、扰动、演示、生成干预及响应评估等多种防御策略,旨在增强模型安全性与可靠性。然而,攻击手段的多样性和有效性评估构成了主要挑战。[论文](https://arxiv.org/pdf/2407.01599)详细探讨了这些问题。
894 17
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
机器学习/深度学习 XML 算法
Haar
【6月更文挑战第11天】
286 3
|
Java Shell Python
【经验分享】Typora 设置代码块的默认语言并设置为开机启动
在Typora中设置代码块默认语言为Java(或其他语言)的自动化方法。通过下载AHK(AutoHotkey)软件,创建一个.ahk脚本,设定`Ctrl+Shift+K`快捷键触发代码块并输入指定语言。将脚本改名为.ahk扩展名并运行,确保图标出现在任务栏。要实现开机启动,使用Win+R打开"运行",输入shell:startup并粘贴.ahk文件到启动文件夹。
1093 2
|
存储 DataX Python
BackTrader 中文文档(五)(1)
BackTrader 中文文档(五)
571 0
|
应用服务中间件 nginx
【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级
 1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx的进程方式: [root@localhost nginx]# ps –ef | grep nginx [root@localhost nginx]# ps -ef | grep n
7622 0

热门文章

最新文章