Spaces:
Sleeping
Sleeping
import pandas as pd | |
import numpy as np | |
import tensorflow as tf | |
# classes: | |
classes = [ | |
'car', | |
'house', | |
'wine bottle', | |
'chair', | |
'table', | |
'tree', | |
'camera', | |
'fish', | |
'rain', | |
'clock', | |
'hat' | |
] | |
# labels : | |
labels = { | |
'car': 0, | |
'house': 1, | |
'wine bottle': 2, | |
'chair': 3, | |
'table': 4, | |
'tree': 5, | |
'camera': 6, | |
'fish': 7, | |
'rain': 8, | |
'clock': 9, | |
'hat': 10 | |
} | |
num_classes = len(classes) | |
# load the model: | |
from keras.models import load_model | |
model = load_model('sketch_recogination_model_cnn.h5') | |
# Predict function for interface: | |
def predict_fn(image): | |
# preprocessing the size: | |
resized_image = tf.image.resize(image, (28, 28)) # Resize image to (28, 28) | |
grayscale_image = tf.image.rgb_to_grayscale(resized_image) # Convert image to grayscale | |
image = np.array(grayscale_image) | |
# model requirements: | |
image = image.reshape(1,28,28,1) | |
label = tf.constant(model.predict(image).reshape(num_classes)) # giving 2D output so 1D | |
# predict: | |
predicted_index = tf.argmax(label) | |
class_name = [name for name, index in labels.items() if predicted_index == index][0] | |
return class_name | |
# application interface: | |
import gradio as gr | |
gr.Interface(fn=predict_fn, inputs="paint", outputs="label", title="DoodleDecoder", description="Draw something from: Car, House, Wine bottle, Chair, Table, Tree, Camera, Fish, Rain, Clock, Hat", interpretation='default', article="Draw large with thick stroke.").launch() | |