YOLOv10: Echtzeit-End-to-End-Objekterkennung
YOLOv10, entwickelt auf der Grundlage des Ultralytics Python-Pakets von Forschern der Tsinghua-Universität, führt einen neuen Ansatz für die Objekterkennung in Echtzeit ein, der sowohl die Defizite in der Nachbearbeitung als auch in der Modellarchitektur früherer YOLO-Versionen behebt. Durch die Eliminierung von Non-Maximum Suppression (NMS) und die Optimierung verschiedener Modellkomponenten erreicht YOLOv10 eine State-of-the-Art-Performance mit deutlich reduziertem Rechenaufwand. Umfangreiche Experimente demonstrieren die überlegenen Kompromisse zwischen Genauigkeit und Latenz über mehrere Modellskalen hinweg.
Ansehen: Wie man YOLOv10 auf dem SKU-110k-Datensatz mit Ultralytics trainiert | Einzelhandelsdatensatz
Überblick
Die Echtzeit-Objekterkennung zielt darauf ab, Objektkategorien und -positionen in Bildern mit geringer Latenz genau vorherzusagen. Die YOLO-Serie steht aufgrund ihres Gleichgewichts zwischen Leistung und Effizienz an der Spitze dieser Forschung. Die Abhängigkeit von NMS und architektonische Ineffizienzen haben jedoch die optimale Leistung behindert. YOLOv10 behebt diese Probleme durch die Einführung von konsistenten Dual-Zuweisungen für NMS-freies Training und eine ganzheitliche, effizienz- und genauigkeitsorientierte Modelldesignstrategie.
Architektur
Die Architektur von YOLOv10 baut auf den Stärken früherer YOLO-Modelle auf und führt gleichzeitig mehrere wichtige Innovationen ein. Die Modellarchitektur besteht aus den folgenden Komponenten:
- Backbone: Verantwortlich für die Merkmalsextraktion. Das Backbone in YOLOv10 verwendet eine verbesserte Version von CSPNet (Cross Stage Partial Network), um den Gradientenfluss zu verbessern und die Rechenredundanz zu reduzieren.
- Neck: Der Neck dient dazu, Features aus verschiedenen Skalen zu aggregieren und an den Head weiterzuleiten. Er enthält PAN-Layer (Path Aggregation Network) für eine effektive multiskalige Feature-Fusion.
- One-to-Many Head: Generiert während des Trainings mehrere Vorhersagen pro Objekt, um reichhaltige Überwachungssignale bereitzustellen und die Lerngenauigkeit zu verbessern.
- One-to-One Head: Generiert während der Inferenz eine einzige beste Vorhersage pro Objekt, um die Notwendigkeit von NMS zu eliminieren, wodurch die Latenz reduziert und die Effizienz verbessert wird.
Hauptmerkmale
- NMS-Free Training: Nutzt konsistente Dual Assignments, um die Notwendigkeit von NMS zu eliminieren, wodurch die Inferenzlatenz reduziert wird.
- Holistic Model Design: Umfassende Optimierung verschiedener Komponenten sowohl aus Effizienz- als auch aus Genauigkeitsperspektive, einschließlich Lightweight Classification Heads, Spatial-Channel Decoupled Downsampling und Rank-Guided Block Design.
- Verbesserte Modellfähigkeiten: Integriert großkernige Faltungen und partielle Selbstaufmerksamkeitsmodule, um die Leistung ohne signifikante Rechenkosten zu verbessern.
Modellvarianten
YOLOv10 ist in verschiedenen Modellskalen erhältlich, um unterschiedlichen Anwendungsbedürfnissen gerecht zu werden:
- YOLOv10n: Nano-Version für extrem ressourcenbeschränkte Umgebungen.
- YOLOv10s: Kleine Version, die Geschwindigkeit und Genauigkeit ausbalanciert.
- YOLOv10m: Mittlere Version für den allgemeinen Gebrauch.
- YOLOv10b: Ausgewogene Version mit erhöhter Breite für höhere Genauigkeit.
- YOLOv10l: Große Version für höhere Genauigkeit auf Kosten erhöhter Rechenressourcen.
- YOLOv10x: Extra-große Version für maximale Genauigkeit und Leistung.
Performance
YOLOv10 übertrifft frühere YOLO-Versionen und andere hochmoderne Modelle in Bezug auf Genauigkeit und Effizienz. Beispielsweise ist YOLOv10s 1,8x schneller als RT-DETR-R18 mit ähnlichem AP auf dem COCO-Datensatz, und YOLOv10b hat 46 % weniger Latenz und 25 % weniger Parameter als YOLOv9-C bei gleicher Leistung.
Performance
Latenz gemessen mit TensorRT FP16 auf T4 GPU.
Modell | Eingabegröße | APval | FLOPs (G) | Latenz (ms) |
---|---|---|---|---|
YOLOv10n | 640 | 38.5 | 6.7 | 1.84 |
YOLOv10s | 640 | 46.3 | 21.6 | 2.49 |
YOLOv10m | 640 | 51.1 | 59.1 | 4.74 |
YOLOv10b | 640 | 52.5 | 92.0 | 5.74 |
YOLOv10l | 640 | 53.2 | 120.3 | 7.28 |
YOLOv10x | 640 | 54.4 | 160.4 | 10.70 |
Methodik
Consistent Dual Assignments for NMS-Free Training
YOLOv10 verwendet Dual Label Assignments, die One-to-Many- und One-to-One-Strategien während des Trainings kombinieren, um eine umfassende Überwachung und eine effiziente End-to-End-Bereitstellung zu gewährleisten. Die konsistente Matching-Metrik gleicht die Überwachung zwischen beiden Strategien ab und verbessert so die Qualität der Vorhersagen während der Inferenz.
Ganzheitliches, von Effizienz und Genauigkeit getriebenes Modelldesign
Effizienzsteigerungen
- Lightweight Classification Head: Reduziert den Rechenaufwand des Klassifikations-Heads durch die Verwendung von Depth-Wise Separable Convolutions.
- Spatial-Channel Decoupled Downsampling: Entkoppelt die räumliche Reduktion und die Kanalmodulation, um Informationsverluste und Rechenkosten zu minimieren.
- Rank-Guided Block Design: Passt das Blockdesign basierend auf der intrinsischen Stufenredundanz an, um eine optimale Parameternutzung zu gewährleisten.
Genauigkeitsverbesserungen
- Large-Kernel Convolution: Vergrößert das rezeptive Feld, um die Fähigkeit zur Merkmalsextraktion zu verbessern.
- Partial Self-Attention (PSA): Integriert Self-Attention-Module, um das globale Repräsentationslernen mit minimalem Overhead zu verbessern.
Experimente und Ergebnisse
YOLOv10 wurde umfassend auf Standard-Benchmarks wie COCO getestet und demonstriert überlegene Leistung und Effizienz. Das Modell erzielt in verschiedenen Varianten modernste Ergebnisse und zeigt im Vergleich zu früheren Versionen und anderen zeitgemäßen Detektoren deutliche Verbesserungen in Bezug auf Latenz und Genauigkeit.
Vergleiche
Verglichen mit anderen State-of-the-Art-Detektoren:
- YOLOv10s / x sind 1,8× / 1,3× schneller als RT-DETR-R18 / R101 mit ähnlicher Genauigkeit
- YOLOv10b hat 25 % weniger Parameter und 46 % geringere Latenz als YOLOv9-C bei gleicher Genauigkeit
- YOLOv10l / x übertrifft YOLOv8l / x um 0,3 AP / 0,5 AP mit 1,8× / 2,3× weniger Parametern
Performance
Hier ist ein detaillierter Vergleich der YOLOv10-Varianten mit anderen hochmodernen Modellen:
Modell | Parameter (M) |
FLOPs (G) |
mAPval 50-95 |
Latenz (ms) |
Latenz-Forward (ms) |
---|---|---|---|---|---|
YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
YOLOv10s | 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 |
Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Anwendungsbeispiele
Für die Vorhersage neuer Bilder mit YOLOv10:
Beispiel
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
Für das Training von YOLOv10 auf einem benutzerdefinierten Datensatz:
Beispiel
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
Unterstützte Aufgaben und Modi
Die YOLOv10-Modellreihe bietet eine Reihe von Modellen, die jeweils für hochleistungsfähige Objekterkennung optimiert sind. Diese Modelle erfüllen unterschiedliche Rechenanforderungen und Genauigkeitsanforderungen und sind somit vielseitig für eine breite Palette von Anwendungen einsetzbar.
Modell | Dateinamen | Aufgaben | Inferenz | Validierung | Training | Export |
---|---|---|---|---|---|---|
YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt |
Objekterkennung | ✅ | ✅ | ✅ | ✅ |
Exporting YOLOv10
Aufgrund der mit YOLOv10 eingeführten neuen Operationen werden derzeit nicht alle von Ultralytics bereitgestellten Exportformate unterstützt. Die folgende Tabelle zeigt, welche Formate mit Ultralytics für YOLOv10 erfolgreich konvertiert wurden. Sie können gerne einen Pull-Request öffnen, wenn Sie eine Änderung zur Unterstützung des Exports zusätzlicher Formate für YOLOv10 beitragen können.
Exportformat | Exportunterstützung | Inferenz des exportierten Modells | Hinweise |
---|---|---|---|
TorchScript | ✅ | ✅ | Standard-PyTorch-Modellformat. |
ONNX | ✅ | ✅ | Weitgehend für die Bereitstellung unterstützt. |
OpenVINO | ✅ | ✅ | Optimiert für Intel Hardware. |
TensorRT | ✅ | ✅ | Optimiert für NVIDIA GPUs. |
CoreML | ✅ | ✅ | Beschränkt auf Apple Geräte. |
TF SavedModel | ✅ | ✅ | Das Standardmodellformat von TensorFlow. |
TF GraphDef | ✅ | ✅ | Älteres TensorFlow Format. |
TF Lite | ✅ | ✅ | Optimiert für mobile und eingebettete Systeme. |
TF Edge TPU | ✅ | ✅ | Spezifisch für Googles Edge TPU Geräte. |
TF.js | ✅ | ✅ | JavaScript-Umgebung für die Nutzung im Browser. |
PaddlePaddle | ❌ | ❌ | Beliebt in China; weniger globaler Support. |
NCNN | ✅ | ❌ | Schicht torch.topk existiert nicht oder ist nicht registriert |
Fazit
YOLOv10 setzt einen neuen Standard in der Echtzeit-Objekterkennung, indem es die Mängel früherer YOLO-Versionen behebt und innovative Designstrategien integriert. Seine Fähigkeit, hohe Genauigkeit bei geringen Rechenkosten zu liefern, macht es zu einer idealen Wahl für eine breite Palette von realen Anwendungen, einschließlich Fertigung, Einzelhandel und autonomen Fahrzeugen.
Zitate und Danksagungen
Wir möchten die YOLOv10-Autoren der Tsinghua University für ihre umfangreichen Forschungen und bedeutenden Beiträge zum Ultralytics Framework anerkennen:
@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}
}
Für detaillierte Implementierungen, architektonische Innovationen und experimentelle Ergebnisse verweisen wir auf das Forschungs-Paper und das GitHub-Repository von YOLOv10 des Teams der Tsinghua University.
FAQ
Was ist YOLOv10 und wie unterscheidet es sich von früheren YOLO-Versionen?
YOLOv10, entwickelt von Forschern der Tsinghua University, führt mehrere wichtige Innovationen in der Echtzeit-Objekterkennung ein. Es eliminiert die Notwendigkeit der Non-Maximum Suppression (NMS) durch den Einsatz von Consistent Dual Assignments während des Trainings und optimierten Modellkomponenten für eine überlegene Leistung bei reduziertem Rechenaufwand. Weitere Details zu seiner Architektur und den wichtigsten Funktionen finden Sie im Abschnitt YOLOv10 Übersicht.
Wie kann ich mit der Inferenz mit YOLOv10 beginnen?
Für eine einfache Inferenz können Sie die Ultralytics YOLO python Bibliothek oder die Kommandozeilenschnittstelle (CLI) verwenden. Nachfolgend finden Sie Beispiele für die Vorhersage neuer Bilder mit YOLOv10:
Beispiel
from ultralytics import YOLO
# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg
Weitere Anwendungsbeispiele finden Sie in unserem Abschnitt Anwendungsbeispiele.
Welche Modellvarianten bietet YOLOv10 und welche Anwendungsfälle haben sie?
YOLOv10 bietet verschiedene Modellvarianten, um unterschiedlichen Anwendungsfällen gerecht zu werden:
- YOLOv10n: Geeignet für extrem ressourcenbeschränkte Umgebungen
- YOLOv10s: Balanciert Geschwindigkeit und Genauigkeit
- YOLOv10m: Universell einsetzbar
- YOLOv10b: Höhere Genauigkeit durch erhöhte Breite
- YOLOv10l: Hohe Genauigkeit auf Kosten von Rechenressourcen
- YOLOv10x: Maximale Genauigkeit und Leistung
Jede Variante ist auf unterschiedliche Rechenanforderungen und Genauigkeitsanforderungen zugeschnitten, wodurch sie vielseitig für eine Vielzahl von Anwendungen einsetzbar sind. Weitere Informationen finden Sie im Abschnitt Modellvarianten.
Wie verbessert der NMS-freie Ansatz in YOLOv10 die Leistung?
YOLOv10 eliminiert die Notwendigkeit der Non-Maximum Suppression (NMS) während der Inferenz durch den Einsatz von Consistent Dual Assignments für das Training. Dieser Ansatz reduziert die Inferenzlatenz und verbessert die Vorhersageeffizienz. Die Architektur beinhaltet auch einen One-to-One-Head für die Inferenz, der sicherstellt, dass jedes Objekt eine einzige, beste Vorhersage erhält. Eine detaillierte Erklärung finden Sie im Abschnitt Consistent Dual Assignments for NMS-Free Training.
Wo finde ich die Exportoptionen für YOLOv10-Modelle?
YOLOv10 unterstützt verschiedene Exportformate, darunter TorchScript, ONNX, OpenVINO und TensorRT. Allerdings werden nicht alle von Ultralytics bereitgestellten Exportformate derzeit für YOLOv10 unterstützt, da es neue Operationen beinhaltet. Details zu den unterstützten Formaten und Anweisungen zum Exportieren finden Sie im Abschnitt YOLOv10 exportieren.
Was sind die Performance-Benchmarks für YOLOv10-Modelle?
YOLOv10 übertrifft frühere YOLO-Versionen und andere hochmoderne Modelle sowohl in Bezug auf Genauigkeit als auch auf Effizienz. Beispielsweise ist YOLOv10s 1,8x schneller als RT-DETR-R18 mit einem ähnlichen AP auf dem COCO-Datensatz. YOLOv10b zeigt 46 % weniger Latenz und 25 % weniger Parameter als YOLOv9-C bei gleicher Leistung. Detaillierte Benchmarks finden Sie im Abschnitt Vergleiche.