def evaluate(model_root, model, images, image_size, seed, top_n=None): imagegen = image.ImageDataGenerator() test_gen = image.DirectoryIterator(os.path.join(images, 'testing'), imagegen, target_size=(image_size, image_size), seed=seed, shuffle=True) # Get classes sorted by their value classes = [ x[0] for x in sorted(test_gen.class_indices.items(), key=lambda x: x[1]) ] metrics_path = model_root.with_name(model_root.name + "_metrics.csv") cm_path = model_root.with_name(model_root.name + "_cm.png") metrics, _, _ = score_keras.evaluate_model(model, test_gen, classes, metrics_path, cm_path, top_n=top_n) class_map = model_root.with_name(model_root.name + "_classes.csv") try: with class_map.open('w', encoding='utf-8') as cmfp: cmfp.write('Class,ID\n') for i, c in enumerate(classes): cmfp.write('"{}",{}\n'.format(c, i)) except: logger.warn('Failed to write class map file.') return classes, cm_path, metrics
def evaluate(model_root, model, images, image_size, num_batches, seed, top_n=None): imagegen = image.ImageDataGenerator() test_gen = image.DirectoryIterator(os.path.join(images, 'testing'), imagegen, target_size=(image_size, image_size), seed=seed, shuffle=True) # Get classes sorted by their value classes = [ x[0] for x in sorted(test_gen.class_indices.items(), key=lambda x: x[1]) ] metrics_path = model_root + "_metrics.csv" cm_path = model_root + "_cm.png" metrics, _, _ = score_keras.evaluate_model(model, test_gen, classes, num_batches, metrics_path, cm_path, top_n=top_n) return classes, cm_path, metrics