YOLO-Wereldmodel
Het YOLO-Wereldmodel introduceert een geavanceerd, real-time Ultralytics YOLOv8-gebaseerde benadering voor Open woordenschatdetectietaken. Deze innovatie maakt het mogelijk om elk object in een afbeelding te detecteren op basis van beschrijvende teksten. Door de rekenkundige eisen aanzienlijk te verlagen met behoud van concurrerende prestaties, ontpopt YOLO-World zich als een veelzijdig hulpmiddel voor talloze vision-gebaseerde toepassingen.
Kijken: YOLO Wereld trainingsworkflow op aangepaste dataset
Overzicht
YOLO-World pakt de uitdagingen aan van traditionele Open-Vocabulaire detectiemodellen, die vaak afhankelijk zijn van omslachtige Transformer-modellen die veel rekenkracht vereisen. De afhankelijkheid van deze modellen van vooraf gedefinieerde objectcategorieën beperkt ook hun bruikbaarheid in dynamische scenario's. YOLO World blaast het YOLOv8 framework nieuw leven in met open woordenschatdetectiemogelijkheden, maakt gebruik van vision-taalmodellering en pre-training op uitgebreide datasets om uit te blinken in het identificeren van een breed scala aan objecten in zero-shot scenario's met ongeëvenaarde efficiëntie.
Belangrijkste kenmerken
-
Real-time oplossing: Door gebruik te maken van de berekeningssnelheid van CNN's levert YOLO-World een snelle oplossing voor het detecteren van open woordenschat, voor industrieën die onmiddellijke resultaten nodig hebben.
-
Efficiëntie en prestaties: YOLO-World verlaagt de rekenkracht en de benodigde bronnen zonder dat dit ten koste gaat van de prestaties en biedt een robuust alternatief voor modellen als SAM , maar tegen een fractie van de rekenkosten, waardoor real-time toepassingen mogelijk zijn.
-
Inferentie met offline woordenschat: YOLO-World introduceert een "prompt-then-detect" strategie, waarbij een offline woordenschat wordt gebruikt om de efficiëntie verder te verbeteren. Deze aanpak maakt het mogelijk om aangepaste aanwijzingen die vooraf zijn berekend, inclusief bijschriften of categorieën, te coderen en op te slaan als offline woordenschat, waardoor het detectieproces wordt gestroomlijnd.
-
Aangedreven door YOLOv8: Gebouwd op Ultralytics YOLOv8YOLO-World maakt gebruik van de nieuwste ontwikkelingen in realtime objectdetectie om open woordenschat met ongeëvenaarde nauwkeurigheid en snelheid te detecteren.
-
Uitmuntende benchmarks: YOLO-World presteert beter dan bestaande detectoren met een open woordenschat, waaronder MDETR en de GLIP-reeks, in termen van snelheid en efficiëntie op standaardbenchmarks, wat de superieure capaciteiten van YOLOv8 op een enkele NVIDIA V100 GPU aantoont.
-
Veelzijdige toepassingen: YOLO-Worlds innovatieve benadering ontsluit nieuwe mogelijkheden voor een veelheid aan vision-taken en levert snelheidsverbeteringen van grootteordes ten opzichte van bestaande methoden.
Beschikbare modellen, ondersteunde taken en bedrijfsmodi
In dit gedeelte worden de beschikbare modellen beschreven met hun specifieke voorgetrainde gewichten, de taken die ze ondersteunen en hun compatibiliteit met verschillende bedrijfsmodi zoals Inferentie, Validatie, Training en Exporteren, aangeduid met ✅ voor ondersteunde modi en ❌ voor niet-ondersteunde modi.
Opmerking
Alle gewichten van YOLOv8-World zijn direct gemigreerd vanuit de officiële YOLO-World repository, waarmee hun uitstekende bijdragen worden benadrukt.
Type model | Voorgetrainde gewichten | Ondersteunde taken | Inferentie | Validatie | Training | Exporteer |
---|---|---|---|---|---|---|
YOLOv8s-wereld | yolov8s-world.pt | Objectdetectie | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-wereldv2 | yolov8s-wereldv2.pt | Objectdetectie | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-wereld | yolov8m-world.pt | Objectdetectie | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-wereldv2 | yolov8m-wereldv2.pt | Objectdetectie | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-wereld | yolov8l-world.pt | Objectdetectie | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-wereldv2 | yolov8l-wereldv2.pt | Objectdetectie | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-wereld | yolov8x-world.pt | Objectdetectie | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-wereldv2 | yolov8x-wereldv2.pt | Objectdetectie | ✅ | ✅ | ✅ | ✅ |
Nul-overdracht op COCO-dataset
Type model | mAP | mAP50 | mAP75 |
---|---|---|---|
yolov8s-wereld | 37.4 | 52.0 | 40.6 |
yolov8s-wereldv2 | 37.7 | 52.2 | 41.0 |
yolov8m-wereld | 42.0 | 57.0 | 45.6 |
yolov8m-wereldv2 | 43.0 | 58.4 | 46.8 |
yolov8l-wereld | 45.7 | 61.3 | 49.8 |
yolov8l-wereldv2 | 45.8 | 61.3 | 49.8 |
yolov8x-wereld | 47.0 | 63.0 | 51.2 |
yolov8x-wereldv2 | 47.1 | 62.8 | 51.4 |
Voorbeelden
De YOLO-wereldmodellen zijn eenvoudig te integreren in je Python toepassingen. Ultralytics biedt gebruiksvriendelijke Python API en CLI commando's om de ontwikkeling te stroomlijnen.
Treingebruik
Tip
We raden sterk aan om yolov8-worldv2
model voor aangepaste training, omdat het deterministische training ondersteunt en ook gemakkelijk andere formaten kan exporteren, zoals onnx/tensorrt.
Objectdetectie is eenvoudig met de train
methode, zoals hieronder geïllustreerd:
Voorbeeld
PyTorch voorgetraind *.pt
modellen en configuratie *.yaml
bestanden kunnen worden doorgegeven aan de YOLOWorld()
klasse om een instantie van een model te maken in python:
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')
Gebruik voorspellen
Objectdetectie is eenvoudig met de predict
methode, zoals hieronder geïllustreerd:
Voorbeeld
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()
Dit fragment laat de eenvoud zien van het laden van een voorgetraind model en het uitvoeren van een voorspelling op een afbeelding.
Val Gebruik
Modelvalidatie op een dataset wordt als volgt gestroomlijnd:
Voorbeeld
Spoorgebruik
Het volgen van objecten met YOLO-Wereldmodel op een video/afbeelding wordt als volgt gestroomlijnd:
Voorbeeld
Opmerking
De YOLO-World modellen die worden geleverd door Ultralytics zijn vooraf geconfigureerd met COCO dataset categorieën als onderdeel van hun offline vocabulaire, waardoor de efficiëntie voor onmiddellijke toepassing wordt verbeterd. Door deze integratie kunnen de YOLOv8-World modellen direct de 80 standaard categorieën uit de COCO dataset herkennen en voorspellen zonder dat er extra instellingen of aanpassingen nodig zijn.
Aanwijzingen instellen
Het YOLO-World raamwerk maakt het mogelijk om klassen dynamisch te specificeren via aangepaste aanwijzingen, waardoor gebruikers het model kunnen aanpassen aan hun specifieke behoeften zonder opnieuw te hoeven trainen. Deze functie is vooral handig voor het aanpassen van het model aan nieuwe domeinen of specifieke taken die oorspronkelijk geen deel uitmaakten van de trainingsgegevens. Door aangepaste aanwijzingen in te stellen, kunnen gebruikers de aandacht van het model richten op objecten die van belang zijn, waardoor de relevantie en nauwkeurigheid van de detectieresultaten worden verbeterd.
Als je toepassing bijvoorbeeld alleen 'persoon' en 'bus' objecten moet detecteren, dan kun je deze klassen direct specificeren:
Voorbeeld
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()
Je kunt een model ook opslaan nadat je aangepaste klassen hebt ingesteld. Door dit te doen maak je een versie van het YOLO-World model dat gespecialiseerd is voor jouw specifieke gebruik. Dit proces voegt je aangepaste klassedefinities direct in het modelbestand in, waardoor het model klaar is voor gebruik met je gespecificeerde klassen zonder verdere aanpassingen. Volg deze stappen om je aangepaste YOLOv8 model op te slaan en te laden:
Voorbeeld
Laad eerst een YOLO-World model, stel er aangepaste klassen voor in en sla het op:
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")
Na het opslaan gedraagt het aangepaste_yolov8s.pt model zich als elk ander voorgetraind YOLOv8 model, maar met een belangrijk verschil: het is nu geoptimaliseerd om alleen de door jou gedefinieerde klassen te detecteren. Deze aanpassing kan de detectieprestaties en -efficiëntie voor jouw specifieke toepassingsscenario's aanzienlijk verbeteren.
Voordelen van besparen met aangepaste woordenschat
- Efficiëntie: Stroomlijnt het detectieproces door zich te richten op relevante objecten, waardoor de computationele overhead wordt verminderd en de inferentie wordt versneld.
- Flexibiliteit: Het model kan eenvoudig worden aangepast aan nieuwe detectietaken of niche-detectietaken zonder dat uitgebreide hertraining of gegevensverzameling nodig is.
- Eenvoud: Vereenvoudigt de implementatie doordat het niet meer nodig is om tijdens runtime herhaaldelijk aangepaste klassen te specificeren, waardoor het model direct bruikbaar is met het ingebedde vocabulaire.
- Prestaties: Verbetert de detectienauwkeurigheid voor gespecificeerde klassen door de aandacht en bronnen van het model te richten op het herkennen van de gedefinieerde objecten.
Deze benadering biedt een krachtige manier om geavanceerde objectdetectiemodellen aan te passen aan specifieke taken, waardoor geavanceerde AI toegankelijker wordt en toepasbaar in een breder scala aan praktische toepassingen.
Officiële resultaten vanaf nul reproduceren (Experimenteel)
Datasets voorbereiden
- Treingegevens
Dataset | Type | Monsters | Dozen | Annotatiebestanden |
---|---|---|---|---|
Objecten365v1 | Opsporing | 609k | 9621k | objecten365_train.json |
GQA | Aarding | 621k | 3681k | eind_gemengde_training_geen_coco.json |
Flickr30k | Aarding | 149k | 641k | eind_flickr_separateGT_train.json |
- Waarde gegevens
Dataset | Type | Annotatiebestanden |
---|---|---|
LVIS minival | Opsporing | minival.txt |
Start training vanaf nul
Opmerking
WorldTrainerFromScratch
is in hoge mate aangepast om tegelijkertijd yolo-wereldmodellen te kunnen trainen op zowel detectie datasets als aardings datasets. Kijk voor meer details op ultralytics.model.yolo.world.train_world.py.
Voorbeeld
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)
Citaten en Erkenningen
Onze dank gaat uit naar het Tencent AILab Computer Vision Center voor hun pionierswerk op het gebied van realtime objectdetectie met open woordenschat met YOLO-World:
Het originele YOLO-World artikel is beschikbaar op arXiv. De broncode van het project en aanvullende bronnen zijn toegankelijk via hun GitHub repository. We waarderen hun inzet om het veld vooruit te helpen en hun waardevolle inzichten met de gemeenschap te delen.
Gemaakt op 2024-02-14, Bijgewerkt op 2024-05-02
Auteurs: RizwanMunawar (2), glenn-jocher (3), Burhan-Q (1), Lachen-q (4)