多视图人脸检测的决策树训练

Posted

技术标签:

【中文标题】多视图人脸检测的决策树训练【英文标题】:Decision tree training for Multi-View face detection 【发布时间】:2014-11-11 10:01:12 【问题描述】:

我正在从事多视图人脸检测并遵循琼斯的多视图人脸检测算法。

在论文"Fast Multi-view Face Detection" 中,Jones 用不同面部姿势的图像训练了 C4.5 决策树。在Decision Tree Training 3.3节中提到“训练算法与boosting算法几乎相同。两个主要区别是特征选择的标准和训练集在每个节点的分割”

我学习并理解了 C4.5 算法here。

我不知道如何为 C4.5 决策树训练不同面部姿势的图像。

编辑 1: 级联分类器ADABOOST算法训练阶段0和阶段1的特点如下图所示。

<!-- stage 0 -->
    <_>
      <maxWeakCount>3</maxWeakCount>
      <stageThreshold>-0.7520892024040222</stageThreshold>
      <weakClassifiers>
        <!-- tree 0 -->
        <_>
          <internalNodes>
            0 -1 46 -67130709 -21569 -1426120013 -1275125205 -21585
            -16385 587145899 -24005</internalNodes>
          <leafValues>
            -0.6543210148811340 0.8888888955116272</leafValues></_>
        <!-- tree 1 -->
        <_>
          <internalNodes>
            0 -1 13 -163512766 -769593758 -10027009 -262145 -514457854
            -193593353 -524289 -1</internalNodes>
          <leafValues>
            -0.7739216089248657 0.7278633713722229</leafValues></_>
        <!-- tree 2 -->
        <_>
          <internalNodes>
            0 -1 2 -363936790 -893203669 -1337948010 -136907894
            1088782736 -134217726 -741544961 -1590337</internalNodes>
          <leafValues>
            -0.7068563103675842 0.6761534214019775</leafValues></_></weakClassifiers></_>
    <!-- stage 1 -->
    <_>
      <maxWeakCount>4</maxWeakCount>
      <stageThreshold>-0.4872078299522400</stageThreshold>
      <weakClassifiers>
        <!-- tree 0 -->
        <_>
          <internalNodes>
            0 -1 84 2147483647 1946124287 -536870913 2147450879
            738132490 1061101567 243204619 2147446655</internalNodes>
          <leafValues>
            -0.8083735704421997 0.7685696482658386</leafValues></_>
        <!-- tree 1 -->
        <_>
          <internalNodes>
            0 -1 21 2147483647 263176079 1879048191 254749487 1879048191
            -134252545 -268435457 801111999</internalNodes>
          <leafValues>
            -0.7698410153388977 0.6592915654182434</leafValues></_>
        <!-- tree 2 -->
        <_>
          <internalNodes>
            0 -1 106 -98110272 1610939566 -285484400 -850010381
            -189334372 -1671954433 -571026695 -262145</internalNodes>
          <leafValues>
            -0.7506558895111084 0.5444605946540833</leafValues></_>
        <!-- tree 3 -->
        <_>
          <internalNodes>
            0 -1 48 -798690576 -131075 1095771153 -237144073 -65569 -1
            -216727745 -69206049</internalNodes>
          <leafValues>
            -0.7775990366935730 0.5465461611747742</leafValues></_></weakClassifiers></_>

编辑2:

下图描述了我对如何训练决策的考虑 我仍在弄清楚要使用哪些功能,但我认为培训应该如附图所示。 谢谢

【问题讨论】:

你不明白的到底是什么? @remi 我们需要属性来训练决策树。我必须使用哪些属性?我知道如何用 Haar 特征或 LBP 特征训练增强级联分类器。在每次迭代时提升权重,一旦 FA 可以接受就停止迭代。对于 C4.5 决策树,我需要训练属性和值。那么训练决策树的属性是什么。 @remi 然后琼斯说“训练算法几乎与提升算法相同”。怎么可能是一样的训练? 从 ADABOOST 培训中,我收到了 20 个阶段的 XML 文件中的选定功能。阶段 0 和阶段 1 显示在 edit1 中。这些特征是否用于训练决策树? 【参考方案1】:

没有阅读论文,但根据我从早期人脸识别实验中了解到的情况,您正在寻找的属性可能只是人脸图像的灰度输入。通常,图像会被重新缩放,比如 32x32 像素,所以你有一个 1024 维向量来训练你的决策树。仔细看看文章,如果他们使用其他功能,他们会写,或者至少给出一个参考?

【讨论】:

我可以接受您的解释,因为您的意思是我们需要使用特征(在您的情况下为 32x32 灰色像素)来训练决策树。我联系了琼斯,他说他使用了与级联分类器相同的功能。因此,我描述了 EDIT1 中用于级联分类器的特征示例。它们在 internalNodes、leafValues 和 threshold 中。我还在调试 detection_based_tracker.cpp 所以我还是不明白,这些是如何使用的,真正的功能是什么。所以我理解的方式,我在 EDIT2 中描述。 (待续) 假设每张图片都有 100 个特征(属性)。对于不同的面部姿势,我会有不同的值范围。然后,如果我有 1000 张正面图像,我将有 1000 行用于该面部姿势。然后我为 C4.5 决策树训练该表。这对你有意义吗? C4.5 可以分类多个类,对吧?琼斯说他很忙,所以我不能详细问他。 是的,看起来没问题。训练的输入将是一个 1000x100 矩阵(假设描述符按行存储)+ 标签。决策树确实可以处理多个类

以上是关于多视图人脸检测的决策树训练的主要内容,如果未能解决你的问题,请参考以下文章

人脸识别系列之人脸检测--训练基于肤色特征的检测

人脸识别系列之人脸检测--训练基于肤色特征的检测

opencv_人脸检测模型训练人脸识别

如何使用opencv自带工具训练人脸检测分类器

opencv 是怎么实现人脸检测的

opencv 人脸识别 训练样本的处理