import gradio as gr import albumentations as A from functions import * warnings.filterwarnings('ignore') # transform image test_transforms = A.Compose([ A.Resize(height=1024, width=1024, always_apply=True), A.Normalize(always_apply=True), ToTensorV2(always_apply=True),]) # select device (whether GPU or CPU) device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu') # model loading model = torch.load('pickel.pth',map_location=torch.device('cpu')) model = model.to(device) #-> Tuple[Dict, float] def predict(img) : # Start a timer start_time = timer() image = np.array(img) h,w,_ = image.shape hw = h*w if hw < 2*1024*1024: # Transform the target image and add a batch dimension #image_transformed = test_transforms() transformed = test_transforms(image= image) image_transformed = transformed["image"] image_transformed = image_transformed.unsqueeze(0) image_transformed = image_transformed.to(device) # inference model.eval() with torch.no_grad(): predictions = model(image_transformed)[0] nms_prediction = apply_nms(predictions, iou_thresh=0.1) pred = plot_img_bbox(image, nms_prediction) #pred = np.array(Image.open("pred.jpg")) word = "Number of palm trees detected : "+str(len(nms_prediction["boxes"])) # Calculate the prediction time pred_time = round(timer() - start_time, 5) # Return the prediction dictionary and prediction time return pred,word else: crop(image) locations = np.load("locations.npy") n = inference(image,locations,model,test_transforms,device) # empty_image = np.zeros(image.shape) del image gc.collect() sleep(1) word = "Number of palm trees detected : "+str(n) pred = create_new_ortho(locations,empty_image) # remove files and folders os.remove("locations.npy") shutil.rmtree("images", ignore_errors=True) shutil.rmtree("labels", ignore_errors=True) return pred,word image = gr.components.Image() out_im = gr.components.Image() out_lab = gr.components.Label() ### 4. Gradio app ### # Create title, description and article strings title = "🌴Palm trees detection🌴" description = "Faster r-cnn model to detect oil palm trees in drones images." article = "Created by data354." # Create examples list from "examples/" directory example_list = [["examples/" + example] for example in os.listdir("examples")] #[gr.Label(label="Predictions"), # what are the outputs? #gr.Number(label="Prediction time (s)")], # our fn has two outputs, therefore we have two outputs # Create examples list from "examples/" directory # Create the Gradio demo demo = gr.Interface(fn=predict, # mapping function from input to output inputs= image, #gr.Image(type="pil"), # what are the inputs? outputs=[out_im,out_lab], examples=example_list, title=title, description=description, article=article ) # Launch the demo! demo.launch(debug = True)