Spaces:
Runtime error
Runtime error
File size: 1,950 Bytes
7014afd 4c37236 310b9dc 7014afd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# Import and class names setup
import gradio as gr
import os
import torch
from model import create_model
from timeit import default_timer as timer
from typing import Tuple, Dict
# Setup class names
with open('class_names.txt', 'r') as f:
class_names= [name.strip() for name in f.readlines()]
# Model and transforms preparation
effnet_model, effnet_transform= create_model()
# Load state dict
effnet_model.load_state_dict(torch.load(
f= 'pretrained_effnetb0_feature_extractor_brain_tumor.pth',
map_location= torch.device('cpu')
)
)
# Predict function
def predict(img)-> Tuple[Dict, float]:
# start a timer
start_time= timer()
#transform the input image for use with effnet b2
transform_image= effnet_transform(img).unsqueeze(0)
#put model into eval mode, make pred
effnet_model.eval()
with torch.inference_mode():
pred_logits= effnet_model(transform_image)
pred_prob= torch.softmax(pred_logits, dim=1)
# create a pred label and pred prob dict
pred_label_and_prob= {class_names[i]: float(pred_prob[0][i]) for i in range(len(class_names))}
# calc pred time
stop_time= timer()
pred_time= round(stop_time - start_time, 4)
# return pred dict and pred time
return pred_label_and_prob, pred_time
# create gradio app
title= 'Brain Tumor Prediction App'
description= 'A Brain Tumor Prediction App using EfficientNet-B0 Computer Vision Model for Multi-Class Tumor Classification'
article= 'Created [here](https://github.com/Monsurat-Onabajo/Brain_Tumor_Computer_Vision).'
# Create the gradio demo
demo= gr.Interface(fn= predict,
inputs=gr.Image(type='pil'),
outputs= [gr.Label(num_top_classes=5, label= 'predictions'),
gr.Number(label= 'Prediction time (S)')],
title= title,
description= description,
article= article
)
# Launch the demo
demo.launch()
|