mralamdari/Number-Drawings-Detector
1
1import os2import numpy as np3import gradio as gr4import tensorflow as tf5 6 7model = tf.keras.models.Sequential([8 tf.keras.layers.Input(shape=(28, 28, 1)),9 tf.keras.layers.Conv2D(filters=16, kernel_size=3, strides=1, padding='same', activation='relu', input_shape=(28, 28, 1)),10 tf.keras.layers.Conv2D(filters=16, kernel_size=3, strides=1, padding='same', activation='relu'),11 tf.keras.layers.BatchNormalization(),12 tf.keras.layers.Conv2D(filters=32, kernel_size=3, strides=1, padding='same', activation='relu'),13 tf.keras.layers.Conv2D(filters=32, kernel_size=3, strides=1, padding='same', activation='relu'),14 tf.keras.layers.BatchNormalization(),15 tf.keras.layers.Conv2D(filters=64, kernel_size=3, strides=2, padding='same', activation='relu'),16 tf.keras.layers.Conv2D(filters=64, kernel_size=3, strides=2, padding='same', activation='relu'),17 tf.keras.layers.BatchNormalization(),18 tf.keras.layers.GlobalAveragePooling2D(),19 tf.keras.layers.Dense(10, activation='softmax')20])21 22model.compile(optimizer=tf.keras.optimizers.Adam(),23 loss=tf.keras.losses.CategoricalCrossentropy(),24 metrics=[tf.keras.metrics.MeanSquaredError(), tf.keras.metrics.AUC(), tf.keras.metrics.CategoricalAccuracy()])25 26model = tf.keras.models.load_model('my_model.h5', compile=False)27 28 29def classify_image(image):30 if len(np.array(image).shape) == 3:31 image = tf.image.rgb_to_grayscale(image)32 # image = np.array(image['composite'])[:, :, 3] * 25533 # image = image[..., np.newaxis]34 image_tensor = tf.convert_to_tensor(image)35 image_tensor = tf.image.resize(image_tensor, (28, 28)),36 image_tensor = tf.cast(image_tensor, tf.float32)37 image_tensor = image_tensor / 255.038 prediction = model.predict(image_tensor)39 print(prediction)40 prediction_label = str(prediction.argmax())41 return prediction_label42 43 44title = "Draw to Search"45description = "Using the power of AI to detect the number you draw!"46article = "for source code you can visit [my github](https://github.com/mralamdari)"47 48example_list = [["examples/" + example] for example in os.listdir("examples")]49 50interface = gr.Interface(fn=classify_image,51 inputs=gr.Image(type="pil"),52 # inputs=gr.Sketchpad(),53 # outputs=gr.Label(num_top_classes=3, label="Predictions"),54 outputs='text',55 examples=example_list, 56 title=title,57 description=description,58 article=article)59 60interface.launch()