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 tackles the challenges faced by traditional Open-Vocabulary detection models, which often rely on cumbersome Transformer models requiring extensive computational resources. These models' dependence on pre-defined object categories also restricts their utility in dynamic scenarios. YOLO-World revitalizes the YOLOv8 framework with open-vocabulary detection capabilities, employing vision-language modeling and pre-training on expansive datasets to excel at identifying a broad array of objects in zero-shot scenarios with unmatched efficiency.
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 Detektoren mit offenem Vokabular, darunter MDETR und die GLIP-Serie, in Bezug auf Geschwindigkeit und Effizienz bei Standard-Benchmarks und zeigt die überlegene Leistungsfähigkeit von YOLOv8 auf einem 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.
Object detection is straightforward with the train
Methode, wie unten dargestellt:
Beispiel
PyTorch pretrained *.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
The YOLO-World framework allows for the dynamic specification of classes through custom prompts, empowering users to tailor the model to their specific needs without retraining. This feature is particularly useful for adapting the model to new domains or specific tasks that were not originally part of the training data. By setting custom prompts, users can essentially guide the model's focus towards objects of interest, enhancing the relevance and accuracy of the detection results.
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.
- Performance: Enhances detection accuracy for specified classes by focusing the model's attention and resources on recognizing the defined objects.
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 import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
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.
FAQ
Was ist das YOLO-Weltmodell und wie funktioniert es?
Das YOLO-Weltmodell ist ein fortschrittlicher Ansatz zur Objekterkennung in Echtzeit, der auf dem Ultralytics YOLOv8 Framework. Es zeichnet sich durch die Erkennung von Objekten innerhalb eines Bildes auf der Grundlage von beschreibenden Texten aus. Durch die Modellierung der Bildsprache und das Vortraining auf großen Datensätzen erreicht YOLO-World eine hohe Effizienz und Leistung bei deutlich reduziertem Rechenaufwand und ist damit ideal für Echtzeitanwendungen in verschiedenen Branchen.
Wie geht YOLO-World mit benutzerdefinierten Eingabeaufforderungen um?
YOLO-World supports a "prompt-then-detect" strategy, which utilizes an offline vocabulary to enhance efficiency. Custom prompts like captions or specific object categories are pre-encoded and stored as offline vocabulary embeddings. This approach streamlines the detection process without the need for retraining. You can dynamically set these prompts within the model to tailor it to specific detection tasks, as shown below:
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
Warum sollte ich YOLO-World den traditionellen Modellen zur Erkennung von offenem Vokabular vorziehen?
YOLO-World bietet mehrere Vorteile gegenüber herkömmlichen Modellen zur Erkennung von offenem Vokabular:
- Leistung in Echtzeit: Es nutzt die Rechengeschwindigkeit von CNNs, um eine schnelle und effiziente Erkennung zu ermöglichen.
- Effizienz und geringer Ressourcenbedarf: YOLO-World bietet eine hohe Leistung und reduziert gleichzeitig den Bedarf an Rechenleistung und Ressourcen erheblich.
- Anpassbare Prompts: Das Modell unterstützt die dynamische Einstellung von Prompts, so dass die Nutzer/innen benutzerdefinierte Erkennungsklassen ohne erneutes Training festlegen können.
- Hervorragende Benchmarks: Bei Standard-Benchmarks übertrifft er andere offene Vokabeldetektoren wie MDETR und GLIP in puncto Geschwindigkeit und Effizienz.
Wie trainiere ich ein YOLO-Weltmodell auf meinem Datensatz?
Das Trainieren eines YOLO-Weltmodells auf deinem Datensatz ist ganz einfach über die Python API oder CLI Befehle möglich. Hier erfährst du, wie du mit Python trainieren kannst:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")
# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
Oder mit CLI:
Welche vortrainierten YOLO-Weltmodelle gibt es und welche Aufgaben unterstützen sie?
Ultralytics bietet mehrere vortrainierte YOLO-Weltmodelle, die verschiedene Aufgaben und Betriebsarten unterstützen:
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 | ✅ | ✅ | ✅ | ✅ |
Wie kann ich die offiziellen Ergebnisse von YOLO-World von Grund auf reproduzieren?
Um die offiziellen Ergebnisse von Grund auf zu reproduzieren, musst du die Datensätze vorbereiten und das Training mithilfe des mitgelieferten Codes starten. Das Trainingsverfahren umfasst die Erstellung eines Datenwörterbuchs und die Ausführung der train
Methode mit einem eigenen Trainer:
from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
data = {
"train": {
"yolo_data": ["Objects365.yaml"],
"grounding_data": [
{
"img_path": "../datasets/flickr30k/images",
"json_file": "../datasets/flickr30k/final_flickr_separateGT_train.json",
},
{
"img_path": "../datasets/GQA/images",
"json_file": "../datasets/GQA/final_mixed_train_no_coco.json",
},
],
},
"val": {"yolo_data": ["lvis.yaml"]},
}
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)