我阅读了几篇关于这个主题的文章,包括https://habr.com/ru/post/133826/ 似乎我分别理解了这些阶段(例如 Haar 符号、积分映射、boosting 是什么),但不清楚分类器是如何训练的。例如,我们有 10,000 张带有我们需要的对象的图像(例如一张脸),以及另外 100,000 张不知道位于什么位置的图像(它们都已签名,例如有一张脸 - 没有脸) . 算法的意思,据我理解,就是通过多级剪枝,通过图像,只有图像中那些已经通过了所有层级的元素才被当作想要的对象,而绝对没有被截断的第一级(组成一个强的弱分类器)。我不明白如何训练这些弱分类器?为了让第一个弱分类器正常工作,应该给算法输入什么,接下来的呢?
似懂非懂。假设我们有 160,000 个不同的 Haar 特征,用于 24 x 24 窗口。我们遍历所有图像(10,000 张面孔和 10,000 张非面孔)并寻找能够提供最佳结果的特征。之后,我们根据它确定的正确和错误的程度为其添加一个权重,那些它识别不正确的示例被定义为复杂的,我们为它们分配更多的权重以进行下一次迭代。结果是一个大分类器,一个小分类器,每个分类器都被赋予一定的权重(例如响应阈值)。据我了解,在 Viola-Jones 方法中,分类器是一个接一个地放置的,首先是那些对带有人脸的图像(概率为 0.99)以及它们可能在某处出现误报的概率反应非常好的分类器0.3, 为了首先消除那些绝对不是人的碎片。因此,准确度非常高。现在对我来说唯一的问题是我们如何定义权重。但这似乎取决于实施。好吧,事实证明,我们需要以这样一种方式选择分类器,即它们主要选择所有面(或所有面的 0.99 个),其余的不太重要。