Overslaan naar inhoud

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.

Gradio voorbeeld screenshot

De Gradio installeren

pip install gradio

De interface gebruiken

  1. Afbeelding uploaden: Klik op 'Afbeelding uploaden' om een afbeeldingsbestand te kiezen voor objectdetectie.
  2. 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.
  3. 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.


Gemaakt op 2024-02-01, Bijgewerkt op 2024-05-18
Auteurs: glenn-jocher (3), RizwanMunawar (1)

Reacties