1

Я пытаюсь обнаружить лица с помощью встроенного в Matlab встроенного распознавания лица альтов. В любом случае, я могу объединить две модели классификации, такие как «FrontalFaceCART» и «ProfileFace», чтобы получить лучший результат?Как объединить две модели классификации в Matlab?

спасибо.

+0

Обычно модели классификации выводят какую-то вероятностную меру, которая определяет, насколько вероятна, что вход принадлежит классу, который они пытаются отличить. Просто используйте невидимые входные данные, которые не были частью обучения в обеих моделях, и назначили класс ввода, какой бы он ни дал вам наивысшую * апостериорную вероятность. – rayryeng

ответ

0

Вы не можете комбинировать модели. Это не имеет смысла в любой задаче классификации, так как каждый классификатор отличается (работает по-другому, т. Е. Отличается от него другим алгоритмом и, возможно, также обучается по-разному).

Согласно модели классификации (ы) помощи (которую можно найти here), два ваших классификаторы работают следующим образом:

  • FrontalFaceCART модель состоит из слабых классификаторов, основанный на классификации и регрессии дерева анализа
  • ProfileFace состоит из слабых классификаторов, основанный на решении культи

Больше информации можно найти в ссылке, предоставленной, но вы можете легко увидеть, что их внутреннее поведение довольно сильно отличается, s o вы не можете смешивать их или комбинировать.
Это как (в машинном обучении) смешивание машины поддержки Vector с K-ближайшим соседом: первая использует разделительные гиперплоскости, тогда как последняя просто основана на расстоянии (-ах).

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

+0

Но как насчет того, если я запустил два отдельных объекта vision.CascadeObjectDetector с FrontalFaceCART и ProfileFace, а затем запустил каждый на моем изображении? Это нормально? На самом деле я сделал нечто подобное. Я запустил изображение через обе модели и получил два набора ограничивающих боксов для каждого. Затем объедините их вместе в одну матрицу, чтобы получить один результат из них. Но есть только одна проблема, которая перекрывает ограничивающие прямоугольники? любая идея, как избавиться от них? –

+1

Итак, вы в основном делаете то, что я предлагаю (параллельно работая с моделями), но вместо того, чтобы выбирать лучший результат, вы пытаетесь выбрать какой-то компромисс между ними. Таким образом, вы комбинируете * результаты *, а не * модели *. Это имеет больше смысла. – Alessiox

+0

Проблема с перекрывающимися ящиками связана с тем, что вы используете выходные данные обеих моделей.Вы не можете этого избежать, но, конечно, вы можете сбросить коробку или объединить поля. Это фактически * комбинационная фаза * ваших результатов, и я считаю, что вы должны сделать это вручную. Попробуйте googling «перекрывающиеся прямоугольники Matlab» или что-то в этом роде, это очень изученная проблема. – Alessiox

0

Одним из вариантов является создание иерархического классификатора. Итак, на первом этапе вы используете лобовый классификатор лица (при условии, что большинство изображений являются фронтальными). Если классификатор терпит неудачу, попробуйте использовать классификатор профилей.

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

Для дальнейшего улучшения вашей работы, без использования двух классификаторов в MATLAB, которые вы используете, вы должны изменить свою технику (и, возможно, ваш язык программирования). Это лучший метод: Facenet.