Spaces:
Runtime error
Runtime error
import tensorflow as tf | |
import gradio as gr | |
model = tf.keras.models.load_model('tf_model.h5') | |
print(model.summary()) | |
dogs_breeds = ['Chihuahua', | |
'Japanese spaniel', | |
'Maltese dog', | |
'Pekinese', | |
'Shih-Tzu', | |
'Blenheim spaniel', | |
'papillon', | |
'toy terrier', | |
'Rhodesian ridgeback', | |
'Afghan hound', | |
'basset', | |
'beagle', | |
'bloodhound', | |
'bluetick', | |
'black-and-tan coonhound', | |
'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-haired fox terrier', | |
'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-coated wheaten terrier', | |
'West Highland white terrier', | |
'Lhasa', | |
'flat-coated retriever', | |
'curly-coated retriever', | |
'golden retriever', | |
'Labrador retriever', | |
'Chesapeake Bay retriever', | |
'German short-haired pointer', | |
'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'] | |
def predict(filepath): | |
img = tf.io.read_file(filepath) | |
tensor = tf.io.decode_image(img, channels=3, dtype=tf.dtypes.float32) | |
tensor = tf.image.resize(tensor, [299, 299]) | |
input_tensor = tf.expand_dims(tensor, axis=0) | |
output = model.predict(input_tensor) | |
high_score = max(output[0]) | |
predicted_breed = dogs_breeds[list(output[0]).index(high_score)] | |
return predicted_breed, high_score | |
demo = gr.Interface( | |
fn=predict, | |
inputs=gr.Image(label='photo', type='filepath'), | |
outputs=[ | |
gr.Label(label="Predicted breed"), | |
gr.Label(label="Accuracy score") | |
], | |
examples=[ | |
'imgs/beethoven.jpg', | |
'imgs/belle.png', | |
'imgs/belmondo.jpg', | |
'imgs/dorothy.jpg', | |
'imgs/lassie.jpg', | |
'imgs/rintintin.jpg' | |
], | |
title="Dog breed detection", | |
description="The model was trained with [Stanford Dogs Dataset](http://vision.stanford.edu/aditya86/ImageNetDogs/) using tensorflow/keras on a fine-tuned pre-trained InceptionResNetV2 model", | |
article="You could also drag/drop other examples from [this page](https://www.rdasia.com/pets/can-you-guess-dog-breed-based-its-puppy-picture)") | |
demo.launch() |