Я студент.Мое задание - выбрать бумагу для компьютерного зрения (из предоставленного списка) и реализовать ее алгоритм.Я выбрал Grauman and Darrells ' Ядро соответствия Pyramid: дискриминационная классификация с наборами характеристик изображения (IEEE, 2005).
Я закодировал эту штуку, но она не соответствует изображениям.На самом деле, я даже не могу концептуально понять, как он мог бы работать, если бы он использовал дескрипторы объектов, которые соответствуют друг другу.
Техника, как я понял, заключается в создании пирамиды гистограмм для двух наборов функций изатем вычислите (взвешенное) пересечение этих множеств.Размер ячейки == 1 для первого уровня, а размер ячейки удваивается на каждом уровне пирамиды.Процесс останавливается, когда размер корзины> = max_element_in_feature_sets.Если размер бина где-то больше, целочисленное деление descriptor_value / bin_size всегда будет возвращать ноль, и все будет в одном бине.
Так вот, где он разваливается для меня.Представьте, что размер ячейки = 1/2 * max_element, то есть каждый элемент каждой функции будет помещен в ячейку 1 или ячейку 0. Но при длине вектора элемента 128 элементов все равно будет 2 ^ 128 корзин.Какова вероятность попадания двух функций в одну корзину?
Ответ, конечно, зависит.Если бы объекты были случайным шумом, вероятность была бы очень низкой.В документе должно быть сделано молчаливое предположение, что похожие изображения имеют сходные черты.Я не вижу этого в моих тестовых прогонах.Например, я взял маленькое серое изображение и размыл его с помощью гауссова ядра 5x5.Затем я сравнил его с исходным изображением.Вот вывод: (объяснение находится ниже вывода. Прокрутите вниз.)
file named art487.jpg extracted features= 50
file named art487_blur.jpg extracted features= 7
Min value= 0, Max val= 164 (of any element)
levels in the pyramid= 8
SUMMARY OF PYRAMID art487.jpg
level= 0, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 1, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 2, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 3, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 4, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 5, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 6, # bins= 50, bins= 1, 1, 1,..., 1, count = 50
level= 7, # bins= 21, bins= 29, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, count = 50
SUMMARY OF PYRAMID art487_blur.jpg
level= 0, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 1, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 2, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 3, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 4, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 5, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 6, # bins= 7, bins= 1, 1, 1, 1, 1, 1, 1, count = 7
level= 7, # bins= 4, bins= 4, 1, 1, 1, count = 7
raw score= 0
normalized score= 0
Список чисел после "bins =" показывает, сколько объектов попало в один конкретный блок.Результаты - это то, что я ожидаю от 128 измерений.Каждая функция получает свою собственную корзину, за исключением самого грубого уровня, где несколько нулевых векторов сгруппированы вместе.Это дает оценку сходства 0, как я и ожидал.
Я не знаю, как сделать это ядро из пирамидального соответствия полезным.В документе говорится, что с помощью функций SIFT были достигнуты хорошие результаты, но в документе нет ничего, что помогло бы мне понять, как это было возможно.
Что происходит не так?Я должен задавать интенсивность пикселей, а не дескрипторы функций?