Является ли LSH преобразованием векторов в двоичные векторы для расстояния Хэмминга?

Я прочитал статью о LSH и знаю, что она используется для решения аппроксимированной задачи k-NN. Мы можем разделить алгоритм на две части:

  1. Дан вектор в D измерениях (где D большой) любого значения, переведите его с набором N (где N<<D) хэш-функций в двоичный вектор в N измерениях.

  2. Используя расстояние Хэмминга, примените некоторую технику поиска к набору заданных двоичных кодов, полученных на этапе 1, чтобы найти k-NN.

Ключевым моментом является то, что вычисление расстояния Хэмминга для векторов в N измерениях выполняется быстро с использованием XOR.

В любом случае, у меня есть два вопроса:

  1. Пункт 1 по-прежнему необходим, если мы используем бинарный дескриптор, например ORB? Поскольку дескрипторы ORB уже являются бинарными и мы используем расстояние Хэмминга для их сравнения, почему мы должны выполнять первую точку?

  2. Как происходит преобразование изображений, описанных SIFT? Каждый дескриптор SIFT состоит из 128 бит, и каждое изображение описывается набором дескрипторов. Итак, у нас есть матрица descX128 (где desc — количество используемых дескрипторов), а LSH обычно принимает на вход вектор.


person justHelloWorld    schedule 24.05.2016    source источник


Ответы (1)


1) Вы можете обойти это, но тогда вы будете работать в D измерениях, а не N, как вы говорите. где N << D. Это означает, что алгоритм также должен адаптироваться к D измерениям.


2) No.

Прочитайте SIFT из openCV:

  1. Дескриптор ключевой точки

Теперь создан дескриптор ключевой точки. Берется окрестность 16x16 вокруг ключевой точки. Он разделен на 16 подблоков размером 4x4. Для каждого подблока создается гистограмма ориентации с 8 бинами. Таким образом, всего доступно 128 значений бинов. Он представлен в виде вектора для формирования дескриптора ключевой точки. В дополнение к этому, предпринимаются некоторые меры для обеспечения устойчивости к изменениям освещения, вращению и т. д.

Вот как я это себе представляю, надеюсь этого будет достаточно:

LSH принимает в качестве входных данных набор точек из n точек, где каждая точка находится в d измерениях.

Таким образом, запрос представляет собой точку в d измерениях, и цель состоит в том, чтобы найти ее NN*.


  1. Теперь каждая точка представляет собой дескриптор изображения. Итак, у нас есть n изображений в нашем наборе данных.

  2. Запрос, который также является точкой (то есть вектором с d координатами), представляет другой дескриптор изображения.

  3. Мы стремимся сопоставить (т.е. найти ближайшего соседа) дескриптор изображения запроса с дескриптором изображения из нашего набора данных.

Таким образом, преобразование, о котором вы говорите, применяется в векторе, не в матрице.


Изменить:

Более того, из нашей статьи Многомерный приближенный ближайший сосед: kd Generalized Randomized Forests см. это в разделе Раздел Эксперименты:

SIFT — это 128-мерный вектор, описывающий локальный участок изображения с помощью гистограмм локальных ориентаций градиента.


*или фиксированный радиус рядом с соседями

person gsamaras    schedule 25.05.2016
comment
Но ваш процитированный текст относится только к одному дескриптору. Это означает, что в SIFT каждый дескриптор представляет собой вектор в 128 измерениях. Но изображение представлено несколькими дескрипторами , поэтому я говорю, что изображение представлено через матрицу, так как мне нужно несколько дескрипторов векторов (каждый из них в 128 измерениях). - person justHelloWorld; 25.05.2016
comment
Тогда этот Keypoints between two images are matched by identifying their nearest neighbours. из предоставленной мной ссылки должен помочь @justHelloWorld. - person gsamaras; 25.05.2016
comment
Извините за мою глупость, но я не понимаю, как это может помочь в моем предыдущем наблюдении :D - person justHelloWorld; 25.05.2016
comment
Думаю, вина лежит на мне @justHelloWorld, а не на тебе! Смотрите мою правку. В LSH мы ищем дескрипторы изображений. - person gsamaras; 25.05.2016
comment
Теперь все гораздо яснее: мы основываем наши исследования в LSH только на одном дескрипторе из множества доступных во всем изображении. Таким образом, мы идентифицируем одно изображение с помощью одного дескриптора, относящегося к небольшому фрагменту изображения. Теперь мне интересно, как мы можем извлечь осмысленный (или лучше наиболее осмысленный) патч в образе, но я думаю, что открою еще один вопрос по теме :) - person justHelloWorld; 25.05.2016
comment
Точно @justHelloWorld, ты понял! Хм, это большой вопрос, и многие ученые работают над ним, я думаю, это открытый вопрос. - person gsamaras; 25.05.2016
comment
И это вопрос :) - person justHelloWorld; 25.05.2016
comment
Для меня это довольно широкий вопрос, я позволю кому-то другому ответить на @justHelloWorld, удачи! - person gsamaras; 25.05.2016
comment
Я только что узнал, что дескриптор GIST относится ко всему изображению, а не только к патчу/ключевой точке внутри него, поэтому мы можем представить изображение через вектор (в 534 измерениях, если я не ошибаюсь). Отлично :) - person justHelloWorld; 26.05.2016
comment
Это то, что я говорил с самого начала @justHelloWorld, но вы меня немного запутали, извините! В нашем многомерном приближенном ближайшем соседе: kd Generalized Randomized Forest мы добились максимальной производительности в GIST и это 960 размеров. ;) - person gsamaras; 26.05.2016