2014-09-15 3 views
3

У меня есть лица, использующие opencv_trainedcascade.exe. У меня есть серия xml-файлов для разных этапов. Для каждого xml-файла есть внутренние узлы и leafVlaues, и один из них показан ниже.Как понять распознавание лиц xml

<?xml version="1.0"?> 
<opencv_storage> 
<stage0> 
    <maxWeakCount>3</maxWeakCount> 
    <stageThreshold>-1.3019366264343262e+000</stageThreshold> 
    <weakClassifiers> 
    <_> 
     <internalNodes> 
     0 -1 2711 -2099201 -2623493 -774797061 -2162625 -827343685 
     -5535541 -1163949377 -21761</internalNodes> 
     <leafValues> 
     -9.2679738998413086e-001 6.0445684194564819e-001</leafValues></_> 
    <_> 
     <internalNodes> 
     0 -1 1533 -252379683 -203697739 1410462197 1435881947 -74449473 
     -1147414357 1510080511 -1</internalNodes> 
     <leafValues> 
     -9.1606438159942627e-001 6.2200444936752319e-001</leafValues></_> 
    <_> 
     <internalNodes> 
     0 -1 917 -42468780 -11479728 -745548289 -2371181 -23070497 
     -552607093 -74777633 -536871937</internalNodes> 
     <leafValues> 
     -9.2716777324676514e-001 5.4092508554458618e-001</leafValues></_></weakClassifiers></stage0> 
</opencv_storage> 

Мои запросы (1) Что эти stageThreshold, internalNodes и leafValues ​​значит? (2) При фактическом распознавании лиц, как они используются в каскадном классификаторе, я прочитал несколько статей для алгоритма Adaboost. Но я не совсем понимаю. Спасибо

+0

Я все еще выясняю эти interNodes и leafValues, отлаживая «detect_based_tracker.cpp». Все еще нужно копать больше, но грубо понимается как internalNodes - это что-то вроде атрибутов. leafValues ​​и порог - это те, которые определяют решение объекта или нет. Как только я полностью пойму, я стану решением. – batuman

ответ

3

После того, как выкопали detect_based_tracker.cpp, теперь я понял, что такое innerNodes, leafValues ​​и stagethreshold и как они используются. Когда мы смотрим на lbpcascade_frontalface.xml, мы видим список прямоугольников. Это прямоугольники образованных изображений лица (т. Е. Эти области имеют различные особенности и могут использоваться для дифференциации лиц от изображений без лица). Для lbpcascade_frontalface.xml имеется 139 прямоугольников. Каждый прямоугольник x, y точек умножается на постоянное число, чтобы создать дополнительные три прямоугольника, поэтому один прямоугольник представляет собой четыре прямоугольника.

Затем я объясню, что такое internalNode.

<internalNodes> 
      0 -1 13 -163512766 -769593758 -10027009 -262145 -514457854 
      -193593353 -524289 -1</internalNodes> 

Первые два числа 0 -1 представляют собой левое и правое. Я думаю, что они представляют левый leafValue и правый leafValue. Третий - это индекс функции. Если мы помещаем эти 139 прямоугольников в массив, этот индекс функции относится к индексу массива. Это означает, какой прямоугольник должен представлять. Последние восемь чисел представляют собой вычитания угловой точки из четырех прямоугольников. Они вычисляются по интегральным изображениям, поэтому числа довольно велики.

Но я не совсем уверен, как вычисляются значения leafValues, но суммирование этих leafValues ​​сравнивается с stageThreshold для принятия решения лица или лица.

Это то, что я понял из отладки кода. Если кто-то объясняет, как вычисляются значения leafValues, это будет полное решение для моего запроса. Thanks

 Смежные вопросы

  • Нет связанных вопросов^_^