有没有办法可视化一个haar级联文件?

时间:2012-11-26 17:50:43

标签: python opencv

假设我有一个haar cascade xml文件。有没有办法将文件渲染成图像以创建“完美样本”?

因此,如果xml用于人脸检测,它会显示会获得最高分的脸部图像吗?

如果不可能,有没有办法对“主要成分”进行成像?

顺便说一句,我使用的是openCV的Python版本。

1 个答案:

答案 0 :(得分:6)

据我所知,这很难。分类方案很复杂,我认为没有一种简单的方法可以“反转”它,获得“完美的标本”,甚至是主要组成部分。 (更多关于下面的主要组成部分。)让我试着快速解释分类是如何完成的,这样就更清楚为什么这些事情很难;然后我会提到你可以尝试的其他一些方法。

级联如何工作(大约)

级联的想法是通过尽可能快地拒绝尽可能多的非面孔来使分类更快。 (这很重要,因为图像中的大多数事物都是非面部的。)你可以通过一系列分类器来实现这一点。第一个分类器经过训练,因此它拒绝了90%的非面部事物,但保留了至少99.99%的面部。这仍然是糟糕的表现 - 如果你只是使用这个分类器,你会得到大量的误报。但是,您可以非常快速地执行此分类,因此您可以快速摆脱大量非面孔。

好的,那么这些分类器中的一个是什么?那么,每个分类器都是一组增强的弱分类器。这意味着,对于传递给分类器的每个图像,它将其传递给每个 N 非常简单的分类器,并且每个简单分类器都投票“true”或“false”。每个简单(弱)分类器都是加权的,因此加权投票给出了强分类器的答案。

好的 - 那么什么是弱分类器?我认为在OpenCV中,弱分类器是高度为2的决策树(参见OpenCV docs,起始页~368)。因此,每个弱分类器将输入图像与简单模式进行比较;如果图像与图案足够相似,则将图像与另一图案进行比较;如果它完全不同,它将被传递以与第三种模式进行比较。

为什么这会让事情变得困难,有些事情你可以尝试

正如你可能看到的那样,由于决策过程中存在许多非线性因素,所以不可能制作出“完美的标本” - 对于其中一个弱分类器而言,“完美标本”对于大多数人来说可能是一个可怕的标本。其他人,这意味着它总体上不会成为一个好脸色。映射重要组件的问题相同,但您可以通过在第一个(或最后一个)阶段选择最重要(即最高权重)弱分类器,然后绘制那些使用的过滤器来获得某个位置阶段。

你可以尝试的另一种方法是我在艺术项目中看到的方法,但遗憾的是找不到链接。艺术家生成随机的形状组合,并看到它们触发面部检测器的程度。他将随机添加更多形状,并保持形状配置,以更好地触发面部检测。通过这种爬坡策略,他能够生成看起来像算法的面部图像。这种方法的一个更细微的版本 - 搜索被分类为面部的东西的刺激空间 - 可能有助于找到一个“完美的标本”,可以这么说。

希望这有助于......祝你好运!

相关问题