pull_up / app.py
AlexN's picture
Update app.py
ecae1bb
import torch
import torchvision
import TractionModel as plup
import gradio as gr
def init_model(path):
model = plup.create_model()
model = plup.load_weights(model, path)
model.eval()
return model
def inference(image):
image = vanilla_transform(image).to(device).unsqueeze(0)
with torch.no_grad():
pred = model(image)
res = float(torch.sigmoid(pred[1].to("cpu")).numpy()[0])
return {'pull-up': res, 'no pull-up': 1 - res}
norm_mean = [0.485, 0.456, 0.406]
norm_std = [0.229, 0.224, 0.225]
vanilla_transform = torchvision.transforms.Compose([
torchvision.transforms.Resize(224),
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize(norm_mean, norm_std)])
model = init_model("model-score0.96-f1_10.9-f1_20.99.pt")
if torch.cuda.is_available():
device = torch.device("cuda")
else:
device = torch.device("cpu")
model = model.to(device)
examples = [['tibo.png'], ['tibo2.png'], ['real_pull_up.png'], ['no_pull_up.png'], ['doge.jpg']]
iface = gr.Interface(inference, live=True, inputs=gr.inputs.Image(source="upload", type='pil'),
outputs=gr.outputs.Label(),
examples=examples,
enable_queue=True)
iface.test_launch()
if __name__ == "__main__":
iface.launch(share=True, enable_queue=True)