Я обучил CNN на изображениях 100x120, создав следующие генераторы:
train_datagen = ImageDataGenerator(
rescale = 1. / 255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(
rescale=1/255)
#Apply them
train_generator = train_datagen.flow_from_directory(
directory = train_data_dir,
target_size=(parameters["img_width"], parameters["img_height"]),
batch_size = parameters["batch_size"],
class_mode= "categorical",
subset = "training",
color_mode = "rgb",
seed = 42)
test_generator = test_datagen.flow_from_directory(
directory = test_data_dir,
target_size = (parameters["img_width"], parameters["img_height"]),
color_mode = "rgb",
batch_size=1,
class_mode = None,
shuffle = False,
seed = 41)
Следовательно, я проверяю характеристики на разных изображениях следующим образом:
# Method 1
test_generator.reset()
pred = model.predict_generator(test_generator,verbose = 1, steps = 1)
predicted_class_indices = np.argmax(pred, axis = 1)
# Convert the dictionary
labels = (train_generator.class_indices)
labels = dict((v,k) for k,v in labels.items())
predictions = [labels[k] for k in predicted_class_indices]
Однако, если я хочучтобы сгенерировать прогноз на том же изображении, используя:
# Method 2
crop_img = cv2.resize(img,(100, 120))
crop_img = np.reshape(crop_img,[1, 100, 120, 3])
crop_img = crop_img.astype('float32')
crop_img /= 255
# ID
pred = model.predict(crop_img)
predicted_class_indices = np.argmax(pred, axis = 1)
prediction = [labels[k] for k in predicted_class_indices]
Я получаю другой результат. С чем это может быть связано?