машинное обучение - svm feature fusion techique - PullRequest
4 голосов
/ 29 ноября 2010

для моей последней диссертации я пытаюсь создать систему распознавания лиц 3d, комбинируя информацию о цвете и глубине.первый шаг, который я сделал, - это перераспределение заголовка данных к заданному заголовку модели с использованием итеративного алгоритма ближайшей точки.на этапе обнаружения я думал об использовании libsvm.но я не понимаю, как объединить информацию о глубине и цвете в один вектор признаков?они являются зависимой информацией (каждая точка состоит из цвета (RGB), информации о глубине, а также качества сканирования) .. что вы предлагаете делать?что-то вроде взвешивания?

edit: вчера вечером я прочитал статью о функциях SURF / SIFT и хотел бы их использовать!это может сработать?концепция будет следующей: извлечение этих признаков из цветного изображения и изображения глубины (изображения диапазона) с использованием каждого объекта в качестве одного вектора объектов для SVM?

Ответы [ 4 ]

4 голосов
/ 29 ноября 2010

Конкатенация действительно возможна.Однако, поскольку вы работаете над трехмерным распознаванием лиц, у вас должна быть некоторая стратегия относительно того, как вы это делаете.Поворот и перевод лиц будет трудно распознать, используя «простой» подход.

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

Также помните, что SVM по своей природе являются двоичными (то есть они разделяются между двумя классами).В зависимости от конкретного приложения, вам, скорее всего, придется использовать несколько мультиклассовых стратегий (один против всех или один против многих).

Я бы порекомендовал провести некоторые исследования литературы, чтобы увидеть, как другие напали на проблему (поиск в Google будет хорошим началом)

1 голос
/ 29 ноября 2010

Звучит просто, но вы можете просто объединить два вектора в один.Многие исследователи делают это.

0 голосов
/ 30 ноября 2010

Как уже упоминалось другими, самый простой подход - просто объединить два набора функций в один.

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

Чтобы это работало, очевидно, что вам нужно нормализовать все атрибуты, чтобы иметь одинаковый масштаб (скажем, преобразовать все объекты в диапазон [-1,1] или [0,1])

0 голосов
/ 30 ноября 2010

То, к чему вы пришли, является важной открытой проблемой. Да, есть несколько способов справиться с этим, как упомянуто здесь Eamorr. Например, вы можете объединить и выполнить PCA (или какой-либо метод нелинейного уменьшения размерности ). Но отчасти сложно отстаивать практичность этого, учитывая, что PCA отнимает O (n ^ 3) времени по числу функций. Это само по себе может быть необоснованным для данных в поле зрения, которые могут иметь тысячи функций.

...