Overslaan naar inhoud

YOLOv10: End-to-end objectdetectie in realtime

YOLOv10, gebouwd op het Ultralytics Python pakket door onderzoekers van de Tsinghua Universiteit, introduceert een nieuwe benadering van realtime objectdetectie, waarbij zowel de tekortkomingen in de nabewerking als de modelarchitectuur van eerdere YOLO versies worden aangepakt. Door het elimineren van niet-maximale onderdrukking (NMS) en het optimaliseren van verschillende modelcomponenten, bereikt YOLOv10 state-of-the-art prestaties met aanzienlijk minder rekenoverhead. Uitgebreide experimenten tonen de superieure afweging tussen nauwkeurigheid en latentie aan op meerdere modelschalen.

YOLOv10 consistente dubbele toewijzing voor NMS-vrije training

Overzicht

Real-time objectdetectie is gericht op het nauwkeurig voorspellen van objectcategorieën en -posities in afbeeldingen met een lage latentie. De YOLO serie heeft voorop gelopen in dit onderzoek vanwege de balans tussen prestaties en efficiëntie. De afhankelijkheid van NMS en architectonische inefficiënties hebben optimale prestaties echter in de weg gestaan. YOLOv10 pakt deze problemen aan door consistente dubbele toewijzingen te introduceren voor NMS-vrije training en een holistische efficiëntie-nauwkeurigheidsgedreven modelontwerpstrategie.

Architectuur

De architectuur van YOLOv10 bouwt voort op de sterke punten van eerdere YOLO modellen en introduceert tegelijkertijd een aantal belangrijke innovaties. De architectuur van het model bestaat uit de volgende componenten:

  1. Ruggengraat: De backbone in YOLOv10, die verantwoordelijk is voor de extractie van eigenschappen, gebruikt een verbeterde versie van CSPNet (Cross Stage Partial Network) om de gradiëntstroom te verbeteren en redundantie in de berekening te verminderen.
  2. Hals: De nek is ontworpen om kenmerken van verschillende schalen samen te voegen en door te geven aan het hoofd. Het bevat PAN (Path Aggregation Network) lagen voor effectieve samenvoeging van kenmerken op meerdere schalen.
  3. One-to-Many Head: Genereert meerdere voorspellingen per object tijdens de training om rijke toezichtsignalen te leveren en de leernauwkeurigheid te verbeteren.
  4. One-to-One Head: Genereert een enkele beste voorspelling per object tijdens de inferentie om de noodzaak voor NMS te elimineren, waardoor de latentie wordt verminderd en de efficiëntie wordt verbeterd.

Belangrijkste kenmerken

  1. NMS-vrije training: Maakt gebruik van consistente dubbele toewijzingen om de noodzaak voor NMS te elimineren, waardoor de inferentie latentie wordt verminderd.
  2. Holistisch modelontwerp: Uitgebreide optimalisatie van verschillende componenten vanuit zowel efficiëntie- als nauwkeurigheidsperspectief, waaronder lichtgewicht classificatiekoppen, ruimtelijk-kanaal ontkoppelde downsampling en blokontwerp met rangschikking.
  3. Verbeterde modelmogelijkheden: Bevat grote-kernelconvoluties en gedeeltelijke zelfattentiemodules om de prestaties te verbeteren zonder aanzienlijke rekenkosten.

Modelvarianten

De YOLOv10 is verkrijgbaar in verschillende schalen voor verschillende toepassingen:

  • YOLOv10-N: Nano-versie voor omgevingen met extreem beperkte bronnen.
  • YOLOv10-S: Kleine versie met balans tussen snelheid en nauwkeurigheid.
  • YOLOv10-M: Middelgrote versie voor algemeen gebruik.
  • YOLOv10-B: Gebalanceerde versie met grotere breedte voor hogere nauwkeurigheid.
  • YOLOv10-L: Grote versie voor hogere nauwkeurigheid ten koste van meer rekenkracht.
  • YOLOv10-X: Extra grote versie voor maximale nauwkeurigheid en prestaties.

Prestaties

YOLOv10 presteert beter dan eerdere YOLO versies en andere geavanceerde modellen in termen van nauwkeurigheid en efficiëntie. YOLOv10-S is bijvoorbeeld 1,8x sneller dan RT-DETR-R18 met vergelijkbare AP op de COCO dataset, en YOLOv10-B heeft 46% minder latentie en 25% minder parameters dan YOLOv9-C met dezelfde prestaties.

Model Invoergrootte APval FLOP's (G) Vertraging (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

Latency gemeten met TensorRT FP16 op T4 GPU.

Methodologie

Consistente dubbele toewijzingen voor NMS-vrije training

YOLOv10 maakt gebruik van dubbele labeltoewijzingen, waarbij één-op-veel en één-op-één strategieën worden gecombineerd tijdens de training om een uitgebreide supervisie en efficiënte end-to-end inzet te garanderen. De consistente matching metric stemt de supervisie tussen beide strategieën op elkaar af, waardoor de kwaliteit van de voorspellingen tijdens de inferentie wordt verbeterd.

Holistisch, op efficiëntie en nauwkeurigheid gebaseerd modelontwerp

Efficiëntieverbeteringen

  1. Lichtgewicht classificatiekop: Vermindert de computationele overhead van de classificatiekop door gebruik te maken van dieptescheidende convoluties.
  2. Ruimtelijk-kanaal ontkoppelde Down sampling: Ontkoppelt ruimtelijke reductie en kanaalmodulatie om informatieverlies en rekenkosten te minimaliseren.
  3. Ranggestuurd blokontwerp: Past het blokontwerp aan op basis van intrinsieke stage redundantie, zodat parameters optimaal worden gebruikt.

Nauwkeurigheidsverbeteringen

  1. Convolutie met grote kern: Vergroot het receptieve veld om het vermogen om eigenschappen te extraheren te vergroten.
  2. Partial Self-Attention (PSA): Bevat zelf-attentie modules om het leren van de globale representatie te verbeteren met minimale overhead.

Experimenten en resultaten

YOLOv10 is uitgebreid getest op standaard benchmarks zoals COCO en heeft superieure prestaties en efficiëntie laten zien. Het model behaalt state-of-the-art resultaten in verschillende varianten en laat aanzienlijke verbeteringen zien in latentie en nauwkeurigheid in vergelijking met eerdere versies en andere hedendaagse detectoren.

Vergelijkingen

YOLOv10 vergelijking met SOTA object detectors

Vergeleken met andere geavanceerde detectoren:

  • YOLOv10-S / X zijn 1,8× / 1,3× sneller dan RT-DETR-R18 / R101 met vergelijkbare nauwkeurigheid.
  • YOLOv10-B heeft 25% minder parameters en 46% lagere latentie dan YOLOv9-C bij dezelfde nauwkeurigheid
  • YOLOv10-L / X presteert 0,3 AP / 0,5 AP beter dan YOLOv8-L / X met 1,8× / 2,3× minder parameters.

Hier volgt een gedetailleerde vergelijking van de YOLOv10-varianten met andere geavanceerde modellen:

Model Params
(M)
FLOP's
(G)
mAPval
50-95
Latency
(ms)
Latency-forward
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
Goud-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Goud-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 7.2 21.6 46.8 2.49 2.39
RT-DETR-R18 20.0 60.0 46.5 4.58 4.49
YOLOv6-3.0-M 34.9 85.8 49.1 5.63 4.56
Goud-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Goud-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 29.5 160.4 54.4 10.70 10.60

Voorbeelden

Voor het voorspellen van nieuwe afbeeldingen met YOLOv10:

Voorbeeld

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

Voor het trainen van YOLOv10 op een aangepaste dataset:

Voorbeeld

from ultralytics import YOLO

# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

Ondersteunde taken en modi

De serie YOLOv10-modellen biedt een reeks modellen, elk geoptimaliseerd voor objectdetectie met hoge prestaties. Deze modellen voldoen aan verschillende rekenbehoeften en nauwkeurigheidseisen, waardoor ze veelzijdig zijn voor een breed scala aan toepassingen.

Model Bestandsnamen Taken Inferentie Validatie Training Exporteer
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Objectdetectie ✅ ✅ ✅ ✅

YOLOv10 exporteren

Vanwege de nieuwe bewerkingen die met YOLOv10 zijn geïntroduceerd, worden momenteel niet alle exportformaten die Ultralytics biedt ondersteund. De volgende tabel laat zien welke formaten met succes zijn geconverteerd met Ultralytics voor YOLOv10. Voel je vrij om een pull request te openen als je een bijdrage kunt leveren voor het toevoegen van exportondersteuning van extra formaten voor YOLOv10.

Exportformaat Ondersteund
TorchScript ✅
ONNX ✅
OpenVINO ✅
TensorRT ✅
CoreML ❌
TF SavedModel ❌
TF GraphDef ❌
TF Lite ❌
TF Rand TPU ❌
TF.js ❌
PaddlePaddle ❌
NCNN ❌

Conclusie

YOLOv10 stelt een nieuwe norm in realtime objectdetectie door de tekortkomingen van eerdere YOLO versies aan te pakken en innovatieve ontwerpstrategieën toe te passen. Het vermogen om hoge nauwkeurigheid te leveren tegen lage rekenkosten maakt het een ideale keuze voor een breed scala aan toepassingen in de echte wereld.

Citaten en Erkenningen

We willen de YOLOv10 auteurs van de Tsinghua Universiteit bedanken voor hun uitgebreide onderzoek en belangrijke bijdragen aan het Ultralytics raamwerk:

@article{THU-MIGyolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Ao Wang, Hui Chen, Lihao Liu, et al.},
  journal={arXiv preprint arXiv:2405.14458},
  year={2024},
  institution={Tsinghua University},
  license = {AGPL-3.0}
}

Voor een gedetailleerde implementatie, architectonische innovaties en experimentele resultaten verwijzen we naar het YOLOv10 onderzoeksartikel en de GitHub repository van het Tsinghua University team.

FAQ

Wat is YOLOv10 en waarin verschilt het van eerdere YOLO versies?

YOLOv10, ontwikkeld door onderzoekers van de Tsinghua Universiteit, introduceert een aantal belangrijke innovaties voor realtime objectdetectie. Het elimineert de noodzaak voor niet-maximale onderdrukking (NMS) door gebruik te maken van consistente dubbele toewijzingen tijdens de training en geoptimaliseerde modelcomponenten voor superieure prestaties met minder rekenoverhead. Bekijk voor meer informatie over de architectuur en belangrijkste functies het overzichtsgedeelte van YOLOv10.

Hoe kan ik beginnen met het uitvoeren van inferentie met YOLOv10?

Voor eenvoudige inferentie kun je de bibliotheek Ultralytics YOLO Python of de opdrachtregelinterface (CLI) gebruiken. Hieronder staan voorbeelden van het voorspellen van nieuwe afbeeldingen met YOLOv10:

Voorbeeld

from ultralytics import YOLO

# Load the pre-trained YOLOv10-N model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

Ga voor meer gebruiksvoorbeelden naar onze sectie Gebruiksvoorbeelden.

Welke modelvarianten biedt YOLOv10 en wat zijn hun gebruikssituaties?

De YOLOv10 biedt verschillende modelvarianten voor verschillende gebruikssituaties:

  • YOLOv10-N: geschikt voor omgevingen met extreem beperkte bronnen
  • YOLOv10-S: Evenwicht tussen snelheid en nauwkeurigheid
  • YOLOv10-M: universeel gebruik
  • YOLOv10-B: Hogere nauwkeurigheid met grotere breedte
  • YOLOv10-L: Hoge nauwkeurigheid ten koste van rekenkracht
  • YOLOv10-X: Maximale nauwkeurigheid en prestaties

Elke variant is ontworpen voor verschillende berekeningsbehoeften en nauwkeurigheidseisen, waardoor ze veelzijdig zijn voor uiteenlopende toepassingen. Bekijk het gedeelte Modelvarianten voor meer informatie.

Hoe verbetert de NMS-vrije aanpak in YOLOv10 de prestaties?

YOLOv10 elimineert de noodzaak voor niet-maximale onderdrukking (NMS) tijdens inferentie door gebruik te maken van consistente dubbele toewijzingen voor training. Deze aanpak vermindert de inferentie latentie en verbetert de voorspellingsefficiëntie. De architectuur bevat ook een één-op-één hoofd voor inferentie, zodat elk object één enkele beste voorspelling krijgt. Zie voor een gedetailleerde uitleg de sectie Consistente dubbele toewijzingen voor NMS-vrije training.

Waar kan ik de exportopties voor YOLOv10-modellen vinden?

YOLOv10 ondersteunt verschillende exportformaten, waaronder TorchScript, ONNX, OpenVINO, en TensorRT. Niet alle exportformaten van Ultralytics worden momenteel echter ondersteund voor YOLOv10 vanwege de nieuwe bewerkingen. Ga voor meer informatie over de ondersteunde formaten en instructies voor het exporteren naar de sectie YOLOv10 exporteren.

Wat zijn de prestatiebenchmarks voor YOLOv10-modellen?

YOLOv10 presteert beter dan eerdere YOLO versies en andere geavanceerde modellen in zowel nauwkeurigheid als efficiëntie. YOLOv10-S is bijvoorbeeld 1,8x sneller dan RT-DETR-R18 met een vergelijkbare AP op de COCO dataset. YOLOv10-B vertoont 46% minder latentie en 25% minder parameters dan YOLOv9-C met dezelfde prestaties. Gedetailleerde benchmarks zijn te vinden in de sectie Vergelijkingen.



Aangemaakt 2024-05-25, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (5), zhixuwei (1), abirami-vina (1), RizwanMunawar (3), Burhan-Q (1)

Reacties