private static HardAssigner<byte[], float[], IntFloatPair> trainQuantiser( GroupedDataset<String, ListDataset<Record<FImage>>, Record<FImage>> sample, PyramidDenseSIFT<FImage> pdsift) { List<LocalFeatureList<ByteDSIFTKeypoint>> allkeys = new ArrayList<LocalFeatureList<ByteDSIFTKeypoint>>(); for (final Record<FImage> rec : sample) { final FImage img = rec.getImage(); pdsift.analyseImage(img); allkeys.add(pdsift.getByteKeypoints(0.005f)); } if (allkeys.size() > 10000) allkeys = allkeys.subList(0, 10000); final ByteKMeans km = ByteKMeans.createKDTreeEnsemble(300); final DataSource<byte[]> datasource = new LocalFeatureListDataSource<ByteDSIFTKeypoint, byte[]>(allkeys); final ByteCentroidsResult result = km.cluster(datasource); return result.defaultHardAssigner(); } }
final ByteKMeans kmeans = ByteKMeans.createKDTreeEnsemble(200);