My solution for 93.75 val accuracy on the medical dataset.
"""
download dataset from
https://www.kaggle.com/paultimothymooney/kermany2018
"""
import os
from tensorflow.keras.applications import ResNet50
from tensorflow.keras.models import Sequential
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Flatten, Dense
from tensorflow.keras.optimizers import Adam
# use train and val out of these
root_dir = '/media/auro/RAID 5/medical/OCT2017 '
train_dir = os.path.join(root_dir, 'train')
val_dir = os.path.join(root_dir, 'val')
nb_classes = 4
train_gen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_gen.flow_from_directory(train_dir,
target_size=(256, 256),
batch_size=64,
class_mode='categorical',
shuffle=True)
val_gen = ImageDataGenerator(rescale=1. / 255)
val_generator = val_gen.flow_from_directory(val_dir,
target_size=(256, 256),
batch_size=64,
class_mode='categorical')
rn50_model = ResNet50(include_top=False,
weights='imagenet',
input_shape=(256, 256, 3))
for layer in rn50_model.layers[:143]:
layer.trainable = False
for i, layer in enumerate(rn50_model.layers):
print(i, layer.name, layer.trainable)
model = Sequential()
model.add(rn50_model)
model.add(Flatten())
model.add(Dense(nb_classes, activation='softmax'))
optimizer = Adam(0.0001)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit_generator(train_generator, epochs=10, validation_data=val_generator, verbose=1)