Zum Inhalt springen

Interaktive Objekterkennung: Gradio & Ultralytics YOLOv8 🚀

Einführung in die interaktive Objektdetektion

Diese Gradio-Schnittstelle bietet eine einfache und interaktive Möglichkeit, die Objekterkennung anhand des Ultralytics YOLOv8 Modells. Die Nutzer können Bilder hochladen und Parameter wie die Konfidenzschwelle und die Intersection-over-Union (IoU)-Schwelle anpassen, um Erkennungsergebnisse in Echtzeit zu erhalten.

Warum Gradio für die Objekterkennung verwenden?

  • Benutzerfreundliches Interface: Gradio bietet eine unkomplizierte Plattform, auf der du Bilder hochladen und die Erkennungsergebnisse visualisieren kannst, ohne dass du Programmierkenntnisse brauchst.
  • Anpassungen in Echtzeit: Parameter wie die Konfidenz- und IoU-Schwellenwerte können im laufenden Betrieb angepasst werden, was eine sofortige Rückmeldung und Optimierung der Aufdeckungsergebnisse ermöglicht.
  • Breite Zugänglichkeit: Die Gradio-Weboberfläche ist für jeden zugänglich und eignet sich daher hervorragend für Demonstrationen, Bildungszwecke und schnelle Experimente.

Gradio Beispiel-Screenshot

So installierst du das Gradio

pip install gradio

Wie man die Schnittstelle benutzt

  1. Bild hochladen: Klicke auf "Bild hochladen", um eine Bilddatei für die Objekterkennung auszuwählen.
  2. Parameter anpassen:
    • Konfidenzschwelle: Mit dem Schieberegler kannst du die minimale Konfidenzschwelle für die Erkennung von Objekten festlegen.
    • IoU-Schwellenwert: Mit dem Schieberegler kannst du den IoU-Schwellenwert für die Unterscheidung verschiedener Objekte festlegen.
  3. Ergebnisse anzeigen: Das verarbeitete Bild mit den erkannten Objekten und ihren Beschriftungen wird angezeigt.

Beispiele für Anwendungsfälle

  • Beispielbild 1: Buserkennung mit Standardschwellenwerten.
  • Beispielbild 2: Erkennung auf einem Sportbild mit Standardschwellenwerten.

Verwendungsbeispiel

Dieser Abschnitt enthält den Python Code, der verwendet wird, um die Gradio-Schnittstelle mit dem Ultralytics YOLOv8 Modell zu erstellen. Unterstützt Klassifizierungsaufgaben, Erkennungsaufgaben, Segmentierungsaufgaben und Schlüsselpunktaufgaben.

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()

Parameter Erläuterung

Parameter Name Typ Beschreibung
img Image Das Bild, auf dem die Objekterkennung durchgeführt werden soll.
conf_threshold float Konfidenzschwelle für die Erkennung von Objekten.
iou_threshold float Überschneidungsschwelle für die Objekttrennung.

Gradio Interface Komponenten

Komponente Beschreibung
Bild-Eingabe Um das Bild zur Erkennung hochzuladen.
Schieber Zur Anpassung der Konfidenz- und IoU-Schwellenwerte.
Bildausgabe Um die Erkennungsergebnisse anzuzeigen.


Erstellt am 2024-02-01, Aktualisiert am 2024-05-18
Autoren: glenn-jocher (3), RizwanMunawar (1)

Kommentare