YOLO-World: Eine Demo zur Echtzeit-Objekterkennung ohne Schuss
Einführung
YOLO-World ist ein SOTA-Modell, das die YOLO-Serie ergänzt. Dieses neue Modell kann eine Objekterkennung für (angeblich) jedes Objekt durchführen, ohne dass das Modell trainiert werden muss. Das ist etwas Neues und Unglaubliches!
In diesem Artikel werfen wir einen Blick auf YOLO-World, einen bahnbrechenden Zero-Shot-Objektdetektor, der im Vergleich zu seinen Vorgängern eine bemerkenswerte 20-fache Geschwindigkeitssteigerung aufweist. Wir werden seine Architektur untersuchen, die Hauptfaktoren analysieren, die zu seiner außergewöhnlichen Geschwindigkeit beitragen, und, was am wichtigsten ist, wir werden den Prozess des Ausführens des Modells durchlaufen, um sowohl Bilder als auch Videos zu analysieren.
Was ist neu in der YOLO-Welt?
Wenn wir über traditionelle Objekterkennungsmodelle wie Faster R-CNN, Single Shot Detectors (SSD) oder YOLO sprechen, beschränken sich diese Modelle auf die Erkennung von Objekten innerhalb der vordefinierten Kategorien (wie den 80 Kategorien im COCO-Datensatz). Dies ist ein Aspekt aller überwachten Lernmodelle. In jüngster Zeit haben Forscher ihre Aufmerksamkeit auf die Entwicklung von Modellen für offenes Vokabular gerichtet. Diese Modelle zielen darauf ab, die Notwendigkeit der Erkennung neuer Objekte zu erfüllen, ohne dass neue Datensätze erstellt werden müssen, ein Prozess, der sowohl zeitaufwändig als auch kostspielig ist.
Das YOLO-World-Modell stellt eine hochmoderne Echtzeitmethode dar, die auf Ultralytics YOLOv8 basiert und Aufgaben zur Erkennung offener Vokabeln revolutioniert. Diese Weiterentwicklung ermöglicht die Identifizierung verschiedener Objekte in Bildern mithilfe beschreibender Texte. Mit reduzierten Rechenanforderungen und dennoch erstklassiger Leistung erweist sich YOLO-World als anpassungsfähig für ein breites Spektrum visionsbasierter Anwendungen.
Vergleich der Geschwindigkeits- und Genauigkeitskurven. Auf dem LVIS-Minimal bewertete Modelle und Inferenzgeschwindigkeiten wurden auf einer NVIDIA V100 ohne TensorRT gemessen. Die Größe des Kreises stellt die Größe des Modells dar. Quelle
Modellarchitektur
YOLO-World integriert im Gegensatz zu herkömmlichen YOLO-Detektoren die Texteingabe durch den Einsatz eines Text-Encoders zum Kodieren von Texteinbettungen. Gleichzeitig verarbeitet ein Bildkodierer das Eingabebild in mehrskalige Merkmale. Das RepVL-PAN-Modell führt dann Bild- und Textfunktionen auf mehreren Ebenen zusammen. Schließlich sagt YOLO-World Begrenzungsrahmen und Objekteinbettungen voraus, die mit den im Eingabetext erwähnten Kategorien oder Substantiven übereinstimmen.
Die Architektur der YOLO-World besteht aus einem YOLO-Detektor, einem Text-Encoder und einem Re-parametrisierbaren Vision-Language Path Aggregation Network ( RepVL-PAN).
YOLO-World baut in erster Linie auf YOLOv8 auf, das ein Darknet-Backbone als Bildencoder, ein Path Aggregation Network (PAN) zum Generieren von mehrskaligen Feature-Pyramiden und einen Kopf für Bounding-Box-Regression und Objekteinbettungen umfasst.
Der Detektor erfasst mehrskalige Merkmale aus dem Eingabebild, wandelt den Text mit einem Textencoder in Einbettungen um, nutzt ein Netzwerk zur mehrstufigen Fusion von Bildmerkmalen und Texteinbettungen und integriert für denselben Zweck ein benutzerdefiniertes Netzwerk.
Die Verwendung eines leichteren und schnelleren CNN-Netzwerks als Rückgrat ist einer der Gründe für die Geschwindigkeit von YOLO-World. Das zweite Prinzip ist das Prompt-dann-Detect-Paradigma. Anstatt Ihre Eingabeaufforderung jedes Mal zu kodieren, wenn Sie eine Inferenz ausführen, verwendet YOLO-World Clip, um den Text in Einbettungen umzuwandeln. Diese Einbettungen werden dann zwischengespeichert und wiederverwendet, sodass keine Textkodierung in Echtzeit erforderlich ist.
YOLO-World erreicht seine Geschwindigkeit durch zwei Hauptstrategien. Erstens nutzt es ein leichteres und schnelleres CNN-Netzwerk als Rückgrat. Zweitens wird ein „Prompt-dann-Detect“-Paradigma verwendet. Im Gegensatz zu herkömmlichen Methoden, bei denen jedes Mal während der Inferenz Textaufforderungen codiert werden, verwendet YOLO-World Clip, um Text in Einbettungen umzuwandeln. Diese Einbettungen werden zwischengespeichert und wiederverwendet, sodass keine Textkodierung in Echtzeit erforderlich ist, wodurch Geschwindigkeit und Effizienz erhöht werden.
Code-Demo
Beginnen wir mit der Überprüfung der laufenden GPU
!nvidia-smi
Nachdem wir nun die bestätigte Ausgabe haben, dass die CUDA-Sitzung GPU-Unterstützung bietet, ist es an der Zeit, die erforderlichen Bibliotheken zu installieren.
!pip install -U ultralytics
Sobald die Anforderung erfüllt ist, fahren Sie mit dem nächsten Schritt des Imports der Bibliotheken fort
import ultralytics
ultralytics.__version__
Output-
'8.1.28'
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('dog.png',save=True)
Show results
results[0].show()
Wenn wir nun möchten, dass das Modell bestimmte Objekte im Bild ohne Training vorhersagt, können wir dies tun, indem wir einfach das Argument an die Funktion model.set_classes()
übergeben.
Lassen Sie uns dasselbe Bild verwenden und versuchen, den Rucksack, einen Lastwagen und ein Auto vorherzusagen, die sich im Hintergrund befinden.
# Define custom classes
model.set_classes(["backpack", "car","dog","person","truck"])
Execute prediction for specified categories on an image
results = model.predict('/notebooks/data/dog.jpg', save=True)
Show results
results[0].show()
Versuchen wir als nächstes, mit einem anderen Bild zu experimentieren, und hier werden wir nur ein Paar Schuhe vorhersagen.
# Define custom classes
model.set_classes(["shoes"])Execute prediction for specified categories on an image
results = model.predict('/notebooks/data/Two-dogs-on-a-walk.jpg', save=True)
Show results
results[0].show()
Objekterkennung mittels Video
Probieren wir nun das Modell „yolov8s-world.pt“ aus, um Objekte in einem Video zu erkennen. Wir werden den folgenden Code ausführen, um die Objekterkennung anhand eines gespeicherten Videos durchzuführen.
!yolo detect predict model=yolov8s-world.pt source="/content/pexels-anthony-shkraba-8064146 (1440p).mp4"
Dieser Codeblock generiert einen „runs“-Ordner in Ihrem aktuellen Verzeichnis. In diesem Ordner finden Sie das im Unterordner „predict“ gespeicherte Video, das sich wiederum im Ordner „detect“ befindet.
Verfügbare Modelle
In der folgenden Tabelle finden Sie Einzelheiten zu den verfügbaren Modellen und den von ihnen unterstützten Aufgaben.
Ultralytics bietet eine Python-API und CLI-Befehle, die für eine benutzerfreundliche Entwicklung konzipiert sind und den Entwicklungsprozess vereinfachen.
Erkennungsfunktionen mit definierten Kategorien
Wir haben die Erkennungsfähigkeiten des Modells mit unseren definierten Kategorien ausprobiert. Hier sind einige Bilder, die wir YOLOV8m ausprobiert haben. Probieren Sie gerne auch andere Modelle von YOLO-World aus.
Abschluss
In diesem Artikel stellen wir YOLO-World vor, einen fortschrittlichen Echtzeitdetektor, der darauf abzielt, die Effizienz und die Fähigkeit zum offenen Wortschatz in praktischen Umgebungen zu verbessern. Dieser Ansatz ist eine neuartige Ergänzung zu den traditionellen YOLO-Architekturen zur Unterstützung des Vortrainings und der Erkennung von offenem Vokabular und nutzt RepVL-PAN, um Seh- und Sprachinformationen effektiv zu integrieren. Unsere Experimente mit verschiedenen Bildern demonstrieren die überlegene Geschwindigkeit und Leistung von YOLO-World und demonstrieren die Vorteile des Vision-Language-Pre-Trainings an kompakten Modellen. Wir stellen uns YOLO-World als einen neuen Maßstab für reale Aufgaben zur Erkennung offener Vokabeln vor.
Referenzen
- Original-Forschungsarbeit
- Ultralytics YOLO-Blog
- YOLO-World: Echtzeit-Objekterkennung ohne Schuss erklärt