一个 8192 维的 VLAD 向量每张图像占用 32KB 的内存。如何?
A 8192-dimensional VLAD vector take 32KB of of memory per image. How?
我有一个关于 VLAD 矢量表示的简单问题。一个 8192 维(k=64、128-D SIFT)VLAD 向量如何占用每个图像“32KB 的内存”?我无法将这两个数字联系起来。
如VLFeat documentation所述,VLAD向量的每个元素由
给出
其中 x_i
是一个描述符向量(这里是一个 128 维的 SIFT 向量),u_k
是第 k
簇的中心 - 即也是一个 128-维 SIFT 向量。 q_ik
表示 x_i
和 u_i
之间的关联强度,如果使用 K-means 聚类,则为 0 或 1。因此,每个 v_k
都是 128 维的。
然后通过堆叠所有 v_k
:
给出图像 I
的 VLAD 向量
这个向量有k
个元素,每个元素都是128维的。
因此,对于 k=64
,我们最终得到描述图像 I
的 64 * 128 = 8192
个数字。
最后,如果我们为每个元素使用浮点数,每个数字需要 4 个字节的内存。因此,对于每个图像的 VLAD 向量,我们最终使用了 64 * 128 * 4 = 32768
字节或 32KB 的总内存。
我有一个关于 VLAD 矢量表示的简单问题。一个 8192 维(k=64、128-D SIFT)VLAD 向量如何占用每个图像“32KB 的内存”?我无法将这两个数字联系起来。
如VLFeat documentation所述,VLAD向量的每个元素由
给出其中 x_i
是一个描述符向量(这里是一个 128 维的 SIFT 向量),u_k
是第 k
簇的中心 - 即也是一个 128-维 SIFT 向量。 q_ik
表示 x_i
和 u_i
之间的关联强度,如果使用 K-means 聚类,则为 0 或 1。因此,每个 v_k
都是 128 维的。
然后通过堆叠所有 v_k
:
I
的 VLAD 向量
这个向量有k
个元素,每个元素都是128维的。
因此,对于 k=64
,我们最终得到描述图像 I
的 64 * 128 = 8192
个数字。
最后,如果我们为每个元素使用浮点数,每个数字需要 4 个字节的内存。因此,对于每个图像的 VLAD 向量,我们最终使用了 64 * 128 * 4 = 32768
字节或 32KB 的总内存。