Spaces:
Sleeping
Sleeping
import gradio as gr | |
import cv2 | |
from geti_sdk.deployment import Deployment | |
from geti_sdk.utils import show_image_with_annotation_scene | |
import numpy as np | |
from urllib.request import urlopen | |
import re | |
# Step 1: Load the deployment | |
deployment = Deployment.from_folder("deployment") | |
deployment.load_inference_models(device="CPU") | |
def is_valid_url(url): | |
pattern = r'^(https?|ftp)://[^\s/$.?#].[^\s]*$' | |
return re.match(pattern, url) is not None | |
def resize_image(image, target_dimension): | |
height, width = image.shape[:2] | |
max_dimension = max(height, width) | |
scale_factor = target_dimension / max_dimension | |
new_width = int(width * scale_factor) | |
new_height = int(height * scale_factor) | |
resized_image = cv2.resize(image, (new_width, new_height)) | |
return resized_image | |
def infer(image=None, url:str=None): | |
if image is None and url is None: | |
return [None,'Error: No image or URL provided'] | |
if image is None: | |
if isinstance(url, str): | |
if not is_valid_url(url): | |
return [None,'Error: URL appears to be invalid'] | |
req = urlopen(url) | |
arr = np.asarray(bytearray(req.read()), dtype=np.uint8) | |
image = cv2.imdecode(arr, -1) | |
if image is None: | |
return [None, f'Error: Unable to fetch image from {url}'] | |
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) | |
image = resize_image(image, 1200) | |
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) | |
prediction = deployment.infer(image) | |
output = show_image_with_annotation_scene(cv2.cvtColor(image, cv2.COLOR_BGR2RGB), prediction, show_results=False) | |
output = cv2.cvtColor(output, cv2.COLOR_BGR2RGB) | |
return [output, prediction.overview] | |
interface = gr.Interface(fn=infer, | |
inputs=['image', 'text'], | |
outputs=['image','text'], | |
allow_flagging='manual', | |
flagging_dir='flagged', | |
examples=[["eggsample1.jpg", ""], | |
["eggsample2.jpg",""], | |
[None,"https://upload.wikimedia.org/wikipedia/commons/f/f9/Eastern_Phoebe-nest-Brown-headed-Cowbird-egg.jpg"], | |
[None,"https://upload.wikimedia.org/wikipedia/commons/7/72/White-breasted_Woodswallow_chicks_in_nest.jpg"], | |
]) | |
interface.launch() | |