Для моего SVM обучения и прогнозирования я использую vl_svmtrain
документацию, которую можно найти здесь: http://www.vlfeat.org/matlab/vl_svmtrain.htmlSVM предсказания данных в ячейках, а не ожидаемая матрице
[WB] = VL_SVMTRAIN (X, Y , LAMBDA) генерирует линейный вектор поддержки Машина (SVM) из векторов данных X и меток Y. X представляет собой матрицу D по N с одним столбцом на пример и размерными характеристиками D (SINGLE или DOUBLE). Y - ДВОЙНОЙ вектор с N элементами с бинарной (-1 или +1) меткой для каждой точки тренировки.
Согласно документации, данные X
должны быть в матрице D на N, имеющей один образец на столбец.
Дело в том, что мои данные не устроены таким образом, и я не думаю, что смогу это устроить, даже если бы захотел. Каждое из моих изображений представлено матрицей признаков размером 512 * 257
, они хранятся в ячейке. Аналогично, каждое тестовое изображение имеет одинаковый размер.
Так что для упрощения я предполагаю, что у меня есть только 3 класса, каждый класс представлен моделью размера 512 * 257
, и у меня есть тысячи тестов, которые я должен сравнивать снова с каждой моделью, больше похожую на один против любого подхода , Но его расположение данных, с которыми я испытываю трудности.
Возможно ли представить данные в формате SVM в формате ячейки, а не в матричном формате?
Update:
Массив ячейки я уже состоит из 28 моделей. Таким образом, у меня есть в общей сложности 28 классов, каждый класс представлен массивом размером 512 * 257
. Письмо models(1)
представляет ans = [512x257 double]
и написание models{1}
производит двойную матрицу 512*257
.
Это то, что я использую для обучения СВМ, аналогично, каждый тест имеет одинаковый размер и в том же расположении.
Как я получил эту матрицу для каждой модели? Я извлек функции RootSIFT из 100 изображений для каждого класса/модели. Затем я представил эти функции в сценарий модели гауссовой смеси и установил количество кластеров равным 512. Это дало мне средства, ковариации и веса 512 кластеров. Затем я конкатенировал их, используя models{i} = [gmm_models{i}.w(:) gmm_models{i}.mu' gmm_models{i}.sigma'];
Что касается теста, функции RootSIFT извлекаются из 5 изображений, а затем они проходят тот же процесс, что и для моделей, чтобы получить конкатенированную матрицу того же размера. Так что естественно для каждой модели есть сотни тестовых матриц.
Надеюсь, это разъяснило это больше, чем раньше.
Является ли 512x257 случайным списком точек функции на изображении? С их полными дескрипторами? – Peter
Это конкатенация параметров, генерируемых GMM. Таким образом, каждая ячейка является конкатенацией средств, ковариаций и весов. Известно, что эти функции дают хорошие результаты в соответствии с документом, опубликованным в марте прошлого года. – StuckInPhD