xp-tear / app.py
MedicalAILabo's picture
Update app.py
af473ac
import torch
import torch.nn as nn
import torchvision.transforms as transforms
from efficientnet_pytorch import EfficientNet
import pandas as pd
import gradio as gr
test_weight = './weight.pt'
model = EfficientNet.from_name('efficientnet-b0')
model._fc = nn.Linear(model._fc.in_features, out_features=2)
weight = torch.load(test_weight)
model.load_state_dict(weight)
model.to('cpu')
def convert_image(image):
transformations = [transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
]
transform = transforms.Compose(transformations)
image = transform(image)
return image
def test_classification(input_img):
model.eval()
with torch.no_grad():
image = convert_image(input_img)
image = image.unsqueeze(0)
outputs = model(image)
likelihood_ratio = nn.functional.softmax(outputs, dim=1)
df_likelihood = pd.DataFrame(likelihood_ratio.detach().numpy()).rename(columns={1:'Likelihood'})[['Likelihood']]
likelihood = df_likelihood.at[0,'Likelihood']
if likelihood > 0.052569367:
results = 'Positive'
elif likelihood <= 0.052569367:
results = 'Negative'
df_results = pd.DataFrame([results],columns=['results'])
return df_results
iface = gr.Interface(fn=test_classification, inputs=gr.inputs.Image(type="pil"), outputs="dataframe")
iface.launch()