2014-12-30 2 views
2

ПРИМЕЧАНИЕ. Это мой первый вопрос о стеке. Извините, если я задал свой вопрос не так, как ожидалось. Итак, вот мои сомнения.Кластеризация Kmeans для параметров просеивания

У меня есть набор данных около 3000 изображений. Я выполнил просеивание (масштабное инвариантное преобразование объектов) для всех этих изображений (используя демоверсию Дэвида Лоу) и получил соответствующие функции (3000) ключевых точек изображений. Теперь мне нужно выполнить кластеризацию k-значений для функций ключевых точек 3000 изображений. Каждое изображение имеет свои собственные ключевые точки (изменения от изображения к изображению), и они находятся в 128-мерной матрице. Теперь для выполнения k-средств эти 3000 векторов просеивания должны быть собраны вместе, и их следует обучить получению от него одной k-мерной модели.

Например:

Изображения были преобразованы в формат .pgm перед тем просеять, а вот на 226 ключевых точек для одного из изображений после выполнения просеять:

74 128 

98.20 126.13 16.47 2.776 

0 0 0 0 0 0 0 0 9 12 1 0 0 0 0 0 39 9 0 0 

0 15 24 12 29 1 0 0 0 27 92 33 13 1 0 0 0 0 0 20 

83 90 19 1 2 6 3 19 165 86 2 0 1 8 44 88 24 0 3 21 

8 24 165 64 3 1 4 0 0 1 1 18 116 23 10 0 1 14 11 51 

165 101 9 20 5 1 5 84 38 24 28 157 40 5 10 14 0 3 5 0 

0 0 0 0 45 101 16 0 0 0 0 1 114 165 17 8 1 0 0 1 

7 56 17 46 26 0 0 0 

(таким же образом остальные ключевые точки и их 128 измерений продолжаются до 226-й функции клавишной точки).

Аналогичным образом, остальные 2999 изображений имеют соответствующие функции ключевых точек.

Теперь мне нужно выполнить кластеризацию k-значений для всех снимков 3000 изображений и получить от них одну k-мерную модель. Я планирую использовать пакет k-means от scikit (sklearn). Как вводить эти ключевые точки 3000 изображений в scikit? Пожалуйста помоги.

ответ

1

Вам необходимо создать экземпляр объекта sklearn.cluster.KMeans и позвонить по телефону fit(X) где X - матрица со всеми ключевыми точками всех изображений, сложенных вверх. Например, если вместо 3000 изображений у вас было только два изображения с 100 и 50 ключевыми точками соответственно, X было бы 150 на 128. После того, как вы запустите fit, вы должны посмотреть на атрибут объекта cluster_centers_, который будет соответствовать k- означает модель, которую вы бы обучили.

Тем не менее, из вашего вопроса неясно, есть ли у вас ключевые точки каждого изображения, представленные в python как матрица. Вы можете взглянуть на their k-means example.

-2

Я тренировал около 64000x128 ключевых точек на кластере EC2 c3.4xlarge с 16 ядрами. Я использовал Ipython параллельно с Scikit, и для кластеризации потребовалось около 120 часов. Это может быть одно решение. В основном X для функции fit должен быть массив numpy формы (number_of_features X 128).