Я пытаюсь классифицировать несколько изображений одновременно в одном каталоге, используя InceptionV3. Мне удалось извлечь узкие места, используя метод потока из каталога, и получить результаты прогнозов в виде массива.
Мой вопрос заключается в том, как узнать, к какому изображению относится каждое предсказание, поскольку они не соответствуют порядку в массиве. Я пытался извлечь классы с помощью generator_top.classes, но он берет их из имени каталога, в котором находятся изображения. Я вижу, что все прогнозы верны (те объекты, которые находятся на изображениях, те, которые получены в исходном массиве). Я бы только понял, как их сравнивать.
Кроме того, я использовал этот подход при тестировании изображений на большом тестовом образце (были папки с каждым классом и изображениями в них), и все прогнозы в массиве былиотображаются в порядке папок в тестовом каталоге, но когда я пытаюсь сделать это из одного и того же каталога с разными классами, я не могу сравнить прогнозы с изображениями.
from keras import applications
base_model = applications.InceptionV3(include_top=False, weights='imagenet')
res_model = Sequential()
res_model.add(GlobalAveragePooling2D(input_shape=train_data.shape[1:]))
res_model.add(Dense(17, activation='softmax'))
datagen=ImageDataGenerator(rescale=1./255)
generator = datagen.flow_from_directory(
test_path,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode=None,
shuffle=False)
nb_test_samples = len(generator.filenames) #17
predict_size_test = int(math.ceil(nb_test_samples/batch_size)) #2
bottleneck_features_test = base_model.predict_generator( generator,
predict_size_test, verbose=1)
np.save('bottleneck_features_test_10000inc.npy', bottleneck_features_test)
generator = datagen.flow_from_directory(
test_path,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode=None,
shuffle=False)
nb_test_samples = len(generator_top.filenames)
test_data = np.load('bottleneck_features_test_10000inc.npy')
test_labels = generator_top.classes
test_labels = to_categorical(test_labels, num_classes=17)
tr_predictions=[np.argmax(res_model.predict(np.expand_dims(feature,axis=0)))for feature in test_data]