Zum Inhalt springen

Ultralytics Docs: YOLO26 mit SAHI für geslicte Inferenz verwenden

Open SAHI for Sliced Inference In Colab

Willkommen in der Ultralytics-Dokumentation zur Verwendung von YOLO26 mit SAHI (Slicing Aided Hyper Inference). Dieser umfassende Leitfaden soll Ihnen das gesamte notwendige Wissen vermitteln, das Sie zur Implementierung von SAHI zusammen mit YOLO26 benötigen. Wir werden detailliert darauf eingehen, was SAHI ist, warum Sliced Inference für groß angelegte Anwendungen entscheidend ist und wie diese Funktionalitäten mit YOLO26 für eine verbesserte Objekterkennungs-Leistung integriert werden können.

SAHI-Kachel-Inferenz für kleine Objekte

Einführung in SAHI

SAHI (Slicing Aided Hyper Inference) ist eine innovative Bibliothek, die entwickelt wurde, um Objekterkennungsalgorithmen für großflächige und hochauflösende Bilddaten zu optimieren. Ihre Kernfunktionalität besteht darin, Bilder in handhabbare Ausschnitte zu unterteilen, die Objekterkennung auf jedem Ausschnitt auszuführen und die Ergebnisse dann wieder zusammenzufügen. SAHI ist mit einer Reihe von Objekterkennungsmodellen kompatibel, einschließlich der YOLO-Serie, wodurch Flexibilität geboten und gleichzeitig eine optimierte Nutzung der Rechenressourcen gewährleistet wird.



Ansehen: Inference mit SAHI (Slicing Aided Hyper Inference) unter Verwendung von Ultralytics YOLO26

Hauptmerkmale von SAHI

  • Nahtlose Integration: SAHI lässt sich mühelos in YOLO-Modelle integrieren, was bedeutet, dass Sie mit dem Slicen und Erkennen beginnen können, ohne viel Code ändern zu müssen.
  • Ressourceneffizienz: Durch die Aufteilung großer Bilder in kleinere Teile optimiert SAHI die Speichernutzung, sodass Sie hochwertige Erkennungen auf Hardware mit begrenzten Ressourcen ausführen können.
  • Hohe Genauigkeit: SAHI behält die Erkennungsgenauigkeit bei, indem es intelligente Algorithmen verwendet, um überlappende Erkennungsboxen während des Stitching-Prozesses zusammenzuführen.

Was ist Sliced Inference?

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

Vorteile von Sliced Inference

  • Reduzierte Rechenlast: Kleinere Bildausschnitte lassen sich schneller verarbeiten und verbrauchen weniger Speicher, was einen reibungsloseren Betrieb auf Low-End-Hardware ermöglicht.

  • Erhalt der Erkennungsqualität: Da jedes Segment unabhängig behandelt wird, gibt es keine Verringerung der Qualität der Objekterkennung, vorausgesetzt, die Segmente sind groß genug, um die interessierenden Objekte zu erfassen.

  • Erhöhte Skalierbarkeit: Die Technik ermöglicht eine einfachere Skalierung der Objekterkennung über verschiedene Größen und Auflösungen von Bildern hinweg, wodurch sie sich ideal für eine breite Palette von Anwendungen von Satellitenbildern bis hin zur medizinischen Diagnostik eignet.

YOLO26 ohne SAHIYOLO26 mit SAHI
YOLO26 ohne SAHIYOLO26 mit SAHI

Installation und Vorbereitung

Installation

Um zu beginnen, installiere die neuesten Versionen von SAHI und Ultralytics:

pip install -U ultralytics sahi

Module importieren und Ressourcen herunterladen

So importieren Sie die notwendigen Module und laden ein YOLO26-Modell sowie einige Testbilder herunter:

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo26n_model

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_model(model_path)

# 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 Inference mit YOLO26

Modell instanziieren

Sie können ein YOLO26-Modell für die Objekterkennung wie folgt instanziieren:

from sahi import AutoDetectionModel

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

Standardvorhersage durchführen

Führen Sie eine Standardinferenz mit einem Bildpfad oder einem NumPy-Bild durch.

from sahi.predict import get_prediction
from sahi.utils.cv import read_image

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result_with_np_image = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Ergebnisse visualisieren

Exportieren und visualisieren Sie die vorhergesagten Begrenzungsrahmen und Masken:

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Sliced Inference mit YOLO26

Führen Sie eine segmentierte Inferenz durch, indem Sie die Slice-Dimensionen und Überlappungsverhältnisse angeben:

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

Umgang mit Vorhersageergebnissen

SAHI bietet eine PredictionResult Objekt, das in verschiedene Annotationsformate konvertiert werden kann:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

Batch-Vorhersage

Für die Batch-Vorhersage in einem Bildverzeichnis:

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

Sie sind nun bereit, YOLO26 mit SAHI sowohl für Standard- als auch für Sliced Inference zu verwenden.

Zitate und Danksagungen

Wenn Sie SAHI in Ihrer Forschungs- oder Entwicklungsarbeit verwenden, zitieren Sie bitte das Original-SAHI-Paper und würdigen Sie die Autoren:

@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 bedanken uns bei der SAHI-Forschungsgruppe für die Erstellung und Pflege dieser unschätzbaren Ressource für die Computer-Vision-Community. Für weitere Informationen über SAHI und seine Ersteller besuchen Sie das SAHI GitHub-Repository.

FAQ

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

Die Integration von Ultralytics YOLO26 mit SAHI (Slicing Aided Hyper Inference) für Sliced Inference optimiert Ihre Objekterkennungsaufgaben auf hochauflösenden Bildern, indem diese in handhabbare Slices aufgeteilt werden. Dieser Ansatz verbessert die Speichernutzung und gewährleistet eine hohe detect-Genauigkeit. Um zu beginnen, müssen Sie die Bibliotheken ultralytics und sahi installieren:

pip install -U ultralytics sahi

Laden Sie dann ein YOLO26-Modell und Testbilder herunter:

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo26n_model

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_model(model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

Weitere detaillierte Anweisungen finden Sie in unserem Leitfaden zur Sliced Inference.

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

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

  • Reduzierte Rechenlast: Kleinere Ausschnitte lassen sich schneller verarbeiten und verbrauchen weniger Speicher, wodurch die Ausführung hochwertiger Erkennungen auf Hardware mit begrenzten Ressourcen möglich wird.
  • Beibehaltung der Erkennungsgenauigkeit: SAHI verwendet intelligente Algorithmen, um überlappende Boxen zusammenzuführen und so die Erkennungsqualität zu erhalten.
  • Erhöhte Skalierbarkeit: Durch die Skalierung von Objekterkennungsaufgaben über verschiedene Bildgrößen und Auflösungen hinweg eignet sich SAHI ideal für verschiedene Anwendungen wie Satellitenbildanalyse und medizinische Diagnostik.

Erfahren Sie mehr über die Vorteile der Sliced Inference in unserer Dokumentation.

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

Ja, Sie können Vorhersageergebnisse visualisieren, wenn Sie YOLO26 mit SAHI verwenden. So können Sie die Ergebnisse exportieren und visualisieren:

from IPython.display import Image

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Dieser Befehl speichert die visualisierten Vorhersagen im angegebenen Verzeichnis. Anschließend können Sie das Bild laden, um es in Ihrem Notebook oder Ihrer Anwendung anzuzeigen. Eine detaillierte Anleitung finden Sie im Abschnitt Standard Inference.

Welche Funktionen bietet SAHI zur Verbesserung der YOLO26-Objekterkennung?

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

  • Nahtlose Integration: SAHI lässt sich einfach in YOLO-Modelle integrieren und erfordert nur minimale Code-Anpassungen.
  • Ressourceneffizienz: Es partitioniert große Bilder in kleinere Ausschnitte, was die Speichernutzung 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 lesen Sie mehr über die Hauptmerkmale von SAHI.

Wie gehe ich mit groß angelegten Inferenzprojekten unter Verwendung von YOLO26 und SAHI um?

Um groß angelegte Inferenzprojekte mit YOLO26 und SAHI zu bewältigen, befolgen Sie diese Best Practices:

  1. Erforderliche Bibliotheken installieren: Stellen Sie sicher, dass Sie die neuesten Versionen von ultralytics und sahi installiert haben.
  2. Sliced Inference konfigurieren: Bestimmen Sie die optimalen Slice-Dimensionen und Überlappungsverhältnisse für Ihr spezifisches Projekt.
  3. Batch-Vorhersagen ausführen: Nutzen Sie die Fähigkeiten von SAHI, um Batch-Vorhersagen für ein Verzeichnis von Bildern durchzuführen, was die Effizienz verbessert.

Beispiel für 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,
)

Weitere detaillierte Schritte finden Sie in unserem Abschnitt zur Batch-Vorhersage.



📅 Erstellt vor 2 Jahren ✏️ Aktualisiert vor 5 Tagen
glenn-jocherRizwanMunawarpderrengerCoderUniUltralyticsAssistantMatthewNoyce

Kommentare