Interactieve objectdetectie: Gradio & Ultralytics YOLOv8 🚀
Inleiding tot interactieve objectdetectie
Deze Gradio-interface biedt een eenvoudige en interactieve manier om objectdetectie uit te voeren met behulp van het Ultralytics YOLOv8 model. Gebruikers kunnen afbeeldingen uploaden en parameters als vertrouwensdrempel en intersectie-over-eenheid (IoU) drempel aanpassen om realtime detectieresultaten te krijgen.
Waarom Gradio gebruiken voor objectdetectie?
- Gebruiksvriendelijke interface: Gradio biedt een eenvoudig platform voor gebruikers om afbeeldingen te uploaden en detectieresultaten te visualiseren zonder enige codeerbehoefte.
- Aanpassingen in realtime: Parameters zoals betrouwbaarheid en IoU-drempels kunnen direct worden aangepast, waardoor directe feedback en optimalisatie van detectieresultaten mogelijk is.
- Brede toegankelijkheid: De Gradio webinterface is voor iedereen toegankelijk, waardoor het een uitstekend hulpmiddel is voor demonstraties, onderwijsdoeleinden en snelle experimenten.
De Gradio installeren
De interface gebruiken
- Afbeelding uploaden: Klik op 'Afbeelding uploaden' om een afbeeldingsbestand te kiezen voor objectdetectie.
- Parameters aanpassen:
- Vertrouwensdrempel: Schuifregelaar om het minimale betrouwbaarheidsniveau in te stellen voor het detecteren van objecten.
- IoU-drempel: Schuifregelaar om de IoU-drempel in te stellen voor het onderscheiden van verschillende objecten.
- Resultaten weergeven: De verwerkte afbeelding met gedetecteerde objecten en hun labels wordt weergegeven.
Voorbeeld gebruikssituaties
- Voorbeeldafbeelding 1: Busdetectie met standaarddrempels.
- Voorbeeldafbeelding 2: Detectie op een sportafbeelding met standaarddrempels.
Gebruiksvoorbeeld
Dit gedeelte bevat de Python code die wordt gebruikt om de Gradio interface te maken met het Ultralytics YOLOv8 model. Ondersteunt classificatietaken, detectietaken, segmentatietaken en kernpunttaken.
import gradio as gr
import PIL.Image as Image
from ultralytics import ASSETS, YOLO
model = YOLO("yolov8n.pt")
def predict_image(img, conf_threshold, iou_threshold):
"""Predicts and plots labeled objects in an image using YOLOv8 model with adjustable confidence and IOU thresholds."""
results = model.predict(
source=img,
conf=conf_threshold,
iou=iou_threshold,
show_labels=True,
show_conf=True,
imgsz=640,
)
for r in results:
im_array = r.plot()
im = Image.fromarray(im_array[..., ::-1])
return im
iface = gr.Interface(
fn=predict_image,
inputs=[
gr.Image(type="pil", label="Upload Image"),
gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence threshold"),
gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU threshold"),
],
outputs=gr.Image(type="pil", label="Result"),
title="Ultralytics Gradio",
description="Upload images for inference. The Ultralytics YOLOv8n model is used by default.",
examples=[
[ASSETS / "bus.jpg", 0.25, 0.45],
[ASSETS / "zidane.jpg", 0.25, 0.45],
],
)
if __name__ == "__main__":
iface.launch()
Parameters Uitleg
Parameter Naam | Type | Beschrijving |
---|---|---|
img |
Image |
De afbeelding waarop de objectdetectie wordt uitgevoerd. |
conf_threshold |
float |
Vertrouwensdrempel voor het detecteren van objecten. |
iou_threshold |
float |
Intersectie-over-scheidingsdrempel voor objectscheiding. |
Gradio Interface Componenten
Component | Beschrijving |
---|---|
Afbeelding invoer | De afbeelding uploaden voor detectie. |
Schuivers | Vertrouwens- en IoU-drempels aanpassen. |
Afbeeldingsuitvoer | Om de detectieresultaten weer te geven. |