Кластеризация изображений на основе их сходства - PullRequest
0 голосов
/ 19 октября 2019

Я сталкиваюсь с проблемой кластеризации изображений на основе их сходства, не зная количества кластеров. В идеале я хотел бы добиться чего-то, что напоминает эту http://cs231n.github.io/assets/cnnvis/tsne.jpeg (http://cs231n.github.io/understanding-cnn/ эта картина является результатом нейронной сети свертки и представляет группы, которым она научилась)

Потому что мне это не интереснов их классификации (я не знаю классов) меня больше всего интересуют их «визуальные» свойства: цвета, формы, градиенты и т. д. Я нашел множество статей, предлагающих алгоритмы, такие как DBSCAN, t-SNE или даже k-means, ноЕсть ли лучшее решение? Были предложения использовать трансформацию HOG, но, честно говоря, не знаю, как все это соединить.

Итак, в итоге, как я могу разделить (на 2D плоскости, на группы,папки, что угодно) изображения, основанные на их цветах и ​​свойствах формы?

Ответы [ 2 ]

1 голос
/ 20 октября 2019

t-SNE на самом деле идеально подходит для того, что вы пытаетесь сделать.

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

Вы можете узнать больше об этом здесь .

Как всегда, у sklearn есть очень удобный объект TSNE , чтобы быстро его опробовать.

Надеюсь, это поможет ...

0 голосов
/ 25 октября 2019

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

К сожалению, размерность информации изображения выше, чем 2D. Фотография, на которую вы ссылаетесь, является просто проекцией из многомерного пространства на плоскость, и не обязательно представляет, как выглядит фактическое пространство. Эта конкретная проекция в основном о цветах, не так ли? И все же не идеален, потому что проблема не 2D мерная. То же самое относится и к попытке сжать кластеры в папки - в большинстве случаев пробный сбой не удался.

Тем не менее, вы правильно указываете на конкретные параметры сравнения в своем вопросе: как я могу выделить (на плоскости 2D, вгруппы, папки, что угодно) изображения, основанные на их цветах и ​​свойствах формы?

Решение состоит в том, чтобы сосредоточиться на измерении / метрике сходства, которые вас интересуют. Например, конкретно «это изображение содержит круг?», И оптимизировать для этого. Но если вы хотите «квадрат», вы уже в другом измерении. При оптимизации для цвета, вы можете посмотреть на «общее покраснение». Чем больше метрик вы добавляете, тем выше размерность кластеризации.

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

По моему опыту, кластеризация легче, когда кластеры изображений относительно однородны. Например, изображения в каждом потенциальном кластере очень похожи по некоторым показателям. Например, одна группа - "мосты", другая - "лица". Если у вас есть очень разнообразные изображения любого возможного объекта (даже шума), решение будет труднореализуемым, если только вы не укажете, по какой именно группе вы хотите группировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...