Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics Docs: Verwendung von YOLO26 mit SAHI für Sliced Inference#

Öffne SAHI für Sliced Inference in Colab

Willkommen zur Ultralytics-Dokumentation darüber, wie man YOLO26 mit SAHI (Slicing Aided Hyper Inference) verwendet. Dieser umfassende Leitfaden vermittelt dir das gesamte notwendige Wissen zur Implementierung von SAHI in Verbindung mit YOLO26. Wir tauchen tief in das Thema SAHI ein, erläutern, warum Sliced Inference für groß angelegte Anwendungen entscheidend ist und wie du diese Funktionen mit YOLO26 für eine verbesserte Objekterkennung integrierst.

SAHI tiled inference for small objects

Link to this sectionEinfü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 🚀

Link to this sectionHauptmerkmale 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 bewahrt die Erkennungsgenauigkeit durch den Einsatz intelligenter Algorithmen, die überlappende Erkennungsboxen während des Zusammenfügens zusammenführen.

Link to this sectionWas 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.

Link to this sectionVorteile 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

Link to this sectionInstallation und Vorbereitung#

Link to this sectionInstallation#

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

pip install -U ultralytics sahi

Link to this sectionModule 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",
)

Link to this sectionStandard-Inferenz mit YOLO26#

Link to this sectionModell 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'
)

Link to this sectionStandard-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)

Link to this sectionErgebnisse 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()

Link to this sectionSliced 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()

Link to this sectionUmgang 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 can also convert detections to imantics and FiftyOne objects with result.to_imantics_annotations() and result.to_fiftyone_detections(). These methods require the respective packages, so install them first with pip install imantics fiftyone.

Link to this sectionBatch-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.

Link to this sectionZitate 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 wertvollen Ressource für die Computer Vision-Community. Weitere Informationen über SAHI und seine Entwickler findest du im SAHI GitHub-Repository.

Link to this sectionFAQ#

Link to this sectionWie 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",
)

Detailliertere Anweisungen findest du in unserem Leitfaden für Sliced Inference.

Link to this sectionWarum 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 von Sliced Inference in unserer Dokumentation.

Link to this sectionKann 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 anschließend laden, um es in deinem Notebook oder deiner Anwendung anzuzeigen. Einen detaillierten Leitfaden findest du im Abschnitt Standard-Inferenz.

Link to this sectionWelche 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 unsere Hauptmerkmale von SAHI.

Link to this sectionWie 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,
)

Detailliertere Schritte findest du in unserem Abschnitt über Batch-Vorhersage.

Kommentare