YOLO-Weltmodell
Das YOLO-Weltmodell führt ein fortschrittliches Echtzeit Ultralytics YOLOv8-basierten Ansatz für Open-Vocabulary Detection Aufgaben. Diese Innovation ermöglicht die Erkennung beliebiger Objekte in einem Bild auf der Grundlage von beschreibenden Texten. Durch die deutliche Senkung der Rechenanforderungen bei gleichzeitiger Beibehaltung einer wettbewerbsfähigen Leistung wird YOLO-World zu einem vielseitigen Werkzeug für zahlreiche bildverarbeitungsbasierte Anwendungen.
Pass auf: YOLO Weltweiter Trainingsworkflow mit benutzerdefiniertem Datensatz
Übersicht
YOLO-World geht die Herausforderungen an, mit denen herkömmliche Modelle zur Erkennung von offenem Vokabular konfrontiert sind, die sich oft auf schwerfällige Transformer-Modelle stützen, die umfangreiche Rechenressourcen benötigen. Die Abhängigkeit dieser Modelle von vordefinierten Objektkategorien schränkt auch ihren Nutzen in dynamischen Szenarien ein. YOLO-World belebt das YOLOv8 Framework mit Funktionen zur Erkennung von offenem Vokabular, indem es die Modellierung der Bildsprache und das Vortraining auf umfangreichen Datensätzen einsetzt, um eine breite Palette von Objekten in Zero-Shot-Szenarien mit unübertroffener Effizienz zu erkennen.
Hauptmerkmale
-
Lösung in Echtzeit: Mit der Rechengeschwindigkeit von CNNs liefert YOLO-World eine schnelle Lösung zur Erkennung von offenem Vokabular für Branchen, die sofortige Ergebnisse benötigen.
-
Effizienz und Leistung: YOLO-World senkt den Rechen- und Ressourcenbedarf ohne Leistungseinbußen und bietet eine robuste Alternative zu Modellen wie SAM , aber zu einem Bruchteil der Rechenkosten, was Echtzeitanwendungen ermöglicht.
-
Inferenz mit Offline-Vokabular: YOLO-World führt eine "Prompt-then-Detect"-Strategie ein, bei der ein Offline-Vokabular verwendet wird, um die Effizienz weiter zu steigern. Dieser Ansatz ermöglicht die Verwendung benutzerdefinierter, im Vorfeld berechneter Prompts, einschließlich Beschriftungen oder Kategorien, die als Offline-Vokabular-Einbettungen kodiert und gespeichert werden, um den Erkennungsprozess zu optimieren.
-
Powered by YOLOv8: Aufbauend auf Ultralytics YOLOv8YOLO-World nutzt die neuesten Fortschritte bei der Objekterkennung in Echtzeit, um die Erkennung von offenen Vokabeln mit unvergleichlicher Genauigkeit und Geschwindigkeit zu ermöglichen.
-
Herausragende Benchmarks: YOLO-World übertrifft bestehende Open-Vocabulary-Detektoren wie MDETR und die GLIP-Reihe in Bezug auf Geschwindigkeit und Effizienz bei Standard-Benchmarks und zeigt damit die überlegene Leistungsfähigkeit von YOLOv8 auf einer einzigen NVIDIA V100 GPU.
-
Vielseitige Anwendungen: YOLO-Worlds innovativer Ansatz eröffnet neue Möglichkeiten für eine Vielzahl von Bildverarbeitungsaufgaben und bietet Geschwindigkeitsverbesserungen um Größenordnungen gegenüber bestehenden Methoden.
Verfügbare Modelle, unterstützte Aufgaben und Betriebsmodi
In diesem Abschnitt werden die verfügbaren Modelle mit ihren spezifischen vortrainierten Gewichten, die von ihnen unterstützten Aufgaben und ihre Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export beschrieben, gekennzeichnet durch ✅ für unterstützte Modi und ❌ für nicht unterstützte Modi.
Hinweis
Alle YOLOv8-World Gewichte wurden direkt aus dem offiziellen YOLO-World Repository migriert, was ihre hervorragenden Beiträge hervorhebt.
Modell Typ | Vortrainierte Gewichte | Unterstützte Aufgaben | Inferenz | Validierung | Ausbildung | exportieren |
---|---|---|---|---|---|---|
YOLOv8s-Welt | yolov8s-welt.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-worldv2 | yolov8s-worldv2.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-Welt | yolov8m-welt.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-worldv2 | yolov8m-worldv2.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-Welt | yolov8l-welt.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-worldv2 | yolov8l-worldv2.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-Welt | yolov8x-welt.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-worldv2 | yolov8x-worldv2.pt | Objekt-Erkennung | ✅ | ✅ | ✅ | ✅ |
Null-Schuss-Übertragung auf den COCO-Datensatz
Modell Typ | mAP | mAP50 | mAP75 |
---|---|---|---|
yolov8s-Welt | 37.4 | 52.0 | 40.6 |
yolov8s-worldv2 | 37.7 | 52.2 | 41.0 |
yolov8m-Welt | 42.0 | 57.0 | 45.6 |
yolov8m-worldv2 | 43.0 | 58.4 | 46.8 |
yolov8l-Welt | 45.7 | 61.3 | 49.8 |
yolov8l-worldv2 | 45.8 | 61.3 | 49.8 |
yolov8x-Welt | 47.0 | 63.0 | 51.2 |
yolov8x-worldv2 | 47.1 | 62.8 | 51.4 |
Verwendungsbeispiele
Die YOLO-Weltmodelle lassen sich leicht in deine Python Anwendungen integrieren. Ultralytics bietet eine benutzerfreundliche Python API und CLI Befehle, um die Entwicklung zu optimieren.
Nutzung des Zuges
Tipp
Wir empfehlen dringend die Verwendung von yolov8-worldv2
Modell für benutzerdefiniertes Training, weil es deterministisches Training unterstützt und auch leicht andere Formate exportieren kann, z.B. onnx/tensorrt.
Die Objekterkennung ist einfach mit der train
Methode, wie unten dargestellt:
Beispiel
PyTorch vorgebildet *.pt
Modelle als auch die Konfiguration *.yaml
Dateien können an den YOLOWorld()
Klasse, um eine Modellinstanz in python zu erstellen:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld('yolov8s-worldv2.pt')
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data='coco8.yaml', epochs=100, imgsz=640)
# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model('path/to/bus.jpg')
Nutzung vorhersagen
Die Objekterkennung ist einfach mit der predict
Methode, wie unten dargestellt:
Beispiel
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld('yolov8s-world.pt') # or select yolov8m/l-world.pt for different sizes
# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict('path/to/image.jpg')
# Show results
results[0].show()
Dieser Ausschnitt zeigt, wie einfach es ist, ein trainiertes Modell zu laden und eine Vorhersage für ein Bild zu machen.
Val Verwendung
Die Modellvalidierung für einen Datensatz wird wie folgt vereinfacht:
Beispiel
Verwendung verfolgen
Die Objektverfolgung mit dem YOLO-Weltmodell auf einem Video/Bild wird wie folgt vereinfacht:
Beispiel
Hinweis
Die YOLO-World Modelle von Ultralytics sind mit den Kategorien des COCO-Datensatzes als Teil ihres Offline-Vokabulars vorkonfiguriert, was die Effizienz bei der sofortigen Anwendung erhöht. Dank dieser Integration können die Modelle von YOLOv8-World die 80 Standardkategorien des COCO-Datensatzes direkt erkennen und vorhersagen, ohne dass zusätzliche Einstellungen oder Anpassungen erforderlich sind.
Eingabeaufforderungen einstellen
Das YOLO-World Framework ermöglicht die dynamische Spezifikation von Klassen durch benutzerdefinierte Eingabeaufforderungen, so dass die Nutzer das Modell ohne erneutes Training an ihre spezifischen Bedürfnisse anpassen können. Diese Funktion ist besonders nützlich für die Anpassung des Modells an neue Bereiche oder spezielle Aufgaben, die ursprünglich nicht Teil der Trainingsdaten waren. Durch das Einstellen benutzerdefinierter Eingabeaufforderungen können die Nutzer/innen den Fokus des Modells auf Objekte von Interesse lenken und so die Relevanz und Genauigkeit der Erkennungsergebnisse verbessern.
Wenn deine Anwendung zum Beispiel nur die Objekte "Person" und "Bus" erkennen muss, kannst du diese Klassen direkt angeben:
Beispiel
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO('yolov8s-world.pt') # or choose yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction for specified categories on an image
results = model.predict('path/to/image.jpg')
# Show results
results[0].show()
Du kannst ein Modell auch speichern, nachdem du benutzerdefinierte Klassen festgelegt hast. Auf diese Weise erstellst du eine Version des YOLO-Weltmodells, die auf deinen speziellen Anwendungsfall zugeschnitten ist. Bei diesem Vorgang werden die Definitionen deiner benutzerdefinierten Klassen direkt in die Modelldatei eingebettet, sodass das Modell ohne weitere Anpassungen mit den von dir festgelegten Klassen verwendet werden kann. Befolge diese Schritte, um dein benutzerdefiniertes YOLOv8 Modell zu speichern und zu laden:
Beispiel
Lade zunächst ein YOLO-Weltmodell, lege benutzerdefinierte Klassen dafür fest und speichere es:
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO('yolov8s-world.pt') # or select yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")
Nach dem Speichern verhält sich das Modell custom_yolov8s.pt wie jedes andere vortrainierte YOLOv8 Modell, allerdings mit einem entscheidenden Unterschied: Es ist jetzt so optimiert, dass es nur die von dir definierten Klassen erkennt. Diese Anpassung kann die Erkennungsleistung und Effizienz für deine spezifischen Anwendungsszenarien erheblich verbessern.
Vorteile des Sparens mit benutzerdefiniertem Vokabular
- Effizienz: Rationalisiert den Erkennungsprozess, indem er sich auf relevante Objekte konzentriert, den Rechenaufwand reduziert und die Inferenz beschleunigt.
- Flexibilität: Ermöglicht eine einfache Anpassung des Modells an neue oder Nischen-Aufdeckungsaufgaben, ohne dass umfangreiche Nachschulungen oder Datenerhebungen erforderlich sind.
- Vereinfachung: Vereinfacht die Bereitstellung, da keine benutzerdefinierten Klassen mehr zur Laufzeit angegeben werden müssen und das Modell direkt mit seinem eingebetteten Vokabular verwendet werden kann.
- Leistung: Verbessert die Erkennungsgenauigkeit für bestimmte Klassen, indem die Aufmerksamkeit und die Ressourcen des Modells auf die Erkennung der definierten Objekte konzentriert werden.
Dieser Ansatz ermöglicht es, hochmoderne Objekterkennungsmodelle für bestimmte Aufgaben anzupassen, wodurch fortschrittliche KI zugänglicher und für ein breiteres Spektrum praktischer Anwendungen einsetzbar wird.
Reproduziere offizielle Ergebnisse von Grund auf (Experimentell)
Datensätze vorbereiten
- Zugdaten
Datensatz | Typ | Proben | Boxen | Anmerkungsdateien |
---|---|---|---|---|
Objekte365v1 | Erkennung | 609k | 9621k | objects365_train.json |
GQA | Erdung | 621k | 3681k | final_mixed_train_no_coco.json |
Flickr30k | Erdung | 149k | 641k | final_flickr_separateGT_train.json |
- Val-Daten
Datensatz | Typ | Anmerkungsdateien |
---|---|---|
LVIS minival | Erkennung | minival.txt |
Ausbildung von Grund auf neu beginnen
Hinweis
WorldTrainerFromScratch
ist so angepasst, dass yolo-Weltmodelle gleichzeitig auf Erkennungsdatensätzen und Erdungsdatensätzen trainiert werden können. Weitere Details findest du unter ultralytics.model.yolo.world.train_world.py.
Beispiel
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
from ultralytics import YOLOWorld
data = dict(
train=dict(
yolo_data=["Objects365.yaml"],
grounding_data=[
dict(
img_path="../datasets/flickr30k/images",
json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
),
dict(
img_path="../datasets/GQA/images",
json_file="../datasets/GQA/final_mixed_train_no_coco.json",
),
],
),
val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)
Zitate und Danksagungen
Wir danken dem Tencent AILab Computer Vision Center für seine Pionierarbeit bei der Objekterkennung mit offenem Vokabular in Echtzeit mit YOLO-World:
Die Originalarbeit YOLO-World ist auf arXiv zu finden. Der Quellcode des Projekts und weitere Ressourcen können über das GitHub-Repository abgerufen werden. Wir freuen uns, dass sie sich für den Fortschritt auf diesem Gebiet einsetzen und ihre wertvollen Erkenntnisse mit der Gemeinschaft teilen.
Erstellt 2024-02-14, Aktualisiert 2024-05-02
Autoren: RizwanMunawar (2), glenn-jocher (3), Burhan-Q (1), Laughing-q (4)