Zum Inhalt springen

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.

YOLOv10 konsistente Dual-Zuordnung für NMS-freies Training



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:

  1. 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.
  2. 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.
  3. One-to-Many Head: Generiert während des Trainings mehrere Vorhersagen pro Objekt, um reichhaltige Überwachungssignale bereitzustellen und die Lerngenauigkeit zu verbessern.
  4. 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

  1. NMS-Free Training: Nutzt konsistente Dual Assignments, um die Notwendigkeit von NMS zu eliminieren, wodurch die Inferenzlatenz reduziert wird.
  2. 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.
  3. 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

  1. Lightweight Classification Head: Reduziert den Rechenaufwand des Klassifikations-Heads durch die Verwendung von Depth-Wise Separable Convolutions.
  2. Spatial-Channel Decoupled Downsampling: Entkoppelt die räumliche Reduktion und die Kanalmodulation, um Informationsverluste und Rechenkosten zu minimieren.
  3. Rank-Guided Block Design: Passt das Blockdesign basierend auf der intrinsischen Stufenredundanz an, um eine optimale Parameternutzung zu gewährleisten.

Genauigkeitsverbesserungen

  1. Large-Kernel Convolution: Vergrößert das rezeptive Feld, um die Fähigkeit zur Merkmalsextraktion zu verbessern.
  2. 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

YOLOv10 Vergleich mit SOTA-Objektdetektoren

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.



📅 Vor 1 Jahr erstellt ✏️ Vor 5 Monaten aktualisiert

Kommentare