import gradio as gr import numpy as np from torchvision import transforms import torch from helpers import * import sys import csv from monoscene.monoscene import MonoScene # csv.field_size_limit(sys.maxsize) torch.set_grad_enabled(False) # pipeline = pipeline(model="anhquancao/monoscene_kitti") # model = AutoModel.from_pretrained( # "anhquancao/monoscene_kitti", trust_remote_code=True, revision='bf033f87c2a86b60903ab811b790a1532c1ae313' # )#.cuda() model = MonoScene.load_from_checkpoint( "monoscene_kitti.ckpt", dataset="kitti", n_classes=20, feature = 64, project_scale = 2, full_scene_size = (256, 256, 32), ) img_W, img_H = 1220, 370 def predict(img): img = np.array(img, dtype=np.float32, copy=False) / 255.0 normalize_rgb = transforms.Compose( [ transforms.ToTensor(), transforms.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] ), ] ) img = normalize_rgb(img) batch = get_projections(img_W, img_H) batch["img"] = img for k in batch: batch[k] = batch[k].unsqueeze(0)#.cuda() pred = model(batch).squeeze() # print(pred.shape) # pred = majority_pooling(pred, k_size=2) fig = draw(pred, batch['fov_mask_1']) return fig # The output is downsampled by 2 to be able to be rendered in browsers. description = """ MonoScene Demo on SemanticKITTI Validation Set (Sequence 08), which uses the camera parameters of Sequence 08. Due to the CPU-only inference, it might take up to 20s to predict a scene. \n Darker colors represent the scenery outside the Field of View, i.e. not visible on the image.