Spaces:
Sleeping
Sleeping
| import torch | |
| import gradio as gr | |
| from PIL import Image | |
| from model import get_model, apply_weights, copy_weight | |
| from transform import crop, pad, gpu_crop | |
| from torchvision.transforms import Normalize, ToTensor | |
| # Vocab | |
| vocab = [ | |
| 'Abyssinian', 'Bengal', 'Birman', | |
| 'Bombay', 'British_Shorthair', | |
| 'Egyptian_Mau', 'Maine_Coon', | |
| 'Persian', 'Ragdoll', 'Russian_Blue', | |
| 'Siamese', 'Sphynx', 'american_bulldog', | |
| 'american_pit_bull_terrier', 'basset_hound', | |
| 'beagle', 'boxer', 'chihuahua', 'english_cocker_spaniel', | |
| 'english_setter', 'german_shorthaired', | |
| 'great_pyrenees', 'havanese', | |
| 'japanese_chin', 'keeshond', | |
| 'leonberger', 'miniature_pinscher', 'newfoundland', | |
| 'pomeranian', 'pug', 'saint_bernard', 'samoyed', | |
| 'scottish_terrier', 'shiba_inu', 'staffordshire_bull_terrier', | |
| 'wheaten_terrier', 'yorkshire_terrier' | |
| ] | |
| model = get_model() | |
| state = torch.load('exported_model.pth', map_location="cpu") | |
| apply_weights(model, state, copy_weight) | |
| to_tensor = ToTensor() | |
| norm = Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) | |
| def classify_image(inp): | |
| inp = Image.fromarray(inp) | |
| transformed_input = pad(crop(inp, (460, 460)), (460, 460)) | |
| transformed_input = to_tensor(transformed_input).unsqueeze(0) | |
| transformed_input = gpu_crop(transformed_input, (224, 224)) | |
| transformed_input = norm(transformed_input) | |
| model.eval() | |
| with torch.no_grad(): | |
| pred = model(transformed_input) | |
| pred = torch.argmax(pred, dim=1) | |
| return vocab[pred] | |
| iface = gr.Interface( | |
| fn=classify_image, | |
| inputs=gr.inputs.Image(), | |
| outputs="text", | |
| title="NO Fastai Classifier", | |
| description="An example of not using Fastai in Gradio.", | |
| ).launch() |