I recently asked how to extract VLAD from SIFT descriptors in VLFeat with Matlab here.
However, I am running up against memory limitations. I have 64GB RAM and 64GB Swap.
all_descr = single([sift_descr{:}]);
... produces a memory error:
Requested 128x258438583 (123.2GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information.
What is the correct way to extract VLAD when we have a very large training dataset? For example, I could subset the SIFT descriptors before running vl_kmeans
, like this:
all_descr = single([sift_descr{1:100000}]);
This works within memory, but how will it affect my VLAD features? Thank you.