Zum Inhalt springen

YOLOv10: End-to-End-Objekterkennung in Echtzeit

YOLOv10, aufgebaut 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 eine hochmoderne Leistung bei deutlich reduziertem Rechenaufwand. Ausführliche Experimente zeigen, dass das Verhältnis zwischen Genauigkeit und Latenz über mehrere Modellskalen hinweg überlegen ist.

YOLOv10 konsequente Doppelbelegung für NMS-freie Ausbildung



Beobachten: So trainieren Sie YOLOv10 auf dem SKU-110k-Datensatz unter Verwendung von Ultralytics | Retail Dataset

Übersicht

Die Objekterkennung in Echtzeit zielt darauf ab, Objektkategorien und -positionen in Bildern mit geringer Latenzzeit genau vorherzusagen. Die Serie YOLO steht aufgrund ihrer Ausgewogenheit zwischen Leistung und Effizienz an der Spitze dieser Forschung. Die Abhängigkeit von NMS und die Unzulänglichkeiten der Architektur haben jedoch eine optimale Leistung verhindert. 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 der früheren Modelle von YOLO auf und führt gleichzeitig mehrere wichtige Innovationen ein. Die Modellarchitektur besteht aus den folgenden Komponenten:

  1. Backbone: Das für die Merkmalsextraktion zuständige Backbone in YOLOv10 verwendet eine verbesserte Version von CSPNet (Cross Stage Partial Network), um den Gradientenfluss zu verbessern und die Rechenredundanz zu reduzieren.
  2. Hals: Der Hals dient der Zusammenführung von Merkmalen aus verschiedenen Maßstäben und leitet sie an den Kopf weiter. Er enthält PAN-Schichten (Path Aggregation Network) für eine effektive Fusion von Merkmalen aus verschiedenen Maßstäben.
  3. One-to-Many Head: Erzeugt während des Trainings mehrere Vorhersagen pro Objekt, um umfangreiche Überwachungssignale zu liefern und die Lerngenauigkeit zu verbessern.
  4. One-to-One Head: Erzeugt eine einzige beste Vorhersage pro Objekt während der Inferenz, um die Notwendigkeit von NMS zu eliminieren, wodurch die Latenzzeit reduziert und die Effizienz verbessert wird.

Wesentliche Merkmale

  1. NMS-freies Training: Verwendet konsistente duale Zuweisungen, um die Notwendigkeit von NMS zu eliminieren und die Latenzzeit für die Inferenz zu reduzieren.
  2. Ganzheitliches Modelldesign: Umfassende Optimierung verschiedener Komponenten sowohl unter Effizienz- als auch unter Genauigkeitsaspekten, einschließlich leichtgewichtiger Klassifizierungsköpfe, raumkanalentkoppelter Abwärtsabtastung und ranggesteuertem Blockdesign.
  3. Verbesserte Modellfähigkeiten: Integriert Großkernfaltung und partielle Selbstbeobachtungsmodule zur Verbesserung der Leistung ohne nennenswerte Rechenkosten.

Modell-Varianten

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

  • YOLOv10-N: Nano-Version für extrem ressourcenbeschränkte Umgebungen.
  • YOLOv10-S: Kleine Version mit ausgewogenem 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: Extra-große Version für maximale Genauigkeit und Leistung.

Leistung

YOLOv10 übertrifft frühere Versionen von YOLO und andere hochmoderne Modelle in Bezug auf Genauigkeit und Effizienz. So ist YOLOv10-S beispielsweise 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.

Modell Eingabe Größe APval FLOPs (G) Latenzzeit (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

Latenzzeit gemessen mit TensorRT FP16 auf T4 GPU.

Methodik

Konsistente Doppelbelegung für 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 eine effiziente End-to-End-Bereitstellung 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.

Ganzheitlicher effizienz- und genauigkeitsorientierter Modellentwurf

Effizienzverbesserungen

  1. Leichter Klassifizierungskopf: Reduziert den Rechenaufwand des Klassifizierungskopfes durch die Verwendung von tiefenmäßig trennbaren Faltungen.
  2. Räumlich-kanalentkoppeltes Downsampling: Entkoppelt räumliche Reduktion und Kanalmodulation, um den Informationsverlust und die Rechenkosten zu minimieren.
  3. Ranggesteuerter Blockentwurf: Passt das Blockdesign auf der Grundlage der intrinsischen Stufenredundanz an und gewährleistet eine optimale Parameternutzung.

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 mit Standard-Benchmarks wie COCO getestet und hat dabei eine überragende Leistung und Effizienz bewiesen. Das Modell erzielt in verschiedenen Varianten Ergebnisse auf dem neuesten Stand der Technik und weist im Vergleich zu früheren Versionen und anderen modernen Detektoren erhebliche Verbesserungen bei Latenz und Genauigkeit auf.

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 eine um 46 % geringere Latenzzeit als YOLOv9-C bei gleicher Genauigkeit
  • YOLOv10-L / X übertrifft YOLOv8-L / X um 0,3 AP / 0,5 AP bei 1,8× / 2,3× weniger Parametern

Hier finden Sie einen detaillierten Vergleich der YOLOv10-Varianten mit anderen modernen Modellen:

Modell Params
(M)
FLOPs
(G)
mAPval
50-95
Latenzzeit
(ms)
Latenzzeit-Weiterleitung
(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
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 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
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 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
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 29.5 160.4 54.4 10.70 10.60

Beispiele für die Verwendung

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 eine leistungsstarke 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 Ausbildung Exportieren
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Objekt-Erkennung

YOLOv10 exportieren

Aufgrund der neuen Operationen, die mit YOLOv10 eingeführt wurden, werden derzeit nicht alle von Ultralytics angebotenen Exportformate unterstützt. Die folgende Tabelle zeigt, welche Formate erfolgreich mit Ultralytics für YOLOv10 konvertiert wurden. Sie können gerne einen Pull-Request öffnen, wenn Sie in der Lage sind, einen Beitrag zu leisten, um den Export weiterer Formate für YOLOv10 zu unterstützen.

Format exportieren Unterstützung beim Export Exportierte Modellinferenz Anmerkungen
TorchScript Standard PyTorch Modellformat.
ONNX Weitreichende Unterstützung für den Einsatz.
OpenVINO Optimiert für Intel Hardware.
TensorRT Optimiert für NVIDIA GPUs.
CoreML Beschränkt auf Apple-Geräte.
TF SavedModel TensorFlowdas Standardmodellformat.
TF GraphDef Älteres Format TensorFlow .
TF Lite Optimiert für mobile und eingebettete Anwendungen.
TF Kante TPU Speziell für Google's Edge TPU Geräte.
TF.js JavaScript-Umgebung für die Verwendung im Browser.
PaddlePaddle Populär in China; weniger Unterstützung weltweit.
NCNN Ebene torch.topk nicht vorhanden oder registriert

Schlussfolgerung

YOLOv10 setzt einen neuen Standard in der Echtzeit-Objekterkennung, indem es die Mängel früherer Versionen von YOLO 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.

Zitate und Danksagungen

Wir möchten den YOLOv10-Autoren von der Tsinghua-Universität für ihre umfangreiche Forschung und ihre bedeutenden 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, zu architektonischen Innovationen und experimentellen Ergebnissen finden Sie im YOLOv10-Forschungspapier und im GitHub-Repository des Teams der Tsinghua-Universität.

FAQ

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

YOLOv10 wurde von Forschern der Tsinghua-Universität entwickelt und führt mehrere wichtige Innovationen für die Echtzeit-Objekterkennung ein. Durch den Einsatz konsistenter dualer Zuweisungen während des Trainings und optimierter Modellkomponenten wird die Notwendigkeit einer nichtmaximalen Unterdrückung (NMS) beseitigt, um eine überlegene Leistung bei reduziertem Rechenaufwand zu erzielen. Weitere Einzelheiten zur Architektur und den wichtigsten Funktionen finden Sie in der Übersicht zu YOLOv10.

Wie kann ich mit YOLOv10 eine Inferenz durchführen?

Für einfache Schlussfolgerungen können Sie die Bibliothek Ultralytics YOLO Python oder die Befehlszeilenschnittstelle (CLI) verwenden. Nachstehend finden Sie 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 finden Sie in unserem Abschnitt Verwendungsbeispiele.

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

YOLOv10 bietet mehrere Modellvarianten für unterschiedliche Einsatzzwecke:

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

Jede Variante ist für unterschiedliche Berechnungs- und Genauigkeitsanforderungen ausgelegt und damit vielseitig für eine Vielzahl von Anwendungen einsetzbar. Weitere Informationen finden Sie im Abschnitt Modellvarianten.

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

YOLOv10 eliminiert die Notwendigkeit der Nicht-Maximum-Suppression (NMS) während der Inferenz durch die Verwendung von konsistenten dualen Zuweisungen für das Training. 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 detaillierte Erklärung finden Sie 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 derzeit nicht alle Exportformate von Ultralytics für YOLOv10 unterstützt, da es neue Funktionen gibt. Einzelheiten zu den unterstützten Formaten und Anweisungen zum Exportieren finden Sie 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. Zum Beispiel ist YOLOv10-S 1,8x 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 sind im Abschnitt Vergleiche zu finden.

📅 Erstellt vor 6 Monaten ✏️ Aktualisiert vor 2 Monaten

Kommentare