import gradio as gr import numpy as np import torch from modality_lstm import ModalityLSTM import torch.nn as nn from helper import score_to_modality from PIL import Image label_mapping = { 'car': [0,'images/Cars.jpg'], 'walk': [1,'images/walk.jpg'], 'bus': [2,'images/bus.jpg'], 'train': [3,'images/train.jpg'], 'subway': [4,'images/subway.jpg'], 'bike': [5,'images/bike.jpg'], 'run': [6,'images/walk.jpg'], 'boat': [7,'images/walk.jpg'], 'airplane': [8,'images/walk.jpg'], 'motorcycle': [9,'images/walk.jpg'], 'taxi': [10,'images/taxi.jpg'] } def pred(dist,speed,accel,timedelta,jerk,bearing,bearing_rate): batch_size = 1 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") train_on_gpu = False output_size = 5 hidden_dim = 128 trip_dim = 7 n_layers = 2 drop_prob = 0.2 net = ModalityLSTM(trip_dim, output_size, batch_size, hidden_dim, n_layers, train_on_gpu, drop_prob, lstm_drop_prob=0.2) net.load_state_dict(torch.load("Model_Wieghts",map_location=torch.device('cpu'))) net.eval() a=torch.tensor([[dist,speed,accel,timedelta,jerk,bearing,bearing_rate]]) a=a.float() a=a.unsqueeze(0) l = torch.tensor([1]).long() b,c=net(a,l) b=b.squeeze(0) b=score_to_modality(b) b=b[0] print(b) for k,v in label_mapping.items(): if b == v[0]: return (str(k),Image.open(v[1])) def greet(name): return "Hello " + name + "!!" iface = gr.Interface(fn=pred, inputs=['number',"number","number",'number',"number","number","number"], outputs=["text",gr.outputs.Image(type="pil")]) iface.launch()