8192-мерный вектор VLAD занимает 32 КБ памяти на изображение. Как?

У меня есть простой вопрос относительно представления вектора VLAD. Как получается, что 8192-мерный (k=64, 128-D SIFT) вектор VLAD занимает "32 КБ памяти" на изображение? Я не мог соотнести эти два числа.

1 ответ

Решение

Как описано в документации VLFeat, каждый элемент вектора VLAD задается

v_k = sum_i q_ik (x_i - mu_i

где x_i является вектором дескриптора (здесь: 128-мерный вектор SIFT), и u_k является центром kth кластер - то есть также 128-мерный вектор SIFT. q_ik обозначает силу ассоциации между x_i а также u_i, который равен 0 или 1, если используется K-означает кластеризацию. Таким образом, каждый v_k 128-мерный.

VLAD вектор изображения I затем дается сложение всех v_k:

Влад вектор

Этот вектор имеет k элементы, и каждый элемент является 128-мерным. Таким образом, для k=64мы заканчиваем с 64 * 128 = 8192 числа, описывающие изображение I,

Наконец, если мы используем числа с плавающей запятой для каждого элемента, каждому числу требуется 4 байта памяти. Таким образом, мы получаем общее использование памяти 64 * 128 * 4 = 32768 Байт или 32 КБ для вектора VLAD каждого изображения.

Другие вопросы по тегам