- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Viola 和 Jones 算法在 C 中实现功能性人脸检测算法。我无法理解 Adaboost 来训练强大的分类器。
我可以检测单个图像中的所有 5 个基本 haar 特征(24x24 图像中有 162336 个)我很确定这很好并且有效,我的算法输出和包含所有已排序特征的数组。
然后,我开始研究 Adaboost,以下是我的理解。我们创建了一个弱分类器(略好于随机),我们对许多弱分类器(大约 200 个)进行线性组合以获得强分类器。
我不明白的是如何创建这个弱分类器。根据我在网上阅读的内容:
我真的很期待你的帮助,让我明白这一点!
最佳答案
本应更快地回答我自己的问题,但我忘记了。这是我的计算机科学学校的一个项目,因此我可以提供答案。
当您理解 Adaboost 时,它实际上相当简单。
首先,您需要检测基础中每个图像的特征(我们使用 4000 张图像来组成一个大集合)如果您有足够的内存,您可以存储它们,或者在您的程序中需要它们时处理它们。对于 4000 张内部具有 5 个 haar 特征的图像,我们使用了超过 16Gb 的 RAM(代码是用 c 编写的,但没有内存泄漏,它是 double 数组)
训练算法为图像分配权重。该权重表示算法做出良好预测(有脸或无脸)的难度。
您的训练算法将由轮次组成(200 轮次可以达到 90% 以上的良好预测)。
在第一轮中,每张图片都具有相同的权重,因为算法从未对它们起作用。
这是一轮的进行方式:
在每个图像的 X(对于每种类型)中找到最佳的 haar 特征。为此,将每个特征与每个图像上的相同特征(相同类型、尺寸和位置)进行比较,看看它是好预测还是坏预测。 X 特征中具有最佳预测的特征是最好的特征,请将其存储。您会发现每张图像有 5 个最佳特征,因为有 5 种类型将它们组合在一个结构中,它是您的弱分类器
计算分类器的加权误差。加权误差是应用于每个图像的弱分类器的误差,同时考虑到分配给每个图像的权重。在后面的轮次中,权重更大的图像(算法对这张图像犯了很多错误)将被更多地考虑。
将弱分类器添加到强分类器(弱分类器数组)及其 alpha。 alpha 是弱分类器的性能,由加权误差决定。使用 alpha,在算法的后期训练更困难时制作的弱分类器将在强分类器的最终预测中具有更大的权重。
根据您刚刚创建的弱分类器的预测更新每张图像的权重。如果分类器正确,则权重下降,否则它上升。
在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/
这是有关的Viola-Jones算法(用于面部检测)的问题,如此处所述 http://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detectio
我刚刚开始研究 Viola-Jones 人脸检测算法来设计人脸识别系统。根据我所了解的所有内容,我对“像素总和”这个短语感到困惑。是指给定像素点的颜色总和还是给定像素点的距离总和? 最佳答案 通常,如
请用几句话向我解释一下 Viola-Jones 人脸检测方法的工作原理。 最佳答案 Viola-Jones 检测器是一个强大的二元分类器构建了几个弱探测器 Each weak detector is
我正在实现 Viola-Jones 人脸检测器来检测静止图像中的人脸,它对于与我的训练尺寸相同的图像非常有效。但是我不知道人脸检测器如何处理多种尺寸的人脸? 如果我的图像的训练大小是 24*24 并且
我正在尝试在 OpenCV 中使用 Viola–Jones 人脸检测算法。我使用 detectMultiScale() 来定位图像中的多个面孔。我想知道如何从源代码返回或计算所计算面部的置信度。似乎默
我在理解 Viola Jones algorithm 的训练阶段时遇到问题. 据我所知,我用伪代码给出了算法: # learning phase of Viola Jones foreach feat
据说“4916 个正面训练示例经过手工挑选对齐、归一化并缩放到 24x24 的基本分辨率。通过从 9500 张不包含人脸的图像中随机挑选子窗口来选择 10,000 个负面示例。”在论文“Paul Vi
我尝试从面部数据库中提取面部特征,但我发现 Viola-Jones 算法在两种情况下效果不佳*: 当我尝试单独检测眼睛时, 当我尝试检测嘴巴时。 *效果不佳:将图像的不同部分检测为眼睛或嘴巴。或者有时
我正在努力理解 Viola Jones 方法,而且我基本上已经掌握了它。 它使用简单的类似 Haar 的特征提升到强大的分类器中并组织成层/级联以实现更好的性能(不用理会明显的“非对象”区域)。 我想
我看过很多关于 Viola-Jones 算法真正工作原理的文章和问题的答案。我一直在寻找答案,说某个区域的“像素总和”减去相邻区域的“像素总和”。我对“像素总和”的含义感到困惑。值(value)依据是
我已经阅读了 2004 年的 viola 论文。在 3.1 中,他们解释了阈值计算。但我非常困惑。它读作 For each feature, the examples are sorted based
我一直在实现 Viola-Jones' face detection algorithm 的改编版.该技术依赖于在图像中放置一个 24x24 像素的子帧,然后在其中的每个位置以各种可能的尺寸放置矩形特
我读了很多关于 Viola Jones 方法的文章,但我仍然不明白矩形特征中的“弱分类器”、“强分类器”、“子窗口”,它们的定义是什么。那么“阈值”呢?我如何知道阈值?谁能帮我?谢谢之前 最佳答案 A
我正在尝试使用 OpenCV 中的 Haar 级联检测图像中的特定对象。 假设我对检测风景图像中的 parking 标志感兴趣。在为我的训练集定义正图像样本时,哪种图像是最好的图像:(a) 包含我的对
我现在正在比较用纯 C 代码编写的代码和使用 openCV 函数 cvHaarDetectObjects() 的代码之间的 Viola-Jones 代码的时间性能。 到目前为止,用纯C代码检测人脸的时
我想通过并行提取检测到的人脸来加速 Viola-Jones,我使用了这段代码,但是 For Each 语句中的人脸参数有一个错误,你能告诉我如何解决这个错误吗?错误是 (Error 2 The typ
我正在使用 Viola 和 Jones 算法在 C 中实现功能性人脸检测算法。我无法理解 Adaboost 来训练强大的分类器。 我可以检测单个图像中的所有 5 个基本 haar 特征(24x24 图
我正在尝试了解 Viola-jones 人脸检测算法。在论文中,他们提到在 24x24 像素的图像中可以有 160k 以上的 haar 特征。 我正在努力理解如何确定弱分类器。例如,如果我有 10k
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我正在尝试用 C++ 实现 P. Viola 和 M. Jones 检测框架(一开始只是简单的序列分类器 - 不是级联版本)。我认为我已经设计了所有必需的类和模块(例如积分图像、Haar 特征),尽管
我是一名优秀的程序员,十分优秀!