假设我有一个haar cascade xml文件.有没有办法将文件渲染成图像以创建"完美标本"?
因此,如果xml用于面部检测,它将显示将获得最高分数的面部图像?
如果不可能,有没有办法对"主要组成部分"进行成像?
顺便说一句,我使用的是openCV的Python版本.
据我所知,这很难.分类方案很复杂,我认为没有一种简单的方法可以"反转"它,获得"完美的标本",甚至是主要成分之类的东西.(更多关于下面的主要组成部分.)让我试着快速解释分类是如何完成的,这样就更清楚为什么这些事情很难; 然后我会提到你可以尝试的其他一些方法.
级联的想法是通过尽可能快地拒绝尽可能多的非面部来使分类更快.(这很重要,因为图像中的大多数东西都是非面孔的.)你可以通过一系列分类器来实现这一点.第一个分类器经过训练,因此它拒绝了90%的非面部事物,但保留了至少99.99%的面部.这仍然是糟糕的表现 - 如果你只是使用这个分类器,你会得到大量的误报.但是,您可以非常快速地执行此分类,因此您可以快速摆脱大量非面孔.
好的,那么这些分类器中的一个是什么?那么,每个分类器都是一组增强的弱分类器.这意味着,对于传递给分类器的每个图像,它将它传递给N个非常简单的分类器中的每一个,并且每个简单分类器都投票"true"或"false".每个简单(弱)分类器都是加权的,因此加权投票给出了强分类器的答案.
好的 - 那么什么是弱分类器呢?我认为在OpenCV中,弱分类器是高度为2的决策树(参见OpenCV docs,起始页~368).因此,每个弱分类器将输入图像与简单模式进行比较; 如果图像与图案足够相似,则将图像与另一图案进行比较; 如果它完全不同,它将被传递以与第三种模式进行比较.
正如你可能看到的那样,由于决策过程中存在许多非线性因素,所以不可能制作出"完美的标本" - 其中一个弱分类器的"完美标本"可能是其他大多数标准的可怕标本. ,这意味着,总的来说,它不会成为一个好脸色.映射重要组件的问题相同,但您可以通过在第一个(或最后一个)阶段选择最重要(即最高权重)弱分类器,然后绘制那些使用的过滤器来获得某个位置阶段.
您可以尝试的另一种方法是我在艺术项目中看到的方法,但遗憾的是无法找到链接.艺术家生成随机的形状组合,并看到它们触发面部检测器的程度.他将随机添加更多形状,并保持形状配置,以更好地触发面部检测.通过这种爬坡策略,他能够生成看起来像算法的面部图像.这种方法的一个更细微的版本 - 搜索被分类为面孔的东西的刺激空间 - 可能有助于找到"完美的标本",可以这么说.
希望这有帮助,祝你好运!
| 归档时间: |
|
| 查看次数: |
1222 次 |
| 最近记录: |