Ultralytics Dokumente: Verwendung von YOLO11 mit SAHI für Sliced Inference
Willkommen bei der Ultralytics Dokumentation über die Verwendung von YOLO11 mit SAHI (Slicing Aided Hyper Inference). Dieser umfassende Leitfaden soll Sie mit allen wesentlichen Kenntnissen versorgen, die Sie benötigen, um SAHI zusammen mit YOLO11 zu implementieren. Wir werden uns eingehend damit befassen, was SAHI ist, warum Slicing Inference für umfangreiche Anwendungen entscheidend ist und wie Sie diese Funktionalitäten mit YOLO11 integrieren können, um die Leistung der Objekterkennung zu verbessern.
Einführung in SAHI
SAHI (Slicing Aided Hyper Inference) ist eine innovative Bibliothek zur Optimierung von Objekterkennungsalgorithmen für großformatige und hochauflösende Bilder. Ihre Kernfunktionalität besteht darin, Bilder in handhabbare Slices zu unterteilen, die Objekterkennung auf jedem Slice durchzuführen und die Ergebnisse dann wieder zusammenzufügen. SAHI ist mit einer Reihe von Objekterkennungsmodellen kompatibel, einschließlich der YOLO Serie, und bietet dadurch Flexibilität bei optimaler Nutzung der Rechenressourcen.
Beobachten: Inferenz mit SAHI (Slicing Aided Hyper Inference) unter Verwendung von Ultralytics YOLO11
Hauptmerkmale von SAHI
- Nahtlose Integration: SAHI lässt sich mühelos in die Modelle von YOLO integrieren, d. h. Sie können mit dem Slicing und der Erkennung beginnen, ohne viel Code zu ändern.
- Ressourceneffizienz: Durch die Aufteilung großer Bilder in kleinere Teile optimiert SAHI die Speichernutzung, so dass Sie hochwertige Erkennungen auf Hardware mit begrenzten Ressourcen durchführen können.
- Hohe Genauigkeit: SAHI erhält die Erkennungsgenauigkeit durch den Einsatz intelligenter Algorithmen, die überlappende Erkennungsfelder während des Zusammensetzens zusammenführen.
Was ist Sliced Inference?
Unter Sliced Inference versteht man die Unterteilung eines großen oder hochauflösenden Bildes in kleinere Segmente (Slices), die Durchführung einer Objekterkennung auf diesen Slices und die anschließende Neukompilierung der Slices, um die Objektpositionen auf dem Originalbild zu rekonstruieren. Diese Technik ist von unschätzbarem Wert in Szenarien, in denen die Rechenressourcen begrenzt sind, oder bei der Arbeit mit extrem hochauflösenden Bildern, die sonst zu Speicherproblemen führen könnten.
Vorteile der Sliced Inference
-
Geringerer Rechenaufwand: Kleinere Bildausschnitte sind schneller zu verarbeiten und verbrauchen weniger Speicherplatz, was einen reibungsloseren Betrieb auf weniger leistungsfähiger Hardware ermöglicht.
-
Erhaltene Erkennungsqualität: Da jedes Slice unabhängig behandelt wird, wird die Qualität der Objekterkennung nicht beeinträchtigt, vorausgesetzt, die Slices sind groß genug, um die gewünschten Objekte zu erfassen.
-
Verbesserte Skalierbarkeit: Die Technik ermöglicht eine einfachere Skalierung der Objekterkennung über verschiedene Bildgrößen und -auflösungen hinweg und ist damit ideal für eine Vielzahl von Anwendungen, von Satellitenbildern bis hin zur medizinischen Diagnostik.
YOLO11 ohne SAHI | YOLO11 mit SAHI |
---|---|
Installation und Vorbereitung
Einrichtung
Um loszulegen, installieren Sie die neuesten Versionen von SAHI und Ultralytics:
Module importieren und Ressourcen herunterladen
Hier erfahren Sie, wie Sie die erforderlichen Module importieren und ein YOLO11 Modell sowie einige Testbilder herunterladen können:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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
Das Modell instanziieren
Sie können ein YOLO11 Modell zur Objekterkennung wie folgt instanziieren:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="yolov8",
model_path=yolov8_model_path,
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)
Standardvorhersage durchführen
Führen Sie die Standardinferenz mit einem Bildpfad oder einem Numpy-Bild durch.
from sahi.predict import get_prediction
# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)
Ergebnisse visualisieren
Exportieren und visualisieren Sie die vorhergesagten Begrenzungsrahmen und Masken:
Sliced Inference mit YOLO11
Führen Sie Sliced Inference 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 Anmerkungsformate umgewandelt 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]
Chargenvorhersage
Für die Stapelvorhersage für ein Verzeichnis von Bildern:
from sahi.predict import predict
predict(
model_type="yolov8",
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 war's! Jetzt sind Sie in der Lage, 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 SAHI-Originalpapier und nennen 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. Weitere Informationen zu SAHI und seinen Entwicklern finden Sie im SAHI GitHub Repository.
FAQ
Wie kann ich YOLO11 mit SAHI integrieren, um bei der Objekterkennung auf Scheiben zu schließen?
Die Integration von Ultralytics YOLO11 mit SAHI (Slicing Aided Hyper Inference) für Sliced Inference optimiert Ihre Objekterkennungsaufgaben auf hochauflösenden Bildern, indem sie in handhabbare Slices unterteilt werden. Dieser Ansatz verbessert die Speichernutzung und gewährleistet eine hohe Erkennungsgenauigkeit. Um loszulegen, müssen Sie die Bibliotheken ultralytics und sahi installieren:
Laden Sie dann ein YOLO11 Modell und Testbilder herunter:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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",
)
Ausführlichere Anweisungen finden Sie in unserem Leitfaden zu Sliced Inference.
Warum sollte ich SAHI mit YOLO11 für die Objekterkennung auf großen Bildern verwenden?
Die Verwendung von SAHI mit Ultralytics YOLO11 zur Objekterkennung auf großen Bildern bietet mehrere Vorteile:
- Geringerer Rechenaufwand: Kleinere Slices lassen sich schneller verarbeiten und verbrauchen weniger Speicherplatz, so dass hochwertige Erkennungen auch auf Hardware mit begrenzten Ressourcen möglich sind.
- Beibehaltung der Erkennungsgenauigkeit: SAHI verwendet intelligente Algorithmen, um überlappende Boxen zusammenzuführen und die Erkennungsqualität zu erhalten.
- Verbesserte Skalierbarkeit: Durch die Skalierung von Objekterkennungsaufgaben über verschiedene Bildgrößen und Auflösungen hinweg eignet sich SAHI ideal für verschiedene Anwendungen wie die Analyse von Satellitenbildern und die medizinische Diagnostik.
Erfahren Sie mehr über die Vorteile von Sliced Inference in unserer Dokumentation.
Kann ich die Vorhersageergebnisse visualisieren, wenn ich YOLO11 mit SAHI verwende?
Ja, Sie können die 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")
Mit diesem Befehl werden die visualisierten Vorhersagen im angegebenen Verzeichnis gespeichert, und Sie können das Bild anschließend laden, um es in Ihrem Notebook oder Ihrer Anwendung anzuzeigen. Eine detaillierte Anleitung finden Sie im Abschnitt Standardinferenz.
Welche Funktionen bietet SAHI zur Verbesserung der YOLO11 Objekterkennung?
SAHI (Slicing Aided Hyper Inference) bietet mehrere Funktionen, die Ultralytics YOLO11 zur Objekterkennung ergänzen:
- Nahtlose Integration: SAHI lässt sich problemlos in die Modelle von YOLO integrieren und erfordert nur minimale Code-Anpassungen.
- Ressourceneffizienz: Es unterteilt große Bilder in kleinere Slices, wodurch die Speichernutzung und die Geschwindigkeit optimiert werden.
- Hohe Genauigkeit: Durch die effektive Zusammenführung sich überlappender Erkennungsfelder während des Stitching-Prozesses gewährleistet SAHI eine hohe Erkennungsgenauigkeit.
Für ein tieferes Verständnis lesen Sie bitte die Hauptmerkmale von SAHI.
Wie kann ich mit YOLO11 und SAHI große Inferenzprojekte durchführen?
Um große Inferenzprojekte mit YOLO11 und SAHI zu bewältigen, sollten Sie die folgenden Best Practices befolgen:
- Installieren Sie die erforderlichen Bibliotheken: Stellen Sie sicher, dass Sie die neuesten Versionen von ultralytics und sahi haben.
- Konfigurieren Sie Sliced Inference: Bestimmen Sie die optimalen Slice-Abmessungen und Überlappungsverhältnisse für Ihr spezifisches Projekt.
- Batch-Vorhersagen durchführen: Nutzen Sie die SAHI-Funktionen zur Durchführung von Stapelvorhersagen für ein Verzeichnis von Bildern, um die Effizienz zu steigern.
Beispiel für eine Batch-Vorhersage:
from sahi.predict import predict
predict(
model_type="yolov8",
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,
)
Ausführlichere Schritte finden Sie in unserem Abschnitt über die Batch-Vorhersage.