File size: 2,343 Bytes
aeeb601 afc670e b6d54f1 b0e1d53 aeeb601 fee70a2 aeeb601 c134122 b6d54f1 be96225 b6d54f1 be96225 6dedfce c134122 b6d54f1 c134122 b6d54f1 c134122 afc670e 21c6654 afc670e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
import gradio as gr
import matplotlib.pyplot as plt
from PIL import Image
from ultralyticsplus import YOLO, render_result
import cv2
import numpy as np
model = YOLO('best (1).pt')
def response(image):
print(image)
results = model(image)
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot()
im_rgb = im_bgr[..., ::-1] # Convert BGR to RGB
# im_rgb = Image.fromarray(im_rgb)
return im_rgb
def yoloV8_func(image: gr.Image = None,
image_size: gr.Slider = 640,
conf_threshold: gr.Slider = 0.4,
iou_threshold: gr.Slider = 0.50):
# Perform object detection on the input image using the YOLOv8 model
results = model.predict(image,
conf=conf_threshold,
iou=iou_threshold,
imgsz=image_size)
# Print the detected objects' information (class, coordinates, and probability)
box = results[0].boxes
print("Object type:", box.cls)
print("Coordinates:", box.xyxy)
print("Probability:", box.conf)
# Render the output image with bounding boxes around detected objects
render = render_result(model=model, image=image, result=results[0], rect_th = 4, text_th = 4)
return render
inputs = [
gr.Image(type="filepath", label="Input Image"),
gr.Slider(minimum=320, maximum=1280, value=640,
step=32, label="Image Size"),
gr.Slider(minimum=0.0, maximum=1.0, value=0.25,
step=0.05, label="Confidence Threshold"),
gr.Slider(minimum=0.0, maximum=1.0, value=0.45,
step=0.05, label="IOU Threshold"),
]
outputs = gr.Image(type="filepath", label="Output Image")
title = "YOLOv8 Custom Object Detection by Uyen Nguyen"
examples = [['one.jpg', 900, 0.5, 0.8],
['two.jpg', 1152, 0.05, 0.05],
['three.jpg', 1024, 0.25, 0.25],
['four.jpg', 832, 0.3, 0.3]]
yolo_app = gr.Interface(
fn=yoloV8_func,
inputs=inputs,
outputs=outputs,
title=title,
examples=examples,
cache_examples=True,
)
# Launch the Gradio interface in debug mode with queue enabled
yolo_app.launch(debug=True, share=True)
iface = gr.Interface(fn=response, inputs="image", outputs="image")
iface.launch() |