Ultralytics YOLO27:
Get Started

YOLO26 mit SAHI für Inferenz mit Bildausschnitten verwenden#

Open SAHI for Sliced Inference In Colab

Diese Anleitung zeigt dir, wie du YOLO26 mit SAHI (inferenzgestütztes Zuschneiden) verwendest. Wir gehen ausführlich darauf ein, was SAHI ist, warum Inferenz mit Bildausschnitten für Anwendungen in großem Maßstab entscheidend ist und wie du diese Funktionen mit YOLO26 integrierst, um die Leistung der Objekterkennung zu verbessern.

Einführung in SAHI#

SAHI (inferenzgestütztes Zuschneiden) ist eine innovative Bibliothek zur Optimierung von Objekterkennungsalgorithmen für große und hochauflösende Bilder. Die Kernfunktion besteht darin, Bilder in handhabbare Ausschnitte zu unterteilen, auf jedem Ausschnitt eine Objekterkennung auszuführen und anschließend die Ergebnisse wieder zusammenzufügen. SAHI ist mit einer Reihe von Objekterkennungsmodellen kompatibel, darunter die YOLO-Reihe. So bietet die Bibliothek Flexibilität und sorgt zugleich für eine optimale Nutzung der Rechenressourcen.



Ansehen: So verwendest du SAHI mit Ultralytics YOLO26, um kleine Objekte zu erkennen | Slicing Aided Hyper Inference 🚀

Die wichtigsten Funktionen von SAHI#

  • Nahtlose Integration: SAHI lässt sich mühelos in YOLO-Modelle integrieren. So kannst du ohne umfangreiche Codeänderungen mit dem Zuschneiden und Erkennen beginnen.
  • Ressourcenschonung: Indem SAHI große Bilder in kleinere Teile zerlegt, optimiert es die Speichernutzung und ermöglicht hochwertige Erkennung auch auf Hardware mit begrenzten Ressourcen.
  • Hohe Genauigkeit: SAHI erhält die Erkennungsgenauigkeit, indem es beim Zusammenfügen überlappende Erkennungsrahmen mit intelligenten Algorithmen zusammenführt.

Was ist Inferenz mit Bildausschnitten?#

Bei der Inferenz mit Bildausschnitten wird ein großes oder hochauflösendes Bild in kleinere Bereiche (Ausschnitte) unterteilt. Auf diesen Ausschnitten wird die Objekterkennung ausgeführt. Anschließend werden die Ausschnitte wieder zusammengesetzt, um die Positionen der Objekte im ursprünglichen Bild zu rekonstruieren. Diese Technik ist besonders nützlich, wenn die Rechenressourcen begrenzt sind oder mit extrem hochauflösenden Bildern gearbeitet wird, die andernfalls Speicherprobleme verursachen könnten.

Vorteile der Inferenz mit Bildausschnitten#

  • Geringerer Rechenaufwand: Kleinere Bildausschnitte lassen sich schneller verarbeiten und benötigen weniger Speicher. So läuft die Verarbeitung auch auf leistungsschwächerer Hardware reibungsloser.

  • Erhaltene Erkennungsqualität: Da jeder Ausschnitt unabhängig verarbeitet wird, sinkt die Qualität der Objekterkennung nicht, sofern die Ausschnitte groß genug sind, um die relevanten Objekte zu erfassen.

  • Bessere Skalierbarkeit: Mit dieser Technik lässt sich die Objekterkennung leichter auf Bilder unterschiedlicher Größe und Auflösung skalieren. Dadurch eignet sie sich für ein breites Anwendungsspektrum – von Satellitenbildern bis hin zur medizinischen Diagnostik.

YOLO26 ohne SAHIYOLO26 mit SAHI
YOLO26 without SAHIYOLO26 with SAHI

Installation und Vorbereitung#

Installation#

Installiere zunächst die neuesten Versionen von SAHI und Ultralytics:

pip install -U ultralytics sahi

Module importieren und Ressourcen herunterladen#

So kannst du einige Testbilder herunterladen:

from sahi.utils.file import download_from_url

# # Testbilder herunterladen
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Standardinferenz mit YOLO26#

Modell instanziieren#

Du kannst ein YOLO26-Modell für die Objekterkennung folgendermaßen instanziieren:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="ultralytics",
    model_path="yolo26n.pt",
    confidence_threshold=0.3,
    device="cpu",  # # oder 'cuda:0'
)

Standardvorhersage ausführen#

Führe eine Standardinferenz mit einem Bildpfad aus.

from sahi.predict import get_prediction

result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

result.export_visuals(export_dir="demo_data/", hide_conf=True)

Ergebnisse visualisieren#

Exportiere und visualisiere die vorhergesagten Begrenzungsrahmen und Masken:

from PIL import Image

# # Das vorhergesagte Bild öffnen
processed_image = Image.open("demo_data/prediction_visual.png")

# # Das vorhergesagte Bild anzeigen
processed_image.show()

Inferenz mit Bildausschnitten und YOLO26#

Führe eine Inferenz mit Bildausschnitten aus, indem du die Abmessungen der Ausschnitte und die Überlappungsverhältnisse angibst:

from PIL import Image
from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

# # Ergebnisse exportieren
result.export_visuals(export_dir="demo_data/", hide_conf=True)

# # Das vorhergesagte Bild öffnen
processed_image = Image.open("demo_data/prediction_visual.png")

# # Das vorhergesagte Bild anzeigen
processed_image.show()

Vorhersageergebnisse verarbeiten#

SAHI stellt ein PredictionResult-Objekt bereit, das sich in verschiedene Anmerkungsformate umwandeln lässt:

# # Auf die Liste der Objektvorhersagen zugreifen
object_prediction_list = result.object_prediction_list

# # In COCO-Anmerkungs- und COCO-Vorhersageformate umwandeln
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Weitere Exportformate

PredictionResult kann Erkennungen außerdem mit result.to_imantics_annotations() und result.to_fiftyone_detections() in imantics- und FiftyOne-Objekte umwandeln. Für diese Methoden werden die jeweiligen Pakete benötigt. Installiere sie daher zuerst mit pip install imantics fiftyone.

Stapelvorhersage#

So führst du Stapelvorhersagen für ein Verzeichnis mit Bildern aus:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="yolo26n.pt",
    model_device="cpu",  # # oder 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Jetzt kannst du YOLO26 mit SAHI sowohl für die Standardinferenz als auch für die Inferenz mit Bildausschnitten verwenden.

Zitate und Danksagungen#

Wenn du SAHI in deiner Forschung oder Entwicklungsarbeit verwendest, zitiere bitte die ursprüngliche SAHI-Arbeit und nenne die Autorinnen und Autoren:

Zitat
@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

Unser Dank gilt der SAHI-Forschungsgruppe, die diese wertvolle Ressource für die Computer-Vision-Community entwickelt und betreut. Weitere Informationen zu SAHI und den Entwicklern findest du im SAHI-GitHub-Repository.

Häufig gestellte Fragen#

  • Die Integration von Ultralytics YOLO26 mit SAHI (inferenzgestütztes Zuschneiden) für die Inferenz mit Bildausschnitten optimiert die Objekterkennung in hochauflösenden Bildern, indem sie diese in handhabbare Ausschnitte unterteilt. Dieser Ansatz verbessert die Speichernutzung und gewährleistet eine hohe Erkennungsgenauigkeit. Installiere zunächst die Bibliotheken ultralytics und sahi:

    pip install -U ultralytics sahi

    Lade anschließend Testbilder herunter:

    from sahi.utils.file import download_from_url
    
    # # Testbilder herunterladen
    download_from_url(
        "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
        "demo_data/small-vehicles1.jpeg",
    )
    download_from_url(
        "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
        "demo_data/terrain2.png",
    )

    Eine ausführlichere Anleitung findest du in unserem Leitfaden zur Inferenz mit Bildausschnitten.

  • Die Verwendung von SAHI mit Ultralytics YOLO26 zur Objekterkennung in großen Bildern bietet mehrere Vorteile:

    • Geringerer Rechenaufwand: Kleinere Ausschnitte lassen sich schneller verarbeiten und benötigen weniger Speicher. Dadurch ist eine hochwertige Erkennung auch auf Hardware mit begrenzten Ressourcen möglich.
    • Erhaltene Erkennungsgenauigkeit: SAHI verwendet intelligente Algorithmen, um überlappende Rahmen zusammenzuführen und so die Erkennungsqualität zu erhalten.
    • Bessere Skalierbarkeit: SAHI eignet sich für verschiedene Anwendungen wie die Analyse von Satellitenbildern und die medizinische Diagnostik, da sich damit Objekterkennungsaufgaben auf Bilder unterschiedlicher Größe und Auflösung skalieren lassen.

    Weitere Informationen findest du in unserer Dokumentation zu den Vorteilen der Inferenz mit Bildausschnitten.

  • Ja, du kannst Vorhersageergebnisse visualisieren, wenn du YOLO26 mit SAHI verwendest. So exportierst und visualisierst du die Ergebnisse:

    from PIL import Image
    
    result.export_visuals(export_dir="demo_data/", hide_conf=True)
    
    processed_image = Image.open("demo_data/prediction_visual.png")
    
    processed_image.show()

    Mit diesem Befehl werden die visualisierten Vorhersagen im angegebenen Verzeichnis gespeichert. Anschließend kannst du das Bild laden und in deinem Notebook oder deiner Anwendung anzeigen. Eine ausführliche Anleitung findest du im Abschnitt Standardinferenz.

  • SAHI (inferenzgestütztes Zuschneiden) bietet verschiedene Funktionen, die Ultralytics YOLO26 bei der Objekterkennung ergänzen:

    • Nahtlose Integration: SAHI lässt sich mühelos in YOLO-Modelle integrieren und erfordert nur minimale Codeanpassungen.
    • Ressourcenschonung: SAHI unterteilt große Bilder in kleinere Ausschnitte und optimiert dadurch die Speichernutzung und Verarbeitungsgeschwindigkeit.
    • Hohe Genauigkeit: Durch das zuverlässige Zusammenführen überlappender Erkennungsrahmen beim Zusammenfügen erreicht SAHI eine hohe Erkennungsgenauigkeit.

    Ausführlichere Informationen findest du in der Dokumentation zu den wichtigsten Funktionen von SAHI.

  • Beachte bei groß angelegten Inferenzprojekten mit YOLO26 und SAHI die folgenden Best Practices:

    1. Erforderliche Bibliotheken installieren: Stelle sicher, dass du die neuesten Versionen von ultralytics und sahi installiert hast.
    2. Zerlegte Inferenz konfigurieren: Ermittle die optimalen Ausschnittabmessungen und Überlappungsverhältnisse für dein spezifisches Projekt.
    3. Batch-Vorhersagen ausführen: Nutze die Funktionen von SAHI, um Batch-Vorhersagen für ein Verzeichnis mit Bildern auszuführen und so die Effizienz zu steigern.

    Beispiel für Batch-Vorhersagen:

    from sahi.predict import predict
    
    predict(
        model_type="ultralytics",
        model_path="path/to/yolo26n.pt",
        model_device="cpu",  # # oder 'cuda:0'
        model_confidence_threshold=0.4,
        source="path/to/dir",
        slice_height=256,
        slice_width=256,
        overlap_height_ratio=0.2,
        overlap_width_ratio=0.2,
    )

    Ausführlichere Schritte findest du in unserem Abschnitt zu Batch-Vorhersagen.

Kommentare