shady4real's picture
Update app.py
bd6dcc5
# -*- coding: utf-8 -*-
"""shadman_Image_classification.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1DCVsfqR-kOz3CHdB99IT75IHBzUtIf3M
"""
import tensorflow as tf
import PIL
import matplotlib.pyplot as plt
from tensorflow.keras import layers
import os
import pathlib
flower_dataset = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
dataset_path = tf.keras.utils.get_file('flower_photos',origin=flower_dataset,untar=True)
dataset_path = pathlib.Path(dataset_path)
roses = list(dataset_path.glob('roses/*'))
daisy = list(dataset_path.glob('daisy/*'))
print(roses[1])
PIL.Image.open(roses[10])
PIL.Image.open(daisy[10])
# training the dataset
training_images = tf.keras.preprocessing.image_dataset_from_directory(
dataset_path,
subset = "training",
validation_split = 0.25,
seed = 123,
image_size = (180, 180),
batch_size = 32
)
# validation of images
validation_images = tf.keras.preprocessing.image_dataset_from_directory(
dataset_path,
subset = "validation",
validation_split = 0.25,
seed = 123,
image_size = (180, 180),
batch_size = 32
)
flower_classes = training_images.class_names
print(flower_classes)
from tensorflow.python.framework.func_graph import flatten
# if there are 5 classes then
dataset_classes = 5
from tensorflow.keras.models import Sequential
model = Sequential([
#rescaling
layers.experimental.preprocessing.Rescaling(1./255, input_shape = (180,180,3)),
layers.Conv2D(16, 3 , padding='same' , activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, padding ='same' , activation = 'relu'),
layers.MaxPooling2D(),
layers.Conv2D(64 , 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(dataset_classes, activation='softmax')
])
model.compile(
optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
mymodel = model.fit(
training_images,
validation_data=validation_images,
epochs=10
)
def predict_input_image(img):
img_4d=img.reshape(-1,180,180,3)
prediction=model.predict(img_4d)[0]
return {flower_classes[i]: float(prediction[i]) for i in range(5)}
import gradio as gr
def predict_input_image(img):
img_4d=img.reshape(-1,180,180,3)
prediction=model.predict(img_4d)[0]
return {flower_classes[i]: float(prediction[i]) for i in range(5)}
image = gr.inputs.Image(shape=(180,180))
label = gr.outputs.Label(num_top_classes=5)
gr.Interface(fn=predict_input_image, inputs=image, outputs=label,interpretation='default').launch(debug='True')