gpt4 book ai didi

c - Adaboost 如何与 Viola 和 Jones 算法一起工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:36 26 4
gpt4 key购买 nike

我正在使用 Viola 和 Jones 算法在 C 中实现功能性人脸检测算法。我无法理解 Adaboost 来训练强大的分类器。

我可以检测单个图像中的所有 5 个基本 haar 特征(24x24 图像中有 162336 个)我很确定这很好并且有效,我的算法输出和包含所有已排序特征的数组。

然后,我开始研究 Adaboost,以下是我的理解。我们创建了一个弱分类器(略好于随机),我们对许多弱分类器(大约 200 个)进行线性组合以获得强分类器。

我不明白的是如何创建这个弱分类器。根据我在网上阅读的内容:

  • 规范化我们训练样本的权重(默认为第一轮 1)
  • 然后得到一个特征(这是我的一个问题,我是否必须处理每个训练示例的每个特征?(162336 * 示例数量)这将是大量的计算能力不是吗?)
  • 将此功能“应用”到每个图像以获得最佳阈值和切换(这是我的主要问题,我不明白“应用”在这里是什么意思,将它与图像的每个功能进行比较?我真的不知道看看我必须用它做什么。然后,我不明白什么是阈值和切换,这就是我正在寻求帮助的地方)
  • 还有很多事情要做

我真的很期待你的帮助,让我明白这一点!

最佳答案

本应更快地回答我自己的问题,但我忘记了。这是我的计算机科学学校的一个项目,因此我可以提供答案。

当您理解 Adaboost 时,它实际上相当简单。

首先,您需要检测基础中每个图像的特征(我们使用 4000 张图像来组成一个大集合)如果您有足够的内存,您可以存储它们,或者在您的程序中需要它们时处理它们。对于 4000 张内部具有 5 个 haar 特征的图像,我们使用了超过 16Gb 的 RAM(代码是用 c 编写的,但没有内存泄漏,它是 double 数组)

训练算法为图像分配权重。该权重表示算法做出良好预测(有脸或无脸)的难度。

您的训练算法将由轮次组成(200 轮次可以达到 90% 以上的良好预测)。

在第一轮中,每张图片都具有相同的权重,因为算法从未对它们起作用。

这是一轮的进行方式:

  1. 在每个图像的 X(对于每种类型)中找到最佳的 haar 特征。为此,将每个特征与每个图像上的相同特征(相同类型、尺寸和位置)进行比较,看看它是好预测还是坏预测。 X 特征中具有最佳预测的特征是最好的特征,请将其存储。您会发现每张图像有 5 个最佳特征,因为有 5 种类型将它们组合在一个结构中,它是您的弱分类器

  2. 计算分类器的加权误差。加权误差是应用于每个图像的弱分类器的误差,同时考虑到分配给每个图像的权重。在后面的轮次中,权重更大的图像(算法对这张图像犯了很多错误)将被更多地考虑。

  3. 将弱分类器添加到强分类器(弱分类器数组)及其 alpha。 alpha 是弱分类器的性能,由加权误差决定。使用 alpha,在算法的后期训练更困难时制作的弱分类器将在强分类器的最终预测中具有更大的权重。

  4. 根据您刚刚创建的弱分类器的预测更新每张图像的权重。如果分类器正确,则权重下降,否则它上升。

在200轮训练结束后,你将拥有一个由200个弱分类器组成的强分类器。要对单个图像进行预测,请将每个弱分类器应用于图像,多数人获胜。

我自愿简化了解释,但大部分都在这里。有关更多信息,请查看此处,它在我的项目中确实对我有帮助:http://www.ipol.im/pub/art/2014/104/article.pdf

我建议每个对 AI 和优化感兴趣的人都从事这样的项目。作为一名学生,它让我对 AI 产生了真正的兴趣,并让我思考了很多关于优化的问题,这是我以前从未想过的。

关于c - Adaboost 如何与 Viola 和 Jones 算法一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com