Search code examples
algorithmopencvface-detectiondecision-tree

Decision tree training for Multi-View face detection


I am working for multi-view face detection and following the Jones's multiple-view face detection algorithm.

In the paper "Fast Multi-view Face Detection", Jones trained C4.5 decision tree with images of different face poses. In Section 3.3 of Decision Tree Training, it is mentioned as "the training algorithm is almost identical to the boosting algorithm. The two main differences are the criteria for feature selection and the splitting of the training set at each node"

I learned and understood C4.5 algorithm here.

I can't figure out how to train images of different face poses for C4.5 decision tree.

EDIT 1: Stage 0 and Stage 1 features of training the ADABOOST algorithm for cascade classifier is shown below.

<!-- 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></_>

EDIT2:

My consideration for how to train the decision is described in the following picture enter image description here I am still figuring out what are the features to use, but I think the training should be as shown in the attached image. Thanks


Solution

  • Did not read the paper but frm what I know from early face recognition experiments, the attributes you are looking for are probably just the grey level inputs of the face images. Usually, images are rescaled, say to 32x32 pixels, so you have a 1024 dimensionnal vector to train your decision tree. Have a closer look at the article if they use other features, they will be written, or at least given a reference to?