Ultralytics YOLO27:

YOLOv10: End-to-End-Objekterkennung in Echtzeit#

YOLOv10, veröffentlicht im Mai 2024 und basierend auf dem Ultralytics Python-Paket von Forschern der Tsinghua-Universität, führt einen neuen Ansatz für die Objekterkennung in Echtzeit ein, der sowohl die Defizite bei der Nachverarbeitung als auch bei der Modellarchitektur früherer YOLO-Versionen behebt. Durch den Verzicht auf die nicht-maximale Unterdrückung (NMS) und die Optimierung verschiedener Modellkomponenten erzielte YOLOv10 bei seiner Veröffentlichung eine hervorragende Leistung bei deutlich reduziertem Rechenaufwand. Sein End-to-End-Design ohne NMS war wegweisend für einen Ansatz, der in YOLO26 weiterentwickelt wurde.

Konsistente duale Zuordnung von YOLOv10 für das Training ohne NMS



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

Übersicht#

Die Objekterkennung in Echtzeit zielt darauf ab, Objektkategorien und -positionen in Bildern mit geringer Latenz präzise vorherzusagen. Die YOLO-Reihe steht aufgrund ihres ausgewogenen Verhältnisses von Leistung und Effizienz an der Spitze dieser Forschung. Die Abhängigkeit von NMS und architektonische Ineffizienzen haben jedoch eine optimale Leistung verhindert. YOLOv10 behebt diese Probleme durch die Einführung konsistenter dualer Zuordnungen für das Training ohne NMS sowie einer ganzheitlichen Strategie für ein auf Effizienz und Genauigkeit ausgerichtetes Modelldesign.

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: Das Backbone ist für die Merkmalsextraktion zuständig und verwendet in YOLOv10 eine verbesserte Version von CSPNet (Netzwerk mit partiellen Cross-Stage-Verbindungen), um den Gradientenfluss zu verbessern und redundante Berechnungen zu reduzieren.
  2. Neck: Das Neck aggregiert Merkmale aus verschiedenen Maßstäben und leitet sie an den Head weiter. Es umfasst PAN-Schichten (Netzwerk zur Pfadaggregation) für eine effektive Fusion von Merkmalen aus mehreren Maßstäben.
  3. One-to-Many-Head: Erzeugt während des Trainings mehrere Vorhersagen pro Objekt, um umfangreiche Überwachungssignale bereitzustellen und die Lernpräzision zu verbessern.
  4. One-to-One-Head: Erzeugt während der Inferenz eine einzige beste Vorhersage pro Objekt, sodass NMS nicht erforderlich ist, wodurch die Latenz reduziert und die Effizienz verbessert wird.

Wichtige Funktionen#

  1. Training ohne NMS: Verwendet konsistente duale Zuordnungen, um NMS überflüssig zu machen und die Inferenzlatenz zu reduzieren.
  2. Ganzheitliches Modelldesign: Umfassende Optimierung verschiedener Komponenten unter Effizienz- und Genauigkeitsaspekten, einschließlich leichtgewichtiger Klassifizierungsköpfe, räumlich-kanalentkoppelter Downsampling-Schritte und ranggesteuerten Blockdesigns.
  3. Erweiterte Modellfunktionen: Integriert Faltungen mit großen Kernels sowie Module für partielle Selbstaufmerksamkeit, um die Leistung ohne erheblichen 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 äußerst begrenzten Ressourcen.
  • YOLOv10s: Kleine Version mit ausgewogenem Verhältnis von Geschwindigkeit und Genauigkeit.
  • YOLOv10m: Mittlere Version für den allgemeinen Einsatz.
  • YOLOv10b: Ausgewogene Version mit größerer Breite für höhere Genauigkeit.
  • YOLOv10l: Große Version für höhere Genauigkeit bei erhöhtem Rechenaufwand.
  • YOLOv10x: Extragroße Version für maximale Genauigkeit und Leistung.

Leistung#

YOLOv10 übertrifft frühere YOLO-Versionen und andere aktuelle Spitzenmodelle hinsichtlich 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 46 % weniger Latenz und 25 % weniger Parameter als YOLOv9-C auf.

Leistung

Die Latenz wurde mit TensorRT FP16 auf einer T4-GPU gemessen.

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 Zuordnungen für das Training ohne NMS#

YOLOv10 nutzt duale Label-Zuweisungen und kombiniert One-to-Many- sowie One-to-One-Strategien während des Trainings, um eine reichhaltige Überwachung und ein effizientes End-to-End-Deployment sicherzustellen. Die Vorhersage und Validierung von Ultralytics verwenden standardmäßig den One-to-Many-Kopf mit NMS; setze nms=False, um den NMS-freien Kopf auszuwählen. Die konsistente Matching-Metrik gleicht die Überwachung zwischen beiden Strategien ab und verbessert die Qualität von Vorhersagen während der Inferenz.

Ganzheitliches, auf Effizienz und Genauigkeit ausgerichtetes Modelldesign#

Verbesserungen der Effizienz#

  1. Leichter Klassifikationskopf: Reduziert den Rechenaufwand des Klassifikationskopfs durch die Verwendung tiefenweise separierbarer Faltungen.
  2. Räumlich-kanalentkoppeltes Downsampling: Entkoppelt die räumliche Reduktion und die Kanalmodulation, um Informationsverluste und Rechenkosten zu minimieren.
  3. Ranggesteuertes Blockdesign: Passt das Blockdesign anhand der intrinsischen Redundanz der Stufen an und gewährleistet so eine optimale Parameternutzung.

Verbesserungen der Genauigkeit#

  1. Faltung mit großem Kernel: Vergrößert das rezeptive Feld, um die Fähigkeit zur Merkmalsextraktion zu verbessern.
  2. Partielle Selbstaufmerksamkeit (PSA): Integriert Selbstaufmerksamkeitsmodule, um das Lernen globaler Repräsentationen bei minimalem Rechenaufwand zu verbessern.

Experimente und Ergebnisse#

YOLOv10 wurde umfassend auf Standardbenchmarks wie COCO getestet und zeigte dabei eine überlegene Leistung und Effizienz. Das Modell erzielt über verschiedene Varianten hinweg Ergebnisse auf dem aktuellen Stand der Technik und weist im Vergleich zu früheren Versionen und anderen zeitgenössischen Detektoren deutliche Verbesserungen bei Latenz und Genauigkeit auf.

Vergleiche#

Vergleich von YOLOv10 mit aktuellen Objektdetektoren

Im Vergleich zu anderen aktuellen Spitzenmodellen:

  • 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

Die folgenden Abbildungen entsprechen den Angaben im Paper zu YOLOv10 und wurden nach dem dort verwendeten Protokoll gemessen. Daher sind sie nicht direkt mit den Werten auf den Ultralytics-Modellseiten vergleichbar:

ModellParameter
(M)
FLOPs
(G)
mAPval
50-95
Latenz
(ms)
Latenz, Vorwärtsdurchlauf
(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

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

Verwendungsbeispiele#

Zum Vorhersagen neuer Bilder mit YOLOv10. Modelle können auch auf Cloud-GPUs über die Ultralytics Platform 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 Reihe von Modellen, die jeweils für eine leistungsstarke Objekterkennung optimiert sind. Diese Modelle decken unterschiedliche Anforderungen an Rechenleistung und Genauigkeit ab und eignen sich daher für eine Vielzahl von Anwendungen.

ModellDateinamenAufgabenTrainingValidierungInferenzExport
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.ptObjekterkennung

YOLOv10 exportieren#

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 mit Ultralytics für YOLOv10 erfolgreich konvertiert wurden. Erstelle gerne einen Pull Request, wenn du eine Änderung als Beitrag bereitstellen kannst, um die Exportunterstützung für zusätzliche Formate von YOLOv10 zu ergänzen.

ExportformatExportunterstützungInferenz des exportierten ModellsHinweise
TorchScriptStandardmäßiges PyTorch-Modellformat.
ONNXFür die Bereitstellung umfassend unterstützt.
OpenVINOFür Intel-Hardware optimiert.
TensorRTFür NVIDIA-GPUs optimiert.
CoreMLAuf Apple-Geräte beschränkt.
TF SavedModelStandardmäßiges Modellformat von TensorFlow.
TF GraphDefVeraltetes TensorFlow-Format.
LiteRTOptimiert für mobile Geräte, eingebettete Systeme und Browser (LiteRT.js).
TF Edge TPUSpeziell für die Edge TPU-Geräte von Google.
PaddlePaddleIn China beliebt, weltweit jedoch weniger unterstützt.
NCNNDer Operator torch.topk wird von der NCNN-Laufzeitumgebung nicht unterstützt.

Fazit#

YOLOv10 setzte bei seiner Veröffentlichung einen neuen Standard für die Echtzeit-Objekterkennung, indem es die Schwächen früherer YOLO-Versionen behob und innovative Designstrategien einführte. Der NMS-freie Ansatz war wegweisend für die End-to-End-Objekterkennung innerhalb der YOLO-Familie. Informationen zum neuesten Ultralytics-Modell mit verbesserter Leistung und NMS-freier Inferenz findest du unter YOLO26.

Zitate und Danksagungen#

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

Zitat
@inproceedings{wang2024yolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
  booktitle={Advances in Neural Information Processing Systems},
  doi = {10.52202/079017-3429},
  url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
  volume={37},
  pages={107984--108011},
  year={2024}
}

Ausführliche Informationen zur Implementierung, zu architektonischen Innovationen und zu experimentellen Ergebnissen findest du im Forschungsbericht zu YOLOv10 und im GitHub-Repository des Teams der Tsinghua University.

FAQ#

  • YOLOv10, entwickelt von Forschern der Tsinghua University, führt mehrere wichtige Innovationen für die Echtzeit-Objekterkennung ein. Durch den Einsatz konsistenter dualer Zuordnungen während des Trainings und optimierter Modellkomponenten entfällt die Notwendigkeit einer Unterdrückung nichtmaximaler Werte (NMS), wodurch eine höhere Leistung bei reduziertem Rechenaufwand erreicht wird. Weitere Informationen zur Architektur und zu den wichtigsten Funktionen findest du im Abschnitt YOLOv10 im Überblick.

  • Für eine einfache Inferenz kannst du die Ultralytics YOLO Python-Bibliothek oder die Befehlszeilenschnittstelle (CLI) verwenden. Nachfolgend findest du Beispiele für die Vorhersage bei neuen Bildern mit YOLOv10:

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

    Weitere Anwendungsbeispiele findest du im Abschnitt Anwendungsbeispiele.

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

    • YOLOv10n: Geeignet für Umgebungen mit äußerst begrenzten Ressourcen
    • YOLOv10s: Bietet ein ausgewogenes Verhältnis zwischen Geschwindigkeit und Genauigkeit
    • YOLOv10m: Für allgemeine Anwendungen
    • YOLOv10b: Höhere Genauigkeit durch größere Breite
    • YOLOv10l: Hohe Genauigkeit auf Kosten zusätzlicher Rechenressourcen
    • YOLOv10x: Maximale Genauigkeit und Leistung

    Jede Variante ist auf unterschiedliche Rechenanforderungen und Genauigkeitsanforderungen ausgelegt und eignet sich dadurch für eine Vielzahl von Anwendungen. Weitere Informationen findest du im Abschnitt Modellvarianten.

  • YOLOv10 trainiert mit konsistenten dualen Zuweisungen, sodass der One-to-One-Head eine einzige beste Vorhersage pro Objekt liefert, wodurch die Notwendigkeit einer Non-Maximum Suppression (NMS) bei der Inferenz entfällt. Die Vorhersage und Validierung von Ultralytics verwenden standardmäßig den One-to-Many-Head mit NMS; setze nms=False, um den NMS-freien Head auszuwählen und den NMS-Durchlauf wegzulassen. Eine detaillierte Erklärung findest du im Abschnitt Consistent Dual Assignments for NMS-Free Training.

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

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

Kommentare