OpenImaj: EigenImages, размер входных изображений не может быть разницей?
VFSGroupDataset<FImage> dataset = new VFSGroupDataset<FImage>(
"zip:file:/Users/nhnguyen/Data/newArchive.zip",
ImageUtilities.FIMAGE_READER);
int nTraining = 50;
int nTesting = 5;
GroupedRandomSplitter<String, FImage> splits =
new GroupedRandomSplitter<String, FImage>(dataset, nTraining, 0, nTesting);
GroupedDataset<String, ListDataset<FImage>, FImage> training = splits.getTrainingDataset();
GroupedDataset<String, ListDataset<FImage>, FImage> testing = splits.getTestDataset();
List<FImage> basisImages = DatasetAdaptors.asList(training);
int nEigenvectors = 100;
EigenImages eigen = new EigenImages(nEigenvectors);
eigen.train(basisImages);
У меня есть приведенный выше код для тестирования учебника EigenImages с моим собственным набором данных. Я застрял в том, что он выдаст исключение с матрицей, если в моем наборе данных будут изображения разных размеров, скажем, 92x112 и 100x100 и т. Д. Когда я делаю пакетное изменение размера до того же размера, оно работает, однако Это немного искажает изображение, которое, как я беспокоюсь, повлияет на точность. Есть ли возможность обучить собственное распознавание воспринимать входные данные в различных измерениях?
1 ответ
Нет, подход Eigenfaces по своей природе требует, чтобы все изображения были одинакового размера и также были, по крайней мере, приблизительно выровнены (то есть, с одинаковой ориентацией, глаза примерно в одном и том же месте).
Однако вы можете автоматизировать масштабирование и выравнивание, используя одну из реализаций OpenIMAJ FaceAligner.