Объяснение cascade.xml в классификаторе хаара

Было бы лучше, если бы кто-нибудь мог полностью объяснить числа/значения в cascade.xml. Пример в:

<!-- stage 0 -->
<_>
  <maxWeakCount>3</maxWeakCount>
  <stageThreshold>-8.8384145498275757e-001</stageThreshold>
  <weakClassifiers>
    <_>
      <internalNodes>
        0 -1 66 5.1593100652098656e-003</internalNodes>
      <leafValues>
        -8.0555558204650879e-001 8.0694979429244995e-001</leafValues></_>
    <_>
      <internalNodes>
        0 -1 108 1.5044789761304855e-002</internalNodes>
      <leafValues>
        -6.2940740585327148e-001 7.5122624635696411e-001</leafValues></_>
    <_>
      <internalNodes>
        0 -1 99 -4.7172707127174363e-005</internalNodes>
      <leafValues>
        5.5112153291702271e-001 -8.6111217737197876e-001</leafValues></_></weakClassifiers></_>

Что означают эти значения

      <internalNodes>
        0 -1 99 -4.7172707127174363e-005</internalNodes>

Другой вопрос, как программа узнает, какую фичу использовать для того или иного этапа? Насколько я знаю, функции имеют форму, как показано ниже

<_>
  <rects>
    <_>
      21 6 3 5 -1.</_>
    <_>
      22 6 1 5 3.</_></rects>
  <tilted>0</tilted></_>

При этом это координаты двух прямоугольников, образующих примерно следующее:

=-=    = Black colored rectangle
=-=    - White colored rectangle
=-=
=-=
=-=

Какие значения -1. и 3. значит? Я знаю, что это вес, но как он используется для расчета функции?

Сводка

  1. Что означают значения внутри <internalNodes>?
  2. Как рассчитывается характеристика? Как используются веса в <rects>?
  3. Самое главное, какое поле обозначает, какие функции используются на конкретном этапе/узле.

Спасибо!


person Yaobin Then    schedule 24.02.2013    source источник
comment
stackoverflow.com/questions/4482123/   -  person Abid Rahman K    schedule 03.03.2013
comment
@AbidRahmanK спасибо за ссылку. К вашему сведению, я уже прочитал это, прежде чем публиковать это. Он не дает ответов на мои вопросы.   -  person Yaobin Then    schedule 04.03.2013
comment
@ Элвин Вы поняли, что означают «внутренние узлы»? Он имеет четыре значения при обучении с функциями, подобными HAAE. И он имеет 11 значений при обучении с функциями, подобными HAAE.   -  person Samuel    schedule 13.02.2014


Ответы (1)


Покопавшись в исходном коде OpenCV, я наконец получил ответы на свои вопросы.

  • Значения, заключенные в теги internalNodes

node.left node.right node.featureIdx node.threshold

Я не уверен, для чего нужны node.left и node.right, поскольку я не вижу, чтобы их где-нибудь вызывали.

  • Веса используются для расчета функции, как показано ниже:

float ret = rect[0].weight * CALC_SUM(p[0], _offset) + rect[1].weight * CALC_SUM(p[1], _offset);

  • Как упоминалось в первом пункте, node.featureIdx — это индекс функции, которая оценивается на этом конкретном узле.
person Yaobin Then    schedule 09.03.2013