Почему model.predict(x) выводит первый класс

проблема в том, что есть нейронная сеть которая определяет по изображению легких наличие коронавируса, следовательно данная сеть имеет 2 класса 0 и 1, чистые легкие и с коронавирусом соответственно, но беда в том, что любое фоток которое я загружаю для использования его в model.predict(x) всегда выдает только первый класс, то есть 0. Подскажите пожалуйста, что делать?

import shutil
import os


# Каталог с набором данных
data_dir = 'E:\ДЖИПЛОМ\COVID-19_Radiography_Dataset'
# Каталог с данными для обучения
train_dir = 'train'
# Каталог с данными для проверки
val_dir = 'val'
# Каталог с данными для тестирования
test_dir = 'test'
# Часть набора данных для тестирования
test_data_portion = 0.15
# Часть набора данных для проверки
val_data_portion = 0.15
# Количество элементов данных в одном классе
nb_images = 3616
def create_directory(dir_name):
    if os.path.exists(dir_name):
        shutil.rmtree(dir_name)
    os.makedirs(dir_name)
    os.makedirs(os.path.join(dir_name, "Normal"))
    os.makedirs(os.path.join(dir_name, "COVID"))
create_directory(train_dir)
create_directory(val_dir)
create_directory(test_dir)

def copy_images(start_index, end_index, source_dir, dest_dir):
    for i in range(start_index, end_index):
        shutil.copy2(os.path.join(source_dir, "Normal-" + str(i) + ".png"),
                     os.path.join(dest_dir, "Normal"))
        shutil.copy2(os.path.join(source_dir, "COVID-" + str(i) + ".png"),
                      os.path.join(dest_dir, "COVID"))
start_val_data_idx = int(nb_images * (1 - val_data_portion - test_data_portion))
start_test_data_idx = int(nb_images * (1 - test_data_portion))
print(start_val_data_idx)
print(start_test_data_idx)
copy_images(0, start_val_data_idx, data_dir, train_dir)
copy_images(start_val_data_idx, start_test_data_idx, data_dir, val_dir)
copy_images(start_test_data_idx, nb_images, data_dir, test_dir)

from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
from sklearn.metrics import f1_score
import tensorflow.compat.v2 as tf
import tensorflow as tf
from tensorflow import keras
import numpy as np
import argparse
import pickle
import cv2
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing import image
from IPython.display import Image
from tensorflow.keras.preprocessing import image
import matplotlib.pyplot as plt
import numpy as np
from keras.models import load_model



# Каталог с данными для обучения
train_dir = 'train'
# Каталог с данными для проверки
val_dir = 'val'
# Каталог с данными для тестирования
test_dir = 'test'
# Размеры изображения
img_width, img_height = 299, 299
# Размерность тензора на основе изображения для входных данных в нейронную сеть
# backend Tensorflow, channels_last
input_shape = (img_width, img_height, 3)
# Количество эпох
epochs = 30
# Размер мини-выборки
batch_size = 16
# Количество изображений для обучения
nb_train_samples = 5062
# Количество изображений для проверки
nb_validation_samples = 1084
# Количество изображений для тестирования
nb_test_samples = 1084


model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (5, 5)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (7, 7)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=[tf.keras.metrics.Recall()])

datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = datagen.flow_from_directory(
    train_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='binary')
val_generator = datagen.flow_from_directory(
    val_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='binary')
test_generator = datagen.flow_from_directory(
    test_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='binary')
model.fit_generator(
    train_generator,
    steps_per_epoch=nb_train_samples // batch_size,
    epochs=epochs,
    validation_data=val_generator,
    validation_steps=nb_validation_samples // batch_size)
model.save('my_model.h5')
scores = model.evaluate_generator(test_generator, nb_test_samples // batch_size)
print("Аккуратность на тестовых данных: %.2f%%" % (scores[1]*100))

model = load_model('my_model.h5')
classes = ['Normal', 'COVID']
img_path = 'COVID-82.png'
img = image.load_img(img_path, target_size=(299, 299, 3))
# Преобразуем картинку в массив
x = image.img_to_array(img)
# Меняем форму массива в плоский вектор
x = x.reshape(299, 299, 3)
# Инвертируем изображение
x = 255 - x
# Нормализуем изображение
x /= 255
x = np.expand_dims(x, axis=0)

prediction = model.predict(x)
prediction = np.argmax(prediction)


print("Номер класса:", prediction)
print("Название класса:", classes[prediction]) ```

Ответы (0 шт):