OpenCV: как получить слабые лернеры от adaboost в

Есть ли способ извлечь функции, соответствующие слабым ученикам, из алгоритма adaboost, реализованного в Opencv?

Я знаю, что adaboost объединяет набор слабых учеников на основе набора входных функций. Одни и те же характеристики измеряются для каждого образца в обучающей выборке. Обычно adaboost использует стадию принятия решения, устанавливает порог для каждой функции и выбирает стадию решения с минимальной ошибкой. Я хочу выяснить, какие особенности породили слабых учеников.

Спасибо.


person ralu    schedule 26.05.2013    source источник


Ответы (1)


Вам просто нужно сохранить модель и извлечь деревья/пни из текстового файла. API save() довольно прост в использовании. В файле вы найдете такие элементы:

"разделяет: - {var:448, качество:5.0241161137819290e-002, le:1.7250000000000000e+002}"

Число рядом с «var» — это индекс функции, а «le» — значение «меньше чем» для этой функции.

person rold2007    schedule 26.05.2013
comment
Большое Вам спасибо. Я сохранил модель и попытаюсь разобрать xml и извлечь поле ‹var›. - person ralu; 27.05.2013
comment
Я проанализировал файл xml, и возникли некоторые неожиданные проблемы. Я использовал 500 слабых учеников, поэтому у меня должно быть 500 функций (я полагал, что они разные). После синтаксического анализа я обнаружил, что получил 38 различных индексов функций, и один индекс функций повторяется 440 раз. Это нормально, правильно. Вы пытались анализировать переменные в обучающем модуле CVBoost? - person ralu; 27.05.2013
comment
То, что вы видите, не является ошибкой. Adaboost повторно взвешивает каждый образец после каждого дерева/пня, чтобы одна и та же функция могла быть лучшей более одного раза. Но наличие одной и той же функции так много раз может означать, что вы переобучаетесь или что другие ваши функции не интересны. Возможно, у вас недостаточно данных. Как видите, возможных причин может быть много, и ваша задача — оценить, почему эта функция так важна, а другие даже не используются. - person rold2007; 28.05.2013
comment
Спасибо большое, буду анализировать данные. Что-то там не так. - person ralu; 28.05.2013
comment
Знаете ли вы какие-либо другие реализации AdaBoost на C/C++? Я использовал OpenCV, но не вижу никакой информации об отладке (например, ошибка классификации всякий раз, когда в модель добавляется слабый ученик). - person ralu; 28.05.2013
comment
Извините, я использую EmguCV (оболочку C# для OpenCV), и у меня даже меньше информации об отладке, чем в C/C++, но это все же лучшее, что я нашел. Вы можете попробовать Weka или R. - person rold2007; 30.05.2013