YOLOv10: Echtzeit-End-to-End-Objekterkennung

YOLOv10, veröffentlicht im Mai 2024 und basierend auf dem Ultralytics Python package von Forschern der Tsinghua University, führt einen neuen Ansatz zur Echtzeit-Objekterkennung ein, der sowohl die Mängel bei der Nachverarbeitung als auch bei der Modellarchitektur früherer YOLO-Versionen behebt. Durch den Verzicht auf Non-Maximum Suppression (NMS) und die Optimierung verschiedener Modellkomponenten erreichte YOLOv10 zum Zeitpunkt seiner Veröffentlichung eine exzellente Leistung bei deutlich reduziertem Rechenaufwand. Sein NMS-freies End-to-End-Design war wegweisend für einen Ansatz, der in YOLO26 weiterentwickelt wurde.

YOLOv10 konsistente duale Zuweisung für NMS-freies Training



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Übersicht

Echtzeit-Objekterkennung zielt darauf ab, Objektkategorien und -positionen in Bildern mit geringer Latenz präzise vorherzusagen. Die YOLO-Serie ist aufgrund ihrer Balance zwischen Leistung und Effizienz führend in diesem Forschungsbereich. Die Abhängigkeit von NMS und architektonische Ineffizienzen haben jedoch eine optimale Leistung behindert. YOLOv10 geht diese Probleme durch die Einführung von consistent dual assignments für NMS-freies Training und eine ganzheitliche, auf Effizienz und Genauigkeit ausgerichtete Modell-Design-Strategie an.

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 feature extraction, nutzt der Backbone in YOLOv10 eine verbesserte Version von CSPNet (Cross Stage Partial Network), um den Gradientenfluss zu verbessern und redundante Berechnungen zu reduzieren.
  2. Neck: Der Neck ist darauf ausgelegt, Merkmale aus verschiedenen Skalen zu aggregieren und an den Head weiterzuleiten. Er enthält PAN (Path Aggregation Network)-Schichten für eine effektive multiskalige Merkmalsfusion.
  3. One-to-Many Head: Generiert während des Trainings mehrere Vorhersagen pro Objekt, um reichhaltige Überwachungssignale bereitzustellen und die Lernpräzision zu verbessern.
  4. One-to-One Head: Generiert während der Inferenz eine einzelne beste Vorhersage pro Objekt, um NMS überflüssig zu machen, wodurch die Latenz reduziert und die Effizienz verbessert wird.

Hauptmerkmale

  1. NMS-Free Training: Nutzt konsistente duale Zuweisungen, um NMS überflüssig zu machen und die inference latency zu reduzieren.
  2. Holistic Model Design: Umfassende Optimierung verschiedener Komponenten unter Effizienz- und Genauigkeitsaspekten, einschließlich leichtgewichtiger Klassifizierungsköpfe, räumlich-kanal-entkoppelter Downsampling-Methoden und ranggesteuertem Block-Design.
  3. Enhanced Model Capabilities: Integriert convolutions mit großen Kernen und partielle Self-Attention-Module, um die Leistung ohne nennenswerten zusätzlichen Rechenaufwand zu verbessern.

Modellvarianten

YOLOv10 ist in verschiedenen Modellgrößen erhältlich, um unterschiedlichen Anwendungsanforderungen gerecht zu werden:

  • YOLOv10n: Nano-Version für Umgebungen mit extrem begrenzten Ressourcen.
  • YOLOv10s: Kleine Version, die Geschwindigkeit und Genauigkeit in Einklang bringt.
  • YOLOv10m: Mittlere Version für allgemeine Einsatzzwecke.
  • YOLOv10b: Ausgewogene Version mit erhöhter Breite für höhere Genauigkeit.
  • YOLOv10l: Große Version für höhere Genauigkeit auf Kosten eines höheren Rechenaufwands.
  • YOLOv10x: Extra-große Version für maximale Genauigkeit und Leistung.

Leistung

YOLOv10 übertrifft frühere YOLO-Versionen und andere hochmoderne Modelle in Bezug auf Genauigkeit und Effizienz. Beispielsweise ist YOLOv10s 1,8-mal schneller als RT-DETR-R18 bei ähnlichem AP auf dem COCO-Datensatz, und YOLOv10b weist bei gleicher Leistung eine um 46 % geringere Latenz und 25 % weniger Parameter als YOLOv9-C auf.

Leistung

Latenz gemessen mit TensorRT FP16 auf einer T4 GPU.

ModellEingabegrößeAPvalFLOPs (G)Latenz (ms)
[YOLOv10n][1]64038,56,71,84
[YOLOv10s][2]64046,321,62,49
[YOLOv10m][3]64051,159,14,74
[YOLOv10b][4]64052.592,05,74
[YOLOv10l][5]64053.2120,37,28
[YOLOv10x][6]64054,4160,410,70

Methodik

Konsistente duale Zuweisungen für NMS-freies Training

YOLOv10 verwendet duale Label-Zuweisungen und kombiniert One-to-Many- und One-to-One-Strategien während des Trainings, um eine reichhaltige Überwachung und eine effiziente End-to-End-Bereitstellung zu gewährleisten. Die konsistente Abgleichsmetrik gleicht die Überwachung zwischen beiden Strategien ab und verbessert die Qualität der Vorhersagen während der inference.

Ganzheitliches, auf Effizienz und Accuracy ausgerichtetes Modelldesign

Effizienzverbesserungen

  1. Lightweight Classification Head: Reduziert den Rechenaufwand des Klassifizierungskopfes durch die Verwendung von tiefenseparierbaren Faltungen (depth-wise separable convolutions).
  2. Spatial-Channel Decoupled Down sampling: Entkoppelt räumliche Reduktion und Kanalmodulation, um Informationsverlust und Rechenaufwand zu minimieren.
  3. Rank-Guided Block Design: Passt das Block-Design basierend auf der intrinsischen Redundanz der Stufen an, um eine optimale Parameterausnutzung zu gewährleisten.

Genauigkeitsverbesserungen

  1. Large-Kernel Convolution: Vergrößert das receptive field, um die Merkmalsextraktionsfähigkeit zu verbessern.
  2. Partial Self-Attention (PSA): Integriert Self-Attention-Module, um das globale Repräsentationslernen bei minimalem Overhead zu verbessern.

Experimente und Ergebnisse

YOLOv10 wurde ausführlich an Standard-Benchmarks wie COCO getestet und zeigt eine überlegene Leistung und Effizienz. Das Modell erzielt bei verschiedenen Varianten modernste Ergebnisse und weist im Vergleich zu früheren Versionen und anderen zeitgenössischen Detektoren erhebliche Verbesserungen bei Latenz und Genauigkeit auf.

Vergleiche

YOLOv10 Vergleich mit SOTA-Objektdetektoren

Im Vergleich zu anderen hochmodernen Detektoren:

  • YOLOv10s / x sind 1,8× / 1,3× schneller als RT-DETR-R18 / R101 bei ähnlicher Genauigkeit
  • YOLOv10b hat bei gleicher Genauigkeit 25 % weniger Parameter und 46 % geringere Latenz als YOLOv9-C
  • YOLOv10l / x übertreffen YOLOv8l / x um 0,3 AP / 0,5 AP bei 1,8× / 2,3× weniger Parametern
Leistung

Hier ist ein detaillierter Vergleich von YOLOv10-Varianten mit anderen hochmodernen Modellen:

ModellParameter
(M)
FLOPs
(G)
mAPval
50-95
Latenz
(ms)
Latenz-vorwärts
(ms)
YOLOv6-3.0-N4,711.437,02,691,76
Gold-YOLO-N5,612,139,62,921,82
YOLOv8n3.28.737.36,161,77
YOLOv10n2,36,739,51,841,79
YOLOv6-3.0-S18,545,344.33,422,35
Gold-YOLO-S21.546.045,43,822,73
YOLOv8s11.228.644.97,072.33
YOLOv10s7.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
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34,744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454,410.7010.60

Parameter- und FLOPs-Werte beziehen sich auf das fusionierte Modell nach model.fuse(), das Conv- und BatchNorm-Schichten zusammenführt und den zusätzlichen One-to-Many-Detektions-Head entfernt. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Werte aufweisen.

Anwendungsbeispiele

Zur Vorhersage neuer Bilder mit YOLOv10. Modelle können auch über die Ultralytics Platform auf Cloud-GPUs trainiert werden:

Beispiel
from ultralytics import YOLO

# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")

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

# Display the results
results[0].show()

Zum Trainieren 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)

Unterstützte Aufgaben und Modi

Die YOLOv10-Modellreihe bietet eine Auswahl an Modellen, die jeweils für leistungsstarke Objekterkennung optimiert sind. Diese Modelle decken unterschiedliche Rechenanforderungen und Genauigkeitsanforderungen ab und machen sie vielseitig einsetzbar für eine Vielzahl von Anwendungen.

ModellDateinamenTasksInferenzValidierungTrainingExportieren
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptObjekterkennung

Exportieren von YOLOv10

Aufgrund der neuen Operationen, die mit YOLOv10 eingeführt wurden, werden derzeit nicht alle von Ultralytics bereitgestellten Exportformate unterstützt. Die folgende Tabelle zeigt, welche Formate erfolgreich mit Ultralytics für YOLOv10 konvertiert wurden. Öffne gerne einen Pull Request, falls du in der Lage bist, eine Beitrag zu leisten, um die Exportunterstützung für weitere Formate für YOLOv10 hinzuzufügen.

ExportformatExportunterstützungInferenz des exportierten ModellsHinweise
TorchScriptStandard PyTorch-Modellformat.
ONNXWeit verbreitet für die Bereitstellung.
OpenVINOOptimiert für Intel-Hardware.
TensorRTOptimiert für NVIDIA-GPUs.
CoreMLBeschränkt auf Apple-Geräte.
TF SavedModelStandard-Modellformat von TensorFlow.
TF GraphDefLegacy-TensorFlow-Format.
TF LiteOptimiert für mobile und eingebettete Geräte.
TF Edge TPUSpezifisch für Googles Edge TPU-Geräte.
TF.jsJavaScript-Umgebung für die Browsernutzung.
PaddlePaddleBeliebt in China; weniger globale Unterstützung.
NCNNEbene torch.topk existiert nicht oder ist nicht registriert

Fazit

YOLOv10 setzte bei seiner Veröffentlichung einen neuen Standard in der Echtzeit-Objekterkennung, indem es die Mängel früherer YOLO-Versionen behob und innovative Designstrategien integrierte. Sein NMS-freier Ansatz war wegweisend für die End-to-End-Objekterkennung in der YOLO-Familie. Für das neueste Ultralytics-Modell mit verbesserter Leistung und NMS-freier Inferenz, siehe YOLO26.

Zitate und Danksagungen

Wir möchten den Autoren von YOLOv10 von der Tsinghua University für ihre umfassende Forschung und ihre bedeutenden Beiträge zum Ultralytics-Framework danken:

Zitat
@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, beziehe dich bitte auf das YOLOv10-Forschungspapier und das GitHub-Repository 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 für die Echtzeit-Objekterkennung ein. Es eliminiert die Notwendigkeit für Non-Maximum Suppression (NMS), indem es konsistente duale Zuweisungen während des Trainings und optimierte Modellkomponenten für überlegene Leistung bei reduziertem Rechenaufwand verwendet. Für weitere Details zu seiner Architektur und den wichtigsten Funktionen, schaue dir den Abschnitt YOLOv10-Übersicht an.

Wie kann ich mit der Durchführung von Inferenz mit YOLOv10 beginnen?

Für eine einfache Inferenz kannst du die Ultralytics YOLO Python-Bibliothek oder das Command Line Interface (CLI) verwenden. Nachfolgend findest du Beispiele für die Vorhersage neuer Bilder mit YOLOv10:

Beispiel
from ultralytics import YOLO

# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()

Für weitere Anwendungsbeispiele besuche unseren Abschnitt Anwendungsbeispiele.

Welche Modellvarianten bietet YOLOv10 und was sind ihre Anwendungsfälle?

YOLOv10 bietet mehrere Modellvarianten für unterschiedliche Anwendungsfälle:

  • YOLOv10n: Geeignet für Umgebungen mit extrem begrenzten Ressourcen
  • YOLOv10s: Bietet eine Balance zwischen Geschwindigkeit und Genauigkeit
  • YOLOv10m: Für allgemeine Anwendungen
  • YOLOv10b: Höhere Genauigkeit durch vergrößerte Breite
  • YOLOv10l: Hohe Genauigkeit auf Kosten von Rechenressourcen
  • YOLOv10x: Maximale Genauigkeit und Leistung

Jede Variante ist für unterschiedliche Rechenanforderungen und Genauigkeitsbedürfnisse ausgelegt, was sie vielseitig für eine Reihe von Anwendungen macht. Entdecke den Abschnitt Modellvarianten für weitere Informationen.

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

YOLOv10 macht die Non-Maximum Suppression (NMS) während der Inferenz überflüssig, indem konsistente duale Zuweisungen für das Training verwendet werden. Dieser Ansatz reduziert die Inferenzlatenz und steigert die Vorhersageeffizienz. Die Architektur beinhaltet zudem einen One-to-One-Head für die Inferenz, der sicherstellt, dass jedes Objekt genau eine beste Vorhersage erhält. Für eine detaillierte Erläuterung siehe den Abschnitt Konsistente duale Zuweisungen für NMS-freies Training.

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

YOLOv10 unterstützt verschiedene Exportformate, darunter TorchScript, ONNX, OpenVINO und TensorRT. Aufgrund seiner neuen Operationen werden jedoch derzeit nicht alle von Ultralytics bereitgestellten Exportformate für YOLOv10 unterstützt. Details zu den unterstützten Formaten und Anleitungen zum Exportieren findest du im Abschnitt Exportieren von YOLOv10.

Was sind die Leistungs-Benchmarks für YOLOv10-Modelle?

YOLOv10 übertrifft frühere YOLO-Versionen und andere hochmoderne Modelle sowohl bei der Genauigkeit als auch bei der Effizienz. Zum Beispiel ist YOLOv10s 1,8-mal schneller als RT-DETR-R18 bei ähnlichem AP auf dem COCO-Datensatz. YOLOv10b zeigt 46 % weniger Latenz und 25 % weniger Parameter als YOLOv9-C bei gleicher Leistung. Detaillierte Benchmarks findest du im Abschnitt Vergleiche.

Kommentare