davegenu/Imagenette_Image_Classifier
0
1import gradio as gr2import torch3from torchvision import transforms4from fastai.vision.all import load_learner5from PIL import Image6 7learn = load_learner("imagenette_classifier.pkl")8 9_tfms = transforms.Compose([10 transforms.Resize(460),11 transforms.CenterCrop(224),12 transforms.ToTensor(),13 transforms.Normalize(mean=[0.485, 0.456, 0.406],14 std=[0.229, 0.224, 0.225]),15])16 17def predict(filepath):18 img = Image.open(filepath).convert("RGB")19 tensor = _tfms(img).unsqueeze(0)20 learn.model.eval()21 with torch.no_grad():22 preds = learn.model(tensor)23 probs = torch.softmax(preds, dim=1)[0]24 return {str(learn.dls.vocab[i]): float(probs[i]) for i in range(len(learn.dls.vocab))}25 26gr.Interface(27 fn=predict,28 inputs=gr.Image(type="filepath"),29 outputs=gr.Label(num_top_classes=5),30 title="Imagenette Image Classifier",31 description=(32 "Upload an image and the model will classify it into one of 10 categories: "33 "Tench, English Springer, Cassette Player, Chain Saw, Church, "34 "French Horn, Garbage Truck, Gas Pump, Golf Ball, Parachute.\n\n"35 "Model: ResNet50 fine-tuned on Imagenette — 99.59% validation accuracy."36 ),37).launch()38 39 40 