/** * Build a {@link VLAD} using the information provided at construction time. * The following steps are taken: * <p> * <ol> * <li>A sample of the features is loaded * <li>The sample is clustered using k-means * </ol> * * @return the {@link VLAD} */ public VLAD<float[]> buildVLAD() { // Load the data and normalise System.out.println("Loading Data from " + localFeatures.size() + " files"); final List<FloatLocalFeatureAdaptor<?>> samples = loadSample(); // cluster System.out.println("Clustering " + samples.size() + " Data Points"); final FloatCentroidsResult centroids = cluster(samples); // build vlads System.out.println("Building VLADs"); return new VLAD<float[]>(new ExactFloatAssigner(centroids), centroids, normalise); }
final VLAD<float[]> vlad = buildVLAD(); final List<MultidimensionalFloatFV> vlads = computeVLADs(vlad); final Matrix whitening = createRandomWhitening(numPcaDims); pca.getBasis().setMatrix(0, numPcaDims - 1, 0, numPcaDims - 1, pca.getBasis().times(whitening)); final float[][] pcaVlads = projectFeatures(pca, vlads);
/** * Main method * * @param args * arguments * @throws IOException * if an error occurs during reading or writing */ public static void main(String[] args) throws IOException { final VLADBuilder builder = new VLADBuilder(); final CmdLineParser parser = new CmdLineParser(builder); try { parser.parseArgument(args); } catch (final CmdLineException e) { System.err.println(e.getMessage()); System.err.println("Usage: java -jar CBIRTool.jar VLADBuilder [options]"); parser.printUsage(System.err); return; } final LocalFeatureExtractor<LocalFeature<?, ?>, MBFImage> extractor = IOUtils.readFromFile(builder.extractorFile); final List<File> localFeatures = new ArrayList<File>(); getInputFiles(localFeatures, builder.localFeaturesDir, builder.regex == null ? null : Pattern.compile(builder.regex)); final VLADIndexerDataBuilder vladBuilder = new VLADIndexerDataBuilder(extractor, localFeatures, builder.normalise, builder.numVladCentroids, builder.numIterations, 0, 0, 0, builder.sampleProp, 1, null); final VLAD<float[]> vlad = vladBuilder.buildVLAD(); IOUtils.writeToFile(vlad, builder.output); }
builder.regex == null ? null : Pattern.compile(builder.regex)); final VLADIndexerDataBuilder vladBuilder = new VLADIndexerDataBuilder(extractor, localFeatures, builder.normalise, builder.numVladCentroids, builder.numIterations, builder.numPcaDims, builder.numPqIterations, builder.numPqAssigners, builder.sampleProp, builder.pcaSampleProp, builder.postProcess); final VLADIndexerData vlad = vladBuilder.buildIndexerData();
/** * Main method * * @param args * arguments * @throws IOException * if an error occurs during reading or writing */ public static void main(String[] args) throws IOException { final VLADBuilder builder = new VLADBuilder(); final CmdLineParser parser = new CmdLineParser(builder); try { parser.parseArgument(args); } catch (final CmdLineException e) { System.err.println(e.getMessage()); System.err.println("Usage: java -jar CBIRTool.jar VLADBuilder [options]"); parser.printUsage(System.err); return; } final LocalFeatureExtractor<LocalFeature<?, ?>, MBFImage> extractor = IOUtils.readFromFile(builder.extractorFile); final List<File> localFeatures = new ArrayList<File>(); getInputFiles(localFeatures, builder.localFeaturesDir, builder.regex == null ? null : Pattern.compile(builder.regex)); final VLADIndexerDataBuilder vladBuilder = new VLADIndexerDataBuilder(extractor, localFeatures, builder.normalise, builder.numVladCentroids, builder.numIterations, 0, 0, 0, builder.sampleProp, 1, null); final VLAD<float[]> vlad = vladBuilder.buildVLAD(); IOUtils.writeToFile(vlad, builder.output); }
builder.regex == null ? null : Pattern.compile(builder.regex)); final VLADIndexerDataBuilder vladBuilder = new VLADIndexerDataBuilder(extractor, localFeatures, builder.normalise, builder.numVladCentroids, builder.numIterations, builder.numPcaDims, builder.numPqIterations, builder.numPqAssigners, builder.sampleProp, builder.pcaSampleProp, builder.postProcess); final VLADIndexerData vlad = vladBuilder.buildIndexerData();