полутоновый ввод для keras InceptionV3 - PullRequest
1 голос
/ 27 мая 2020

Я создал эту сеть, которая вроде работает нормально.

datagen = tf.keras.preprocessing.image.ImageDataGenerator(
    #zoom_range=0.2,
    #shear_range=0.2,
    #rotation_range=10,
    rescale=1/255,
    validation_split=0.2,
    # other things...
)

train_ds = datagen.flow_from_directory(
    data_dir,
    subset="training",
    class_mode='binary',
    target_size=target_size,
    batch_size=batch_size,
)

val_ds = datagen.flow_from_directory(
    data_dir,
    subset="validation",
    class_mode='binary',
    target_size=target_size,
    batch_size=batch_size,
)

pre_trained_model = InceptionV3(input_shape=(128,128,3),
                                include_top=False,
                                weights='imagenet')

for layer in pre_trained_model.layers:
  layer.trainable = False


global_average_layer = tf.keras.layers.GlobalAveragePooling2D()
Dl_1 = tf.keras.layers.Dropout(rate = 0.2)
prediction_layer = tf.keras.layers.Dense(1,activation='sigmoid')

model_V3 = tf.keras.Sequential([
  pre_trained_model,
  global_average_layer,
  Dl_1,
  prediction_layer
])

model_V3.compile(optimizer='adam',
                 loss='binary_crossentropy',
                 metrics=['accuracy'])

lr_reduce = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, verbose=2, mode='max')

hist = model_V3.fit(
    train_ds, 
    epochs=5,
    steps_per_epoch=len(train_ds), 
    validation_data=val_ds, 
    validation_steps=len(val_ds), 
    callbacks=[lr_reduce])

Однако проблема здесь в том, что сеть построена для изображений RGB. Мои данные - это изображения в оттенках серого. Прямо сейчас я просто копирую каналы, чтобы R, G и B получали одинаковое значение для каждого пикселя. Проблема в том, что это очень медленно и потребляет много памяти. Есть ли способ заставить сеть использовать изображения уровня серого вместо rgb? Может быть, есть еще одна предварительно обученная сеть, которая лучше классифицирует полутоновые изображения эллиптических c ячеистых структур?

1 Ответ

0 голосов
/ 28 мая 2020

При импорте InceptionV3 попробуйте следующее:

pre_trained_model = InceptionV3(input_shape=(128,128,1),
                                include_top=False,
                                weights='imagenet')

128 и 128 - физические размеры вашего изображения, а 3 (или 1 в моем случае) - это цветовые каналы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...