Khawalidmi's picture
added examples and other changes
90cbf36
raw
history blame contribute delete
No virus
2.54 kB
import gradio as gr
from ultralytics import YOLO
from sahi.prediction import ObjectPrediction
from sahi.utils.cv import visualize_object_predictions, read_image
from gradio.components import Slider, Image, Dropdown
def yolov8_inference(
image: Image = None,
model_path: Dropdown = None,
image_size: Slider = 640,
confidence_threshold: Slider = 0.25,
iou_threshold: Slider = 0.45,
):
model = YOLO(model_path)
model.conf = confidence_threshold
model.iou = iou_threshold
results = model.predict(image, imgsz=image_size)
object_prediction_list = []
for _, image_results in enumerate(results):
if len(image_results) != 0:
image_predictions_in_xyxy_format = image_results.boxes.data
for pred in image_predictions_in_xyxy_format:
x1, y1, x2, y2 = (
int(pred[0]),
int(pred[1]),
int(pred[2]),
int(pred[3]),
)
bbox = [x1, y1, x2, y2]
score = pred[4]
category_name = model.model.names[int(pred[5])]
category_id = pred[5]
object_prediction = ObjectPrediction(
bbox=bbox,
category_id=int(category_id),
score=score,
category_name=category_name,
)
object_prediction_list.append(object_prediction)
output_image = visualize_object_predictions(image=image, object_prediction_list=object_prediction_list)
return output_image['image']
inputs = [
"image",
Dropdown(label="Model", choices=["yolo/runs/detect/train10/weights/best.pt"], value="yolo/runs/detect/train10/weights/best.pt", visible=False),
Slider(minimum=320, maximum=1280, step=32, value=640, label="Image Size"),
Slider(minimum=0.0, maximum=1.0, step=0.05, value=0.45, label="Confidence Threshold"),
Slider(minimum=0.0, maximum=1.0, step=0.05, value=0.25, label="IOU Threshold"),
]
title = "Smartathon Pothole Challenge"
examples = [
["examples/0014.png", "yolo/runs/detect/train10/weights/best.pt", 640, 0.45, 0.25],
["examples/0055.png", "yolo/runs/detect/train10/weights/best.pt", 640, 0.45, 0.25],
["examples/0083.png", "yolo/runs/detect/train10/weights/best.pt", 640, 0.45, 0.25],
]
iface = gr.Interface(
fn=yolov8_inference,
inputs=inputs,
outputs="image",
title=title,
examples=examples,
theme="default",
)
iface.launch(debug=True)