向非技术人员解释AdaBoost算法

问题描述 投票:11回答:3

我一直在尝试理解AdaBoost algorithm,但没有取得太大的成功。我正在努力以Viola Jones paper on Face Detection为例进行理解。

您能用外行的术语解释AdaBoost并提供使用它的好例子吗?

algorithm language-agnostic adaboost
3个回答
9
投票

AdaBoost使用许多训练样本图像(例如面部)来选择许多良好的“特征” /“分类器”。对于面部识别,分类器通常只是具有一定平均颜色值和相对大小的像素矩形。 AdaBoost将研究多个分类器,并根据样本图像找出哪个分类器是面部的最佳预测器。选择最佳分类器后,它将继续寻找另一个分类器,直到达到某个阈值为止,并且那些分类器组合在一起将提供最终结果。

您可能不希望与非技术人员分享这部分内容:),但还是很有趣。有几种数学技巧可以使AdaBoost快速进行人脸识别,例如能够将图像的所有颜色值相加并将其存储在二维数组中,从而使任何位置的值都等于所有像素的总和。并在该位置的左侧通过从右下角的值减去左上角的值并除以矩形中的像素数,此数组可用于非常快速地计算图像中任何矩形的平均颜色值。使用此技巧,您可以快速扫描整个图像,以查找与特定颜色匹配或接近的不同相对大小的矩形。

希望这会有所帮助。


12
投票

[Adaboost是一种算法,它将性能较差的分类器(又称弱学习者)组合到性能更高的较大分类器中。

如何运作?以非常简化的方式:

  1. 训练弱势学习者。
  2. 将其添加到到目前为止训练有素的弱学习者的集合中(具有最佳权重)
  3. 增加仍未分类的样本的重要性。
  4. 转到1。

幕后有一个广泛而详细的理论,但直觉是:让每个“哑”分类器专注于以前的错误无法解决的错误。

AdaBoost是机器学习社区中最常用的算法之一。特别是,当您知道如何创建简单的分类器(可能有许多不同的分类器,使用不同的功能)并且希望以最佳方式组合它们时,它很有用。

在中提琴和琼斯中,每种类型的弱学习者都与您可以拥有的4或5种不同的Haar功能之一相关联。


3
投票

这是可以理解的。您可以在网上复述的Viola-Jones和Freund-Shapire论文中找到大多数论文,这些论文是AdaBoost应用于OpenCV中人脸识别的基础。它们主要由来自几个数学领域的困难公式和算法组成。这可以为您提供帮助(足够简短)-

1-它用于对象,并且主要用于面部检测-识别。最受欢迎,最出色的C ++库最初是Intel的OpenCV。我以OpenCV中的人脸检测为例。

2-首先,在样本具有面孔(称为正)和无面孔(负)的图像样本上训练使用样本矩形(“特征”)的提升分类器级联

从某些Google论文中:

“·提升是指通过结合粗略和中等不准确的经验法则来生成非常准确的分类器的通用且可证明有效的方法。

·根据观察,发现许多大致的经验法则比找到单个高度准确的分类器要容易得多。

·首先,我们定义一个算法来找到经验法则,我们称之为弱学习者。

·增强算法反复调用此弱学习器,每次向其提供不同的分布于训练数据上的分布(在AdaBoost中)。

·每个调用都会生成一个弱分类器,我们必须将所有这些合并到一个分类器中,希望该分类器比任何一个规则都更加准确。”

在此过程中,将扫描图像以确定与每个面孔的特定部位相对应的独特区域。应用了基于复杂计算假设的算法(一旦掌握了主要思想,就不难理解)。

这可能需要一个星期,输出是一个XML文件,其中包含有关如何快速检测人脸(例如,在任何图片的正面位置(在其他情况下,可以是任何物体)的学习信息)。

3-之后,您将此文件提供给OpenCV人脸检测程序,该程序运行非常快,阳性率高达99%(取决于条件)。如此处所述,使用称为“整体图像”的技术可以大大提高扫描速度。

最后,这些都是有用的资源-Object Detection in OpenCVGeneric Object Detection using AdaBoost,来自加利福尼亚大学,2008年。

© www.soinside.com 2019 - 2024. All rights reserved.