CoolFace
Apppublic

mralamdari/Number-Drawings-Detector

sourceHugging Facemitupdated 3y agoView on Hugging Face
1likes
app.py60 linesDownload Raw Back to root
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()