Я работаю для распознавания лиц с несколькими видами. У меня два шага в развивающемся обнаружении лица,Извлечение функций с использованием MB-LBP для распознавания лиц с несколькими видами зрения
(1) дерево принятия решений принимает решение о каком классификаторе для запуска и
(2) работает выбранный классификатор для определения конкретной ориентации лица.
У меня есть 9 классификаторов, обученных с помощью алгоритма Ada-boost для 9 видов лиц.
Теперь моя проблема заключается в обучении дерева решений с помощью функции MB-LBP (многомасштабный локальный двоичный шаблон). Я выбрал 100 прямоугольников для разных положений x, y и разных размеров прямоугольника. Мне нравится использовать эти прямоугольники для извлечения функции с помощью MB-LBP. Я понял, что мы можем иметь метку 0-255 для прямоугольника, если мы используем концепцию MB-LBP. В OpenCV, он реализуется как (в строке 217, cascadedetect.hpp)
inline int Feature :: calc(int _offset) const
{
int cval = CALC_SUM_(p[5], p[6], p[9], p[10], _offset);
return (CALC_SUM_(p[0], p[1], p[4], p[5], _offset) >= cval ? 128 : 0) | // 0
(CALC_SUM_(p[1], p[2], p[5], p[6], _offset) >= cval ? 64 : 0) | // 1
(CALC_SUM_(p[2], p[3], p[6], p[7], _offset) >= cval ? 32 : 0) | // 2
(CALC_SUM_(p[6], p[7], p[10], p[11], _offset) >= cval ? 16 : 0) | // 5
(CALC_SUM_(p[10], p[11], p[14], p[15], _offset) >= cval ? 8 : 0)| // 8
(CALC_SUM_(p[9], p[10], p[13], p[14], _offset) >= cval ? 4 : 0)| // 7
(CALC_SUM_(p[8], p[9], p[12], p[13], _offset) >= cval ? 2 : 0)| // 6
(CALC_SUM_(p[4], p[5], p[8], p[9], _offset) >= cval ? 1 : 0);
}
Этот код может извлечь метку. Оттуда я не могу понять, как перейти к созданию значимой функции для каждого прямоугольника. Я проверил код OpenCV на CascadeTraining. Это действительно сложно. Могу ли я понять, как создать полезную функцию с использованием MB-LBP? Thanks