ADABOOST做人脸检测程序与原理

2024-06-13 10:08

本文主要是介绍ADABOOST做人脸检测程序与原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ADABOOST做人脸识别原理+程序详解

**注意:**adaboost算法的目的是做一个目标检测,举个例子在人脸识别中,adaboost只能检测出一张图片中的人脸,并不能区分这些人脸分别是谁。


*1. 算法的整体流程*
人脸检测(face detection)是指对于任意一幅给定的图像,采用一定的策略对其进行搜索以确定其中是否有人脸,如果有人脸则返回人脸的位置、大小和姿态。

这是matlab中训练一个级联分类的过程,整个流程和adaboost的流程很像。
算法的整体流程如下图所示:

*2. 算法详解*
基于adaboost的人脸检测算法来说,训练分类器的部分,主要分成以下四步:
1. step1 样本初始化
给定一系列的训练样本(x1,y1), (x2,y2), ···,(xn,yn) 其中, yi=1表示样本为人脸,yi=0表示样本为非人脸。设人脸正样本的数量为n1,非人脸负样本的数量为n2

2. step2 权重初始化
**目的:**adaboost采用多个弱分类组成的强分类器,这里的权重初始化,是对所有的样本进行的初始化,当第i个弱分类器对第j个样本分类错误时,则增大第j个样本在后续分类器中的权重。通俗的讲,就像我们在学习的时候要准备一个错题本,注意前面的错题一样。
对所有样本的权重初始化为:

3. step3 最佳弱分类器选择
设共需从原有的N个弱分类器中选择T个弱分类器,用t来进行当前弱分类器的计数,则t=1,2,···,T;用以下步骤训练第t轮的最佳弱分类器:
>
- 权重归一化:

  • 弱分类器训练:
    对于每个特征E(就是应用各种不同尺度的Harr特征),训练一个对应的弱分类器h(x,E,p,theta),该分类器对所有样本进行分类时对应于各样本的加权错误率为:

  • 最佳弱分类器选取:
    上一步计算的是一个特征对所有样本的分类错误率,这里就计算所有的特征(选用20x20的人脸图像是,共有78460个特征)
    伪代码:
    for t = 1:T
    for j = 1:num_of_feature
    计算每个feature对n个样本的加权错误率,选取加权错误率最小的feature作为t个弱分类器;
    最小错误率为:

  • 权重更新:
    目的:为了提高前面错误分类样本的权重
    计算更新因子:


    权重更新:

    其中:
    当样本xi被正确分类时, = 0;
    当样本xi被错误分类时, = 1。

4. step4 合成强分类器
经过T轮训练之后,获得了T个最佳弱分类器,其中,每个弱分类器有对应的特征、阈值和方向指示符,最后,通过对T个弱分类器进行线性加权合成强分类器:

其中:

而其中的theta为通过率阈值,一般取为0.5*at。

参考:

  1. http://private.codecogs.com/latex/eqneditor.php
  2. https://blog.csdn.net/watkinsong/article/details/7631241

这篇关于ADABOOST做人脸检测程序与原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056997

相关文章

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应