public static PrincipalComponentAnalysis loadPCA(File f) throws IOException { final MatFileReader reader = new MatFileReader(f); final MLSingle mean = (MLSingle) reader.getContent().get("mu"); final MLSingle eigvec = (MLSingle) reader.getContent().get("proj"); final Matrix basis = new Matrix(eigvec.getM(), eigvec.getN()); final double[] meand = new double[eigvec.getN()]; for (int j = 0; j < eigvec.getN(); j++) { // meand[i] = mean.get(i,0); ignore the means meand[j] = 0; for (int i = 0; i < eigvec.getM(); i++) { basis.set(i, j, eigvec.get(i, j)); } } final PrincipalComponentAnalysis ret = new LoadedPCA(basis.transpose(), meand); return ret; }
public static void main(String[] args) throws IOException { final Map<Integer, String> database = readDatabase(); final File outbase = new File("/Users/jon/Data/lfw/matlab-fvs/"); for (int i = 1; i <= 128; i++) { final File chunk = new File( "/Users/jon/Downloads/data/lfw_aligned/SIFT_1pix_PCA64_GMM512/features/poolfv/1/", String.format( "feat_%d-v6.mat", i)); System.out.println(chunk); final MatFileReader reader = new MatFileReader(chunk); final MLSingle feats = (MLSingle) reader.getMLArray("chunk"); final MLDouble index = (MLDouble) reader.getMLArray("index"); for (int j = 0; j < index.getN(); j++) { final int id = (int) (double) index.get(0, j); final File outfile = new File(outbase, database.get(id).replace(".jpg", ".bin")); outfile.getParentFile().mkdirs(); final float[] vec = new float[feats.getM()]; for (int k = 0; k < feats.getM(); k++) { vec[k] = feats.get(k, j); } final FloatFV fv = new FloatFV(vec); IOUtils.writeBinary(outfile, fv); } } }
/** * Tests the mxSINGLE * * @throws Exception */ @Test public void testSingle() throws Exception { Float[] expected = new Float[]{1.1f, 2.2f, 3.3f}; String name = "arr"; // create MLSingle type MLSingle single = new MLSingle(name, expected, 1); assertEquals(expected[0], single.get(0)); assertEquals(expected[1], single.get(1)); assertEquals(expected[2], single.get(2)); // Test writing the MLSingle MatFileWriter writer = new MatFileWriter(); writer.write(getTempFile("singletmp.mat"), Arrays.asList((MLArray) single)); // Test reading the MLSingle MatFileReader reader = new MatFileReader(); MLSingle readSingle = (MLSingle) reader.read(getTempFile("singletmp.mat")).get("arr"); assertEquals(single, readSingle); // Test reading the MLSingle generated natively by Matlab MLSingle readSingleMatlabGenerated = (MLSingle) reader.read(getTestFile("single.mat")).get("arr"); assertEquals(single, readSingleMatlabGenerated); }
private static LargeMarginDimensionalityReduction loadMatlabPCAW() throws IOException { final LargeMarginDimensionalityReduction lmdr = new LargeMarginDimensionalityReduction(128); final MatFileReader reader = new MatFileReader(new File("/Users/jon/pcaw.mat")); final MLSingle W = (MLSingle) reader.getContent().get("proj"); lmdr.setBias(169.6264190673828); final Matrix proj = new Matrix(W.getM(), W.getN()); for (int j = 0; j < W.getN(); j++) { for (int i = 0; i < W.getM(); i++) { proj.set(i, j, W.get(i, j)); } } lmdr.setTransform(proj); return lmdr; } }
public static void main(String[] args) throws IOException { final Map<Integer, String> database = readDatabase(); final File outbase = new File("/Users/jon/Data/lfw/matlab-fvs/"); for (int i = 1; i <= 128; i++) { final File chunk = new File( "/Users/jon/Downloads/data/lfw_aligned/SIFT_1pix_PCA64_GMM512/features/poolfv/1/", String.format( "feat_%d-v6.mat", i)); System.out.println(chunk); final MatFileReader reader = new MatFileReader(chunk); final MLSingle feats = (MLSingle) reader.getMLArray("chunk"); final MLDouble index = (MLDouble) reader.getMLArray("index"); for (int j = 0; j < index.getN(); j++) { final int id = (int) (double) index.get(0, j); final File outfile = new File(outbase, database.get(id).replace(".jpg", ".bin")); outfile.getParentFile().mkdirs(); final float[] vec = new float[feats.getM()]; for (int k = 0; k < feats.getM(); k++) { vec[k] = feats.get(k, j); } final FloatFV fv = new FloatFV(vec); IOUtils.writeBinary(outfile, fv); } } }
private static LargeMarginDimensionalityReduction loadMatlabLMDR() throws IOException { final LargeMarginDimensionalityReduction lmdr = new LargeMarginDimensionalityReduction(128); final MatFileReader reader = new MatFileReader(new File("/Users/jon/lmdr.mat")); final MLSingle W = (MLSingle) reader.getContent().get("W"); final MLSingle b = (MLSingle) reader.getContent().get("b"); lmdr.setBias(b.get(0, 0)); final Matrix proj = new Matrix(W.getM(), W.getN()); for (int j = 0; j < W.getN(); j++) { for (int i = 0; i < W.getM(); i++) { proj.set(i, j, W.get(i, j)); } } lmdr.setTransform(proj); return lmdr; }
public static PrincipalComponentAnalysis loadPCA(File f) throws IOException { final MatFileReader reader = new MatFileReader(f); final MLSingle mean = (MLSingle) reader.getContent().get("mu"); final MLSingle eigvec = (MLSingle) reader.getContent().get("proj"); final Matrix basis = new Matrix(eigvec.getM(), eigvec.getN()); final double[] meand = new double[eigvec.getN()]; for (int j = 0; j < eigvec.getN(); j++) { // meand[i] = mean.get(i,0); ignore the means meand[j] = 0; for (int i = 0; i < eigvec.getM(); i++) { basis.set(i, j, eigvec.get(i, j)); } } final PrincipalComponentAnalysis ret = new LoadedPCA(basis.transpose(), meand); return ret; }
private static LargeMarginDimensionalityReduction loadMatlabLMDR() throws IOException { final LargeMarginDimensionalityReduction lmdr = new LargeMarginDimensionalityReduction(128); final MatFileReader reader = new MatFileReader(new File("/Users/jon/lmdr.mat")); final MLSingle W = (MLSingle) reader.getContent().get("W"); final MLSingle b = (MLSingle) reader.getContent().get("b"); lmdr.setBias(b.get(0, 0)); final Matrix proj = new Matrix(W.getM(), W.getN()); for (int j = 0; j < W.getN(); j++) { for (int i = 0; i < W.getM(); i++) { proj.set(i, j, W.get(i, j)); } } lmdr.setTransform(proj); return lmdr; }
private static LargeMarginDimensionalityReduction loadMatlabPCAW() throws IOException { final LargeMarginDimensionalityReduction lmdr = new LargeMarginDimensionalityReduction(128); final MatFileReader reader = new MatFileReader(new File("/Users/jon/pcaw.mat")); final MLSingle W = (MLSingle) reader.getContent().get("proj"); lmdr.setBias(169.6264190673828); final Matrix proj = new Matrix(W.getM(), W.getN()); for (int j = 0; j < W.getN(); j++) { for (int i = 0; i < W.getM(); i++) { proj.set(i, j, W.get(i, j)); } } lmdr.setTransform(proj); return lmdr; } }
private static MemoryLocalFeatureList<FloatDSIFTKeypoint> loadDSIFTPCA(String faceFile) throws IOException { final File f = new File(faceFile); final MatFileReader reader = new MatFileReader(f); final MLSingle feats = (MLSingle) reader.getContent().get("feats"); final int nfeats = feats.getN(); final MemoryLocalFeatureList<FloatDSIFTKeypoint> ret = new MemoryLocalFeatureList<FloatDSIFTKeypoint>(); for (int i = 0; i < nfeats; i++) { final FloatDSIFTKeypoint feature = new FloatDSIFTKeypoint(); feature.descriptor = new float[feats.getM()]; for (int j = 0; j < feature.descriptor.length; j++) { feature.descriptor[j] = feats.get(j, i); } ret.add(feature); } return ret; }
private static MemoryLocalFeatureList<FloatDSIFTKeypoint> loadDSIFTPCA(String faceFile) throws IOException { final File f = new File(faceFile); final MatFileReader reader = new MatFileReader(f); final MLSingle feats = (MLSingle) reader.getContent().get("feats"); final int nfeats = feats.getN(); final MemoryLocalFeatureList<FloatDSIFTKeypoint> ret = new MemoryLocalFeatureList<FloatDSIFTKeypoint>(); for (int i = 0; i < nfeats; i++) { final FloatDSIFTKeypoint feature = new FloatDSIFTKeypoint(); feature.descriptor = new float[feats.getM()]; for (int j = 0; j < feature.descriptor.length; j++) { feature.descriptor[j] = feats.get(j, i); } ret.add(feature); } return ret; }
private static MixtureOfGaussians loadMoG() throws IOException { final File f = new File(GMM_MATLAB_FILE); final MatFileReader reader = new MatFileReader(f); final MLStructure codebook = (MLStructure) reader.getContent().get("codebook"); final MLSingle mean = (MLSingle) codebook.getField("mean"); final MLSingle variance = (MLSingle) codebook.getField("variance"); final MLSingle coef = (MLSingle) codebook.getField("coef"); final int n_gaussians = mean.getN(); final int n_dims = mean.getM(); final MultivariateGaussian[] ret = new MultivariateGaussian[n_gaussians]; final double[] weights = new double[n_gaussians]; for (int i = 0; i < n_gaussians; i++) { weights[i] = coef.get(i, 0); final DiagonalMultivariateGaussian d = new DiagonalMultivariateGaussian(n_dims); for (int j = 0; j < n_dims; j++) { d.mean.set(0, j, mean.get(j, i)); d.variance[j] = variance.get(j, i); } ret[i] = d; } return new MixtureOfGaussians(ret, weights); }
public static MixtureOfGaussians loadMoG(File f) throws IOException { final MatFileReader reader = new MatFileReader(f); final MLStructure codebook = (MLStructure) reader.getContent().get("codebook"); final MLSingle mean = (MLSingle) codebook.getField("mean"); final MLSingle variance = (MLSingle) codebook.getField("variance"); final MLSingle coef = (MLSingle) codebook.getField("coef"); final int n_gaussians = mean.getN(); final int n_dims = mean.getM(); final MultivariateGaussian[] ret = new MultivariateGaussian[n_gaussians]; final double[] weights = new double[n_gaussians]; for (int i = 0; i < n_gaussians; i++) { weights[i] = coef.get(i, 0); final DiagonalMultivariateGaussian d = new DiagonalMultivariateGaussian(n_dims); for (int j = 0; j < n_dims; j++) { d.mean.set(0, j, mean.get(j, i)); d.variance[j] = variance.get(j, i); } ret[i] = d; } return new MixtureOfGaussians(ret, weights); }
private static MixtureOfGaussians loadMoG() throws IOException { final File f = new File(GMM_MATLAB_FILE); final MatFileReader reader = new MatFileReader(f); final MLStructure codebook = (MLStructure) reader.getContent().get("codebook"); final MLSingle mean = (MLSingle) codebook.getField("mean"); final MLSingle variance = (MLSingle) codebook.getField("variance"); final MLSingle coef = (MLSingle) codebook.getField("coef"); final int n_gaussians = mean.getN(); final int n_dims = mean.getM(); final MultivariateGaussian[] ret = new MultivariateGaussian[n_gaussians]; final double[] weights = new double[n_gaussians]; for (int i = 0; i < n_gaussians; i++) { weights[i] = coef.get(i, 0); final DiagonalMultivariateGaussian d = new DiagonalMultivariateGaussian(n_dims); for (int j = 0; j < n_dims; j++) { d.mean.set(0, j, mean.get(j, i)); d.variance[j] = variance.get(j, i); } ret[i] = d; } return new MixtureOfGaussians(ret, weights); }
public static MixtureOfGaussians loadMoG(File f) throws IOException { final MatFileReader reader = new MatFileReader(f); final MLStructure codebook = (MLStructure) reader.getContent().get("codebook"); final MLSingle mean = (MLSingle) codebook.getField("mean"); final MLSingle variance = (MLSingle) codebook.getField("variance"); final MLSingle coef = (MLSingle) codebook.getField("coef"); final int n_gaussians = mean.getN(); final int n_dims = mean.getM(); final MultivariateGaussian[] ret = new MultivariateGaussian[n_gaussians]; final double[] weights = new double[n_gaussians]; for (int i = 0; i < n_gaussians; i++) { weights[i] = coef.get(i, 0); final DiagonalMultivariateGaussian d = new DiagonalMultivariateGaussian(n_dims); for (int j = 0; j < n_dims; j++) { d.mean.set(0, j, mean.get(j, i)); d.variance[j] = variance.get(j, i); } ret[i] = d; } return new MixtureOfGaussians(ret, weights); }