Ultralytics Docs: Verwenden von YOLO11 mit SAHI für Sliced Inference
Willkommen bei der Ultralytics-Dokumentation zur Verwendung von YOLO11 mit SAHI (Slicing Aided Hyper Inference). Dieser umfassende Leitfaden soll Ihnen das gesamte wesentliche Wissen vermitteln, das Sie benötigen, um SAHI zusammen mit YOLO11 zu implementieren. Wir werden tief in das eintauchen, was SAHI ist, warum Sliced Inference für groß angelegte Anwendungen entscheidend ist und wie Sie diese Funktionalitäten mit YOLO11 für eine verbesserte Objekterkennung-Leistung integrieren können.
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: Inferenz mit SAHI (Slicing Aided Hyper Inference) unter Verwendung von Ultralytics YOLO11
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.
YOLO11 ohne SAHI | YOLO11 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
Hier erfahren Sie, wie Sie die notwendigen Module importieren und ein YOLO11-Modell sowie einige Testbilder herunterladen:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_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-Inferenz mit YOLO11
Modell instanziieren
Sie können ein YOLO11-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 YOLO11
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/yolo11n.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,
)
Das ist alles! Jetzt sind Sie gerüstet, YOLO11 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 YOLO11 mit SAHI für Sliced Inference in der Objekterkennung integrieren?
Die Integration von Ultralytics YOLO11 mit SAHI (Slicing Aided Hyper Inference) zur segmentierten Inferenz optimiert Ihre Objekterkennungsaufgaben bei hochauflösenden Bildern, indem diese in handhabbare Segmente unterteilt werden. Dieser Ansatz verbessert die Speichernutzung und gewährleistet eine hohe Erkennungsgenauigkeit. Um zu beginnen, müssen Sie die Bibliotheken ultralytics und sahi installieren:
pip install -U ultralytics sahi
Laden Sie dann ein YOLO11-Modell und Testbilder herunter:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_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 YOLO11 für die Objekterkennung auf großen Bildern verwenden?
Die Verwendung von SAHI mit Ultralytics YOLO11 für die 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 die Vorhersageergebnisse visualisieren, wenn ich YOLO11 mit SAHI verwende?
Ja, Sie können Vorhersageergebnisse visualisieren, wenn Sie YOLO11 mit SAHI verwenden. Hier erfahren Sie, wie Sie die Ergebnisse exportieren und visualisieren können:
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 YOLO11-Objekterkennung?
SAHI (Slicing Aided Hyper Inference) bietet mehrere Funktionen, die Ultralytics YOLO11 für die 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 handhabe ich umfangreiche Inferenzprojekte mit YOLO11 und SAHI?
Um umfangreiche Inferenzprojekte mit YOLO11 und SAHI zu bearbeiten, befolge diese Best Practices:
- Erforderliche Bibliotheken installieren: Stellen Sie sicher, dass Sie die neuesten Versionen von ultralytics und sahi installiert haben.
- Sliced Inference konfigurieren: Bestimmen Sie die optimalen Slice-Dimensionen und Überlappungsverhältnisse für Ihr spezifisches Projekt.
- 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/yolo11n.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.