import gradio as gr import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.models import Sequential from google.colab import drive drive.mount('/content/drive') data_dir = "/content/drive/MyDrive/Colab Notebooks/valid" img_height,img_width=180,180 batch_size=32 train_ds = tf.keras.preprocessing.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.preprocessing.image_dataset_from_directory( data_dir, validation_split=0.2, subset="validation", seed=123, image_size=(img_height, img_width), batch_size=batch_size) num_classes = 38 model = Sequential([ layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 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(num_classes,activation='softmax') ]) model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) epochs=1 history = model.fit( train_ds, validation_data=val_ds, epochs=epochs ) def predict_image(img): img_4d=img.reshape(-1,180,180,3) prediction=model.predict(img_4d)[0] return {class_names[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_image, inputs=image, outputs=label,interpretation='default').launch(share = 'True',debug='True')