Zum Inhalt springen

YOLOv10: Real-Time End-to-End Object Detection

YOLOv10, das auf dem Ultralytics Python Paket, das von Forschern der Tsinghua Universität entwickelt wurde, führt einen neuen Ansatz für die Objekterkennung in Echtzeit ein und behebt sowohl die Mängel der Nachbearbeitung als auch der Modellarchitektur, die in früheren Versionen von YOLO festgestellt wurden. Durch die Eliminierung der Nicht-Maximum-Unterdrückung (NMS) und die Optimierung verschiedener Modellkomponenten erreicht YOLOv10 die beste Leistung bei deutlich reduziertem Rechenaufwand. Ausführliche Experimente zeigen, dass YOLOv10 ein hervorragendes Verhältnis zwischen Genauigkeit und Latenz über mehrere Modellskalen hinweg bietet.

YOLOv10 konsequente Doppelbelegung für NMS-freie Ausbildung



Pass auf: So trainierst du YOLOv10 auf dem SKU-110k-Datensatz mit Ultralytics | Retail Dataset

Übersicht

Die Objekterkennung in Echtzeit zielt darauf ab, Objektkategorien und Positionen in Bildern mit geringer Latenzzeit genau vorherzusagen. Die YOLO Serie steht aufgrund ihrer Ausgewogenheit zwischen Leistung und Effizienz an der Spitze dieser Forschung. Allerdings haben die Abhängigkeit von NMS und die Unzulänglichkeiten der Architektur eine optimale Leistung behindert. YOLOv10 geht diese Probleme an, indem es konsistente Doppelzuweisungen für NMS-freies Training und eine ganzheitliche, auf Effizienz und Genauigkeit ausgerichtete Modellierungsstrategie einführt.

Architektur

Die Architektur von YOLOv10 baut auf den Stärken früherer YOLO Modelle auf und führt gleichzeitig einige wichtige Innovationen ein. Die Modellarchitektur besteht aus den folgenden Komponenten:

  1. Backbone: Responsible for feature extraction, the backbone in YOLOv10 uses an enhanced version of CSPNet (Cross Stage Partial Network) to improve gradient flow and reduce computational redundancy.
  2. Hals: Der Hals ist so konzipiert, dass er Merkmale aus verschiedenen Skalen zusammenfasst und an den Kopf weiterleitet. Er enthält PAN-Schichten (Path Aggregation Network) für die effektive Fusion von Merkmalen auf mehreren Ebenen.
  3. One-to-Many Head: Erzeugt während des Trainings mehrere Vorhersagen pro Objekt, um reichhaltige Überwachungssignale zu liefern und die Lerngenauigkeit zu verbessern.
  4. One-to-One Head: Erzeugt während der Inferenz eine einzige beste Vorhersage pro Objekt, um die NMS zu eliminieren und so die Latenzzeit zu reduzieren und die Effizienz zu verbessern.

Hauptmerkmale

  1. NMS-freies Training: Nutzt konsistente Doppelzuweisungen, um die Notwendigkeit von NMS zu eliminieren und so die Latenzzeit für Schlussfolgerungen zu reduzieren.
  2. Ganzheitliches Modelldesign: Umfassende Optimierung verschiedener Komponenten unter Effizienz- und Genauigkeitsgesichtspunkten, einschließlich leichtgewichtiger Klassifizierungsköpfe, räumlich-kanalentkoppelter Abwärtsabtastung und ranggesteuertem Blockdesign.
  3. Verbesserte Modellfähigkeiten: Durch den Einsatz von Large-Kernel-Convolutions und partiellen Self-Attention-Modulen wird die Leistung ohne große Rechenkosten verbessert.

Modell-Varianten

YOLOv10 gibt es in verschiedenen Modellgrößen, um den unterschiedlichen Anforderungen gerecht zu werden:

  • YOLOv10-N: Nano-Version für extrem ressourcenbeschränkte Umgebungen.
  • YOLOv10-S: Kleine Version mit einem ausgewogenen Verhältnis zwischen Geschwindigkeit und Genauigkeit.
  • YOLOv10-M: Mittlere Version für den allgemeinen Gebrauch.
  • YOLOv10-B: Ausgewogene Version mit größerer Breite für höhere Genauigkeit.
  • YOLOv10-L: Große Version für höhere Genauigkeit auf Kosten größerer Rechenressourcen.
  • YOLOv10-X: Die extragroße Version für maximale Genauigkeit und Leistung.

Leistung

YOLOv10 übertrifft frühere Versionen von YOLO und andere State-of-the-Art-Modelle in Bezug auf Genauigkeit und Effizienz. YOLOv10-S ist zum Beispiel 1,8-mal schneller als RT-DETR-R18 mit ähnlichen AP auf dem COCO-Datensatz, und YOLOv10-B hat 46% weniger Latenz und 25% weniger Parameter als YOLOv9-C bei gleicher Leistung.

ModellEingabe GrößeAPvalFLOPs (G)Latenzzeit (ms)
YOLOv10-N64038.56.71.84
YOLOv10-S64046.321.62.49
YOLOv10-M64051.159.14.74
YOLOv10-B64052.592.05.74
YOLOv10-L64053.2120.37.28
YOLOv10-X64054.4160.410.70

Latenzzeit gemessen mit TensorRT FP16 auf T4 GPU.

Methodik

Konsistente Doppelzuweisungen für eine NMS-freie Ausbildung

YOLOv10 verwendet duale Label-Zuweisungen und kombiniert One-to-Many- und One-to-One-Strategien beim Training, um eine umfassende Überwachung und einen effizienten End-to-End-Einsatz zu gewährleisten. Die konsistente Matching-Metrik gleicht die Überwachung zwischen beiden Strategien ab und verbessert die Qualität der Vorhersagen während der Inferenz.

Holistic Efficiency-Accuracy Driven Model Design

Effizienzverbesserungen

  1. Leichter Klassifizierungskopf: Verringert den Rechenaufwand des Klassifizierungskopfes durch die Verwendung von tiefenmäßig trennbaren Faltungen.
  2. Spatial-Channel Decoupled Down Sampling: Entkoppelt räumliche Reduktion und Kanalmodulation, um den Informationsverlust und die Rechenkosten zu minimieren.
  3. Rank-Guided Block Design: Passt das Blockdesign basierend auf der Redundanz der einzelnen Stufen an und sorgt so für eine optimale Ausnutzung der Parameter.

Verbesserungen bei der Genauigkeit

  1. Large-Kernel Convolution: Vergrößert das rezeptive Feld, um die Fähigkeit zur Merkmalsextraktion zu verbessern.
  2. Partielle Selbstaufmerksamkeit (PSA): Integriert Selbstaufmerksamkeitsmodule, um das Lernen der globalen Repräsentation mit minimalem Overhead zu verbessern.

Experimente und Ergebnisse

YOLOv10 wurde ausgiebig in Standard-Benchmarks wie COCO getestet und hat dabei seine überragende Leistung und Effizienz bewiesen. Das Modell erzielt in verschiedenen Varianten die besten Ergebnisse und zeigt deutliche Verbesserungen bei Latenz und Genauigkeit im Vergleich zu früheren Versionen und anderen aktuellen Detektoren.

Vergleiche

YOLOv10 Vergleich mit SOTA Objektdetektoren

Im Vergleich zu anderen modernen Detektoren:

  • YOLOv10-S / X sind 1,8× / 1,3× schneller als RT-DETR-R18 / R101 bei ähnlicher Genauigkeit
  • YOLOv10-B hat 25% weniger Parameter und 46% weniger Latenz als YOLOv9-C bei gleicher Genauigkeit
  • YOLOv10-L / X übertrifft YOLOv8-L / X um 0,3 AP / 0,5 AP mit 1,8× / 2,3× weniger Parametern

Hier findest du einen detaillierten Vergleich der YOLOv10-Varianten mit anderen modernen Modellen:

ModellParams
(M)
FLOPs
(G)
mAPval
50-95
Latenzzeit
(ms)
Latency-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8-N3.28.737.36.161.77
YOLOv10-N2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8-S11.228.644.97.072.33
YOLOv10-S7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8-M25.978.950.69.505.09
YOLOv10-M15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8-L43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10-L24.4120.353.47.287.21
YOLOv8-X68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10-X29.5160.454.410.7010.60

Verwendungsbeispiele

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 eigenen 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 eine leistungsstarke Objekterkennung optimiert sind. Diese Modelle erfüllen unterschiedliche Anforderungen an die Rechenleistung und die Genauigkeit, was sie für eine Vielzahl von Anwendungen geeignet macht.

ModellDateinamenAufgabenInferenzValidierungAusbildungexportieren
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptObjekt-Erkennung

Exportieren von YOLOv10

Aufgrund der neuen Operationen, die mit YOLOv10 eingeführt wurden, werden derzeit nicht alle Exportformate von Ultralytics unterstützt. Die folgende Tabelle zeigt, welche Formate mit Ultralytics für YOLOv10 erfolgreich konvertiert wurden. Wenn du einen Beitrag leisten kannst, um den Export weiterer Formate für YOLOv10 zu unterstützen, kannst du gerne einen Pull Request öffnen.

Format exportierenExport SupportExported Model InferenceAnmerkungen
TorchScriptStandard PyTorch model format.
ONNXWidely supported for deployment.
OpenVINOOptimized for Intel hardware.
TensorRTOptimized for NVIDIA GPUs.
CoreMLLimited to Apple devices.
TF SavedModelTensorFlow's standard model format.
TF GraphDefLegacy TensorFlow format.
TF LiteOptimized for mobile and embedded.
TF Kante TPUSpecific to Google's Edge TPU devices.
TF.jsJavaScript environment for browser use.
PaddlePaddlePopular in China; less global support.
NCNNLayer torch.topk not exists or registered

Fazit

YOLOv10 setzt neue Maßstäbe bei der Objekterkennung in Echtzeit, indem es die Mängel früherer Versionen von YOLO behebt und innovative Designstrategien einbezieht. Seine Fähigkeit, hohe Genauigkeit bei geringen Rechenkosten zu liefern, macht ihn zur idealen Wahl für eine Vielzahl von realen Anwendungen.

Zitate und Danksagungen

Wir möchten den YOLOv10-Autoren von der Tsinghua Universität für ihre umfangreiche Forschung und ihre wichtigen Beiträge zum Ultralytics Rahmenwerk:

@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}
}

Detaillierte Informationen zur Implementierung, den architektonischen Neuerungen und den Versuchsergebnissen findest du in der YOLOv10-Forschungsarbeit und im GitHub-Repository des Teams der Tsinghua-Universität.

FAQ

Was ist YOLOv10 und wie unterscheidet es sich von früheren YOLO Versionen?

YOLOv10 wurde von Forschern der Tsinghua Universität entwickelt und führt mehrere wichtige Innovationen in die Echtzeit-Objekterkennung ein. Durch konsistente Dualzuweisungen während des Trainings und optimierte Modellkomponenten wird die Notwendigkeit der Non-Maximum-Suppression (NMS) eliminiert und die Leistung bei reduziertem Rechenaufwand gesteigert. Weitere Einzelheiten über die Architektur und die wichtigsten Funktionen findest du in der YOLOv10 Übersicht.

Wie kann ich mit YOLOv10 anfangen, Inferenzen zu erstellen?

Für einfache Schlussfolgerungen kannst du die Bibliothek Ultralytics YOLO Python oder die Kommandozeilenschnittstelle (CLI) verwenden. Im Folgenden findest du Beispiele für die Vorhersage neuer Bilder mit YOLOv10:

Beispiel

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

Weitere Verwendungsbeispiele findest du in unserem Abschnitt Verwendungsbeispiele.

Welche Modellvarianten bietet YOLOv10 an und was sind ihre Einsatzmöglichkeiten?

YOLOv10 bietet verschiedene Modellvarianten für unterschiedliche Einsatzzwecke:

  • YOLOv10-N: Geeignet für extrem ressourcenbeschränkte Umgebungen
  • YOLOv10-S: Gleichgewicht zwischen Geschwindigkeit und Genauigkeit
  • YOLOv10-M: Allzweckeinsatz
  • YOLOv10-B: Höhere Genauigkeit bei größerer Breite
  • YOLOv10-L: Hohe Genauigkeit auf Kosten der Rechenressourcen
  • YOLOv10-X: Maximale Genauigkeit und Leistung

Jede Variante ist für unterschiedliche Berechnungs- und Genauigkeitsanforderungen ausgelegt, was sie für eine Vielzahl von Anwendungen vielseitig macht. Weitere Informationen findest du im Abschnitt Modellvarianten.

Wie verbessert der NMS-freie Ansatz in YOLOv10 die Leistung?

YOLOv10 macht die Nicht-Maximum-Unterdrückung (NMS) während der Inferenz überflüssig, indem es konsistente duale Zuweisungen für das Training verwendet. Dieser Ansatz reduziert die Inferenzlatenz und erhöht die Effizienz der Vorhersage. Die Architektur beinhaltet auch einen Eins-zu-Eins-Kopf für die Inferenz, der sicherstellt, dass jedes Objekt eine einzige beste Vorhersage erhält. Eine ausführliche Erklärung findest du im Abschnitt Konsistente Doppelzuweisungen für NMS-freies Training.

Wo finde ich die Exportoptionen für YOLOv10-Modelle?

YOLOv10 unterstützt mehrere Exportformate, darunter TorchScript, ONNX, OpenVINO und TensorRT. Allerdings werden aufgrund der neuen Funktionen von Ultralytics derzeit nicht alle Exportformate für YOLOv10 unterstützt. Einzelheiten zu den unterstützten Formaten und Anweisungen zum Exportieren findest du im Abschnitt Exportieren von YOLOv10.

Wie lauten die Leistungsvergleiche für die YOLOv10-Modelle?

YOLOv10 übertrifft frühere Versionen von YOLO und andere State-of-the-Art-Modelle sowohl in der Genauigkeit als auch in der Effizienz. YOLOv10-S ist zum Beispiel 1,8-mal schneller als RT-DETR-R18 mit einem ähnlichen AP auf dem COCO-Datensatz. YOLOv10-B zeigt 46% weniger Latenz und 25% weniger Parameter als YOLOv9-C bei gleicher Leistung. Detaillierte Benchmarks findest du im Abschnitt " Vergleiche ".

📅 Created 5 months ago ✏️ Updated 28 days ago

Kommentare