Spaces:
Runtime error
Runtime error
| import numpy as np | |
| import gradio as gr | |
| import os | |
| import PIL | |
| import PIL.Image | |
| import tensorflow as tf | |
| import tensorflow_datasets as tfds | |
| import pathlib | |
| dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz" | |
| data_dir = tf.keras.utils.get_file(origin=dataset_url, | |
| fname='flower_photos', | |
| untar=True) | |
| data_dir = pathlib.Path(data_dir) | |
| batch_size = 32 | |
| img_height = 180 | |
| img_width = 180 | |
| train_ds = tf.keras.utils.image_dataset_from_directory( | |
| data_dir, | |
| validation_split=0.2, | |
| subset="training", | |
| seed=123, | |
| image_size=(img_height, img_width), | |
| batch_size=batch_size) | |
| val_ds = tf.keras.utils.image_dataset_from_directory( | |
| data_dir, | |
| validation_split=0.2, | |
| subset="validation", | |
| seed=123, | |
| image_size=(img_height, img_width), | |
| batch_size=batch_size) | |
| class_names = train_ds.class_names | |
| #print(class_names) | |
| normalization_layer = tf.keras.layers.Rescaling(1./255) | |
| normalized_ds = train_ds.map(lambda x, y: (normalization_layer(x), y)) | |
| image_batch, labels_batch = next(iter(normalized_ds)) | |
| first_image = image_batch[0] | |
| # Notice the pixel values are now in `[0,1]`. | |
| #print(np.min(first_image), np.max(first_image)) | |
| AUTOTUNE = tf.data.AUTOTUNE | |
| train_ds = train_ds.cache().prefetch(buffer_size=AUTOTUNE) | |
| val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE) | |
| num_classes = 5 | |
| model = tf.keras.Sequential([ | |
| tf.keras.layers.Rescaling(1./255), | |
| tf.keras.layers.Conv2D(32, 3, activation='relu'), | |
| tf.keras.layers.MaxPooling2D(), | |
| tf.keras.layers.Dropout(0.4), | |
| tf.keras.layers.Conv2D(32, 3, activation='relu'), | |
| tf.keras.layers.MaxPooling2D(), | |
| tf.keras.layers.Dropout(0.4), | |
| tf.keras.layers.Conv2D(32, 3, activation='relu'), | |
| tf.keras.layers.MaxPooling2D(), | |
| tf.keras.layers.Flatten(), | |
| tf.keras.layers.Dense(256, activation='relu'), | |
| tf.keras.layers.Dense(num_classes, activation="softmax") | |
| ]) | |
| model.compile( | |
| optimizer='adam', | |
| loss='SparseCategoricalCrossentropy', | |
| metrics=['accuracy']) | |
| model.fit( | |
| train_ds, | |
| validation_data=val_ds, | |
| epochs=5 | |
| ) | |
| def predict_input_image(img): | |
| img_4d=img.reshape(-1,180,180,3) | |
| prediction=model.predict(img_4d)[0] | |
| return {class_names[i]: float(prediction[i]*0.100) 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,title="Flowers Image Classification").launch() | |
| #pt |