YOLO Vision 2026:

Ultralytics Docs: Verwendung von YOLO26 mit SAHI für Sliced Inference#

Öffne SAHI für Sliced Inference in Colab

Willkommen in der Ultralytics-Dokumentation zur Verwendung von YOLO26 mit SAHI (Slicing Aided Hyper Inference). Dieser umfassende Leitfaden vermittelt dir das gesamte wesentliche Wissen, das du für die Implementierung von SAHI zusammen mit YOLO26 benötigst. Wir tauchen tief in die Frage ein, was SAHI ist, warum geslicte Inferenz für groß angelegte Anwendungen von entscheidender Bedeutung ist und wie du diese Funktionen für eine verbesserte Object Detection-Leistung in YOLO26 integrierst.

SAHI tiled inference for small objects

Einführung in SAHI#

SAHI (Slicing Aided Hyper Inference) ist eine innovative Bibliothek, die entwickelt wurde, um Objekterkennungsalgorithmen für großformatige und hochauflösende Bilder zu optimieren. Ihre Kernfunktionalität besteht darin, Bilder in handhabbare Ausschnitte (Slices) zu unterteilen, auf jedem dieser Ausschnitte eine Objekterkennung durchzuführen und anschließend die Ergebnisse wieder zusammenzufügen. SAHI ist mit einer Reihe von Objekterkennungsmodellen kompatibel, einschließlich der YOLO-Serie, und bietet somit Flexibilität bei gleichzeitig optimierter Nutzung der Rechenressourcen.



Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀

Hauptmerkmale von SAHI#

  • Nahtlose Integration: SAHI lässt sich mühelos in YOLO-Modelle integrieren, sodass du ohne umfangreiche Code-Änderungen mit dem Slicing und der Erkennung beginnen kannst.
  • Ressourceneffizienz: Durch das Zerlegen großer Bilder in kleinere Teile optimiert SAHI die Speicherauslastung, was es dir ermöglicht, eine hochwertige Erkennung auf Hardware mit begrenzten Ressourcen durchzuführen.
  • Hohe Genauigkeit: SAHI behält die Erkennungsgenauigkeit bei, indem intelligente Algorithmen verwendet werden, um überlappende Erkennungsboxen während des Zusammenfügens zu mergen.

Was ist Sliced Inference?#

Sliced Inference bezeichnet die Praxis, ein großes oder hochauflösendes Bild in kleinere Segmente (Slices) zu unterteilen, auf diesen Slices eine Objekterkennung durchzuführen und die Slices dann wieder zusammenzusetzen, um die Objektpositionen im Originalbild zu rekonstruieren. Diese Technik ist in Szenarien von unschätzbarem Wert, in denen Rechenressourcen begrenzt sind oder mit extrem hochauflösenden Bildern gearbeitet wird, die andernfalls zu Speicherproblemen führen könnten.

Vorteile von Sliced Inference#

  • Geringere Rechenlast: Kleinere Bildausschnitte lassen sich schneller verarbeiten und verbrauchen weniger Speicher, was einen reibungsloseren Betrieb auf weniger leistungsfähiger Hardware ermöglicht.

  • Erhöhte Erkennungsqualität: Da jeder Ausschnitt unabhängig behandelt wird, gibt es keinen Qualitätsverlust bei der Objekterkennung, sofern die Ausschnitte groß genug sind, um die Zielobjekte zu erfassen.

  • Verbesserte Skalierbarkeit: Die Technik ermöglicht es, die Objekterkennung einfacher an unterschiedliche Bildgrößen und -auflösungen anzupassen, was sie ideal für eine Vielzahl von Anwendungen macht, von Satellitenbildern bis hin zur medizinischen Diagnostik.

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

Installation und Vorbereitung#

Installation#

Installiere für den Einstieg die neuesten Versionen von SAHI und Ultralytics:

pip install -U ultralytics sahi

Module importieren und Ressourcen herunterladen#

So lädst du einige Testbilder herunter:

from sahi.utils.file import download_from_url

# Download test images
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",
)

Standard-Inferenz mit YOLO26#

Modell instanziieren#

Du kannst ein YOLO26-Modell für die Objekterkennung wie folgt instanziieren:

from sahi import AutoDetectionModel

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

Standard-Vorhersage durchführen#

Führe die Standard-Inferenz unter Verwendung eines Bildpfades 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 Bounding Boxen und Masken:

from PIL import Image

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

Sliced Inference mit YOLO26#

Führe Sliced Inference durch, indem du die Dimensionen 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,
)

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

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

Umgang mit Vorhersageergebnissen#

SAHI stellt ein PredictionResult-Objekt bereit, das in verschiedene Annotationsformate konvertiert werden kann:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Zusätzliche Exportformate

PredictionResult kann Erkennungen auch mit result.to_imantics_annotations() und result.to_fiftyone_detections() in imantics- und FiftyOne-Objekte konvertieren. Diese Methoden erfordern die jeweiligen Pakete, installiere sie daher zuerst mit pip install imantics fiftyone.

Batch-Vorhersage#

Für Batch-Vorhersagen auf einem Verzeichnis von Bildern:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="yolo26n.pt",
    model_device="cpu",  # or '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,
)

Du bist jetzt bereit, YOLO26 mit SAHI sowohl für die Standard- als auch für die Sliced-Inferenz zu verwenden.

Zitate und Danksagungen#

Wenn du SAHI in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das ursprüngliche SAHI-Paper und nenne die 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}
}

Wir danken der SAHI-Forschungsgruppe für die Erstellung und Pflege dieser unschätzbaren Ressource für die Computer Vision-Community. Weitere Informationen über SAHI und seine Ersteller findest du im SAHI GitHub repository.

FAQ#

Wie kann ich YOLO26 mit SAHI für Sliced Inference bei der Objekterkennung integrieren?#

Die Integration von Ultralytics YOLO26 mit SAHI (Slicing Aided Hyper Inference) für Sliced Inference optimiert deine Objekterkennungsaufgaben bei hochauflösenden Bildern, indem diese in handhabbare Ausschnitte partitioniert werden. Dieser Ansatz verbessert die Speicherauslastung und sorgt für eine hohe Erkennungsgenauigkeit. Zuerst musst du die Bibliotheken ultralytics und sahi installieren:

pip install -U ultralytics sahi

Lade dann Testbilder herunter:

from sahi.utils.file import download_from_url

# Download test images
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",
)

Ausführlichere Anweisungen findest du in unserem Sliced Inference guide.

Warum sollte ich SAHI mit YOLO26 für die Objekterkennung in großen Bildern verwenden?#

Die Verwendung von SAHI mit Ultralytics YOLO26 für die Objekterkennung in großen Bildern bietet mehrere Vorteile:

  • Geringere Rechenlast: Kleinere Ausschnitte lassen sich schneller verarbeiten und benötigen weniger Speicher, was die Durchführung hochwertiger Erkennungen auf Hardware mit begrenzten Ressourcen ermöglicht.
  • Erhalt der Erkennungsgenauigkeit: SAHI verwendet intelligente Algorithmen, um überlappende Boxen zusammenzuführen und so die Qualität der Erkennung zu bewahren.
  • Verbesserte Skalierbarkeit: Durch die Skalierung von Objekterkennungsaufgaben über verschiedene Bildgrößen und -auflösungen hinweg ist SAHI ideal für verschiedene Anwendungen, wie etwa die Analyse von Satellitenbildern und medizinische Diagnostik.

Erfahre mehr über die Vorteile der geslicten Inferenz in unserer Dokumentation.

Kann ich die Vorhersageergebnisse visualisieren, wenn ich YOLO26 mit SAHI verwende?#

Ja, du kannst die Vorhersageergebnisse visualisieren, wenn du YOLO26 mit SAHI verwendest. Hier erfährst du, wie du die Ergebnisse exportieren und visualisieren kannst:

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

Dieser Befehl speichert die visualisierten Vorhersagen im angegebenen Verzeichnis, und du kannst das Bild dann laden, um es in deinem Notebook oder deiner Anwendung anzuzeigen. Eine detaillierte Anleitung findest du im Abschnitt Standard Inference.

Welche Funktionen bietet SAHI zur Verbesserung der YOLO26-Objekterkennung?#

SAHI (Slicing Aided Hyper Inference) bietet verschiedene Funktionen, die Ultralytics YOLO26 bei der Objekterkennung ergänzen:

  • Nahtlose Integration: SAHI lässt sich einfach mit YOLO-Modellen integrieren und erfordert nur minimale Code-Anpassungen.
  • Ressourceneffizienz: Es unterteilt große Bilder in kleinere Ausschnitte, was die Speicherauslastung und Geschwindigkeit optimiert.
  • Hohe Genauigkeit: Durch das effektive Zusammenführen überlappender Erkennungsboxen während des Stitching-Prozesses behält SAHI eine hohe Erkennungsgenauigkeit bei.

Für ein tieferes Verständnis lies mehr über die Hauptfunktionen von SAHI.

Wie gehe ich mit großen Inferenz-Projekten unter Verwendung von YOLO26 und SAHI um?#

Um große Inferenz-Projekte mit YOLO26 und SAHI zu bewältigen, befolge diese Best Practices:

  1. Erforderliche Bibliotheken installieren: Stelle sicher, dass du die neuesten Versionen von ultralytics und sahi installiert hast.
  2. Sliced Inference konfigurieren: Bestimme die optimalen Ausschnittsgrößen 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 von Bildern durchzuführen, was die Effizienz steigert.

Beispiel für eine Batch-Vorhersage:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="path/to/yolo26n.pt",
    model_device="cpu",  # or '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 Prediction.

Kommentare