|
import gradio as gr |
|
import numpy as np |
|
import tensorflow as tf |
|
|
|
class_names = ['Chihuahua', |
|
'Japanese spaniel', |
|
'Maltese dog', |
|
'Pekinese', |
|
'Shih', |
|
'Blenheim spaniel', |
|
'papillon', |
|
'toy terrier', |
|
'Rhodesian ridgeback', |
|
'Afghan hound', |
|
'basset', |
|
'beagle', |
|
'bloodhound', |
|
'bluetick', |
|
'black', |
|
'Walker hound', |
|
'English foxhound', |
|
'redbone', |
|
'borzoi', |
|
'Irish wolfhound', |
|
'Italian greyhound', |
|
'whippet', |
|
'Ibizan hound', |
|
'Norwegian elkhound', |
|
'otterhound', |
|
'Saluki', |
|
'Scottish deerhound', |
|
'Weimaraner', |
|
'Staffordshire bullterrier', |
|
'American Staffordshire terrier', |
|
'Bedlington terrier', |
|
'Border terrier', |
|
'Kerry blue terrier', |
|
'Irish terrier', |
|
'Norfolk terrier', |
|
'Norwich terrier', |
|
'Yorkshire terrier', |
|
'wire', |
|
'Lakeland terrier', |
|
'Sealyham terrier', |
|
'Airedale', |
|
'cairn', |
|
'Australian terrier', |
|
'Dandie Dinmont', |
|
'Boston bull', |
|
'miniature schnauzer', |
|
'giant schnauzer', |
|
'standard schnauzer', |
|
'Scotch terrier', |
|
'Tibetan terrier', |
|
'silky terrier', |
|
'soft', |
|
'West Highland white terrier', |
|
'Lhasa', |
|
'flat', |
|
'curly', |
|
'golden retriever', |
|
'Labrador retriever', |
|
'Chesapeake_Bay retriever', |
|
'German short', |
|
'vizsla', |
|
'English setter', |
|
'Irish setter', |
|
'Gordon setter', |
|
'Brittany spaniel', |
|
'clumber', |
|
'English springer', |
|
'Welsh springer spaniel', |
|
'cocker spaniel', |
|
'Sussex spaniel', |
|
'Irish water spaniel', |
|
'kuvasz', |
|
'schipperke', |
|
'groenendael', |
|
'malinois', |
|
'briard', |
|
'kelpie', |
|
'komondor', |
|
'Old English sheepdog', |
|
'Shetland_sheepdog', |
|
'collie', |
|
'Border collie', |
|
'Bouvier des Flandres', |
|
'Rottweiler', |
|
'German shepherd', |
|
'Doberman', |
|
'miniature pinscher', |
|
'Greater Swiss Mountain dog', |
|
'Bernese mountain dog', |
|
'Appenzeller', |
|
'EntleBucher', |
|
'boxer', |
|
'bull mastiff', |
|
'Tibetan mastiff', |
|
'French bulldog', |
|
'Great Dane', |
|
'Saint Bernard', |
|
'Eskimo dog', |
|
'malamute', |
|
'Siberian husky', |
|
'affenpinscher', |
|
'basenji', |
|
'pug', |
|
'Leonberg', |
|
'Newfoundland', |
|
'Great Pyrenees', |
|
'Samoyed', |
|
'Pomeranian', |
|
'chow', |
|
'keeshond', |
|
'Brabancon griffon', |
|
'Pembroke', |
|
'Cardigan', |
|
'toy poodle', |
|
'miniature poodle', |
|
'standard poodle', |
|
'Mexican hairless', |
|
'dingo', |
|
'dhole', |
|
'African hunting dog'] |
|
|
|
interpreter = tf.lite.Interpreter(model_path="converted_dog_model.tflite") |
|
interpreter.allocate_tensors() |
|
input_details = interpreter.get_input_details() |
|
output_details = interpreter.get_output_details() |
|
|
|
|
|
def predict(img): |
|
|
|
interpreter.set_tensor(input_details[0]['index'], np.expand_dims(img/255., axis = 0).astype(np.float32)) |
|
interpreter.invoke() |
|
pred = interpreter.get_tensor(output_details[0]['index']) |
|
|
|
if len(pred[0]) > 1: |
|
pred_class = class_names[tf.argmax(pred[0])] |
|
else: |
|
pred_class = class_names[int(tf.round(pred[0]))] |
|
|
|
return f"Your dog breed is {pred_class}." |
|
|
|
|
|
demo = gr.Interface(fn=predict, inputs=gr.Image(shape=(224, 224)), outputs=gr.Label(num_top_classes=3), css="body {background-color: transparent}") |
|
|
|
demo.launch() |