Задать вопрос
@Roma97

Классификация изображений?

Здравствуйте товарищи!

Подскажите пожалуйста, где я допустил ошибку. Задача в классификации рентгенограмм по заболеваниям на 5 классов. Проблемы две. Первая проблема заключается в том, что точность на валидационной подвыборке почти не изменяется в течение многих эпох (фото). Вторая проблема заключается в крайне низких показателях точности, полноты и F-меры при обучении через максимизацию AUC. Код следующий:

path = '/content/X-Ray/archive/'

train_datagen = ImageDataGenerator(rescale=1./255)
valid_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)

train_gen = train_datagen.flow_from_directory(
directory=path + 'train',
target_size=(480, 480),
color_mode="grayscale",
batch_size=32,
class_mode="categorical",
shuffle=True,
seed=42
)

valid_generator = valid_datagen.flow_from_directory(
directory=path + 'val',
target_size=(480, 480),
color_mode="grayscale",
batch_size=32,
class_mode="categorical",
shuffle=True,
seed=42
)

test_generator = test_datagen.flow_from_directory(
directory=path + 'test',
target_size=(480, 480),
color_mode="grayscale",
batch_size=1,
class_mode=None,
shuffle=True,
seed=42
)

base_model = tf.keras.applications.ResNet50(include_top=False, weights=None, input_shape=img_shape, pooling='max')

model = Sequential([
base_model, # Базовая модель ResNet50
BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001),
Dense(1024, activation='relu'),
Dropout(0.5),
Dense(512, activation='relu'),
Dropout(0.5),
Dense(256, activation='relu'),
Dropout(0.5),
Dense(128, activation='relu'),
Dropout(0.5),
Dense(class_count, activation='softmax')
])

model.compile(optimizer=Adamax(learning_rate=0.001), loss='categorical_crossentropy', metrics='accuracy')

model.summary()

early_stop = EarlyStopping(monitor='val_loss', patience=15, restore_best_weights=True)
checkpoint = ModelCheckpoint("best_model.keras", monitor='val_accuracy', verbose=1, save_best_only=True, mode='max')
history = model.fit(
train_gen,
steps_per_epoch=len(train_gen),
validation_data=valid_generator,
validation_steps=len(valid_generator),
epochs=35,
verbose=1,
callbacks=[early_stop, checkpoint]
)

best_model = load_model("best_model.keras")

66bb401fa49d7226943750.png

Буду благодарен за любые подсказки.
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы