test / app.py
GiladtheFixer's picture
Create app.py
e627823
import os
from keras.models import Model
from tensorflow.keras.optimizers import Adam
from keras.applications.vgg16 import VGG16, preprocess_input
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ModelCheckpoint, EarlyStopping
from keras.layers import Dense, Dropout, Flatten
from pathlib import Path
import numpy as np
BATCH_SIZE = 64
train_generator = ImageDataGenerator(rotation_range=90,
brightness_range=[0.1, 0.7],
width_shift_range=0.5,
height_shift_range=0.5,
horizontal_flip=True,
vertical_flip=True,
validation_split=0.15,
preprocessing_function=preprocess_input) # VGG16 preprocessing
test_generator = ImageDataGenerator(preprocessing_function=preprocess_input) # VGG16 preprocessing
train_data_dir = '/kaggle/input/pic-a-plant2/DBa4/‏‏DBa/train'
test_data_dir = '/kaggle/input/pic-a-plant2/DBa4/‏‏DBa/test'
class_subset = sorted(os.listdir(train_data_dir))[:] # Using only the first 10 classes
traingen = train_generator.flow_from_directory(train_data_dir,
target_size=(150, 150),
class_mode='categorical',
classes=class_subset,
subset='training',
batch_size=BATCH_SIZE,
shuffle=True,
seed=42)
validgen = train_generator.flow_from_directory(train_data_dir,
target_size=(150, 150),
class_mode='categorical',
classes=class_subset,
subset='validation',
batch_size=BATCH_SIZE,
shuffle=True,
seed=42)
testgen = test_generator.flow_from_directory(test_data_dir,
target_size=(150, 150),
class_mode=None,
classes=class_subset,
batch_size=1,
shuffle=False,
seed=42)