Zum Inhalt springen

YOLOv7: Ausbildbare Bag-of-Freebies

YOLOv7 ist ein hochmoderner Echtzeit-Objektdetektor, der alle bekannten Objektdetektoren sowohl in der Geschwindigkeit als auch in der Genauigkeit im Bereich von 5 FPS bis 160 FPS übertrifft. Er hat die höchste Genauigkeit (56,8 % AP) unter allen bekannten Echtzeit-Objektdetektoren mit 30 FPS oder mehr auf GPU V100. Außerdem übertrifft YOLOv7 andere Objektdetektoren wie YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5 und viele andere in Sachen Geschwindigkeit und Genauigkeit. Das Modell wurde von Grund auf mit dem MS COCO-Datensatz trainiert, ohne dass andere Datensätze oder vortrainierte Gewichte verwendet wurden. Der Quellcode von YOLOv7 ist auf GitHub verfügbar.

YOLOv7 Vergleich mit SOTA Objektdetektoren

Vergleich der SOTA-Objektdetektoren

Aus den Ergebnissen in der YOLO Vergleichstabelle geht hervor, dass die vorgeschlagene Methode das beste Verhältnis zwischen Geschwindigkeit und Genauigkeit aufweist. Wenn wir YOLOv7-tiny-SiLU mit YOLOv5-N (r6.1) vergleichen, ist unsere Methode 127 fps schneller und 10,7% genauer bei AP. Außerdem hat YOLOv7 eine AP von 51,4% bei einer Bildrate von 161 fps, während PPYOLOE-L mit der gleichen AP nur eine Bildrate von 78 fps hat. In Bezug auf den Parameterverbrauch ist YOLOv7 41% weniger als PPYOLOE-L. Wenn wir YOLOv7-X mit 114 fps Inferenzgeschwindigkeit mit YOLOv5-L (r6.1) mit 99 fps Inferenzgeschwindigkeit vergleichen, kann YOLOv7-X die AP um 3,9% verbessern. Vergleicht man YOLOv7-X mit YOLOv5-X (r6.1) in ähnlicher Größenordnung, ist die Schlussfolgerungsgeschwindigkeit von YOLOv7-X um 31 fps schneller. Außerdem reduziert YOLOv7-X im Vergleich zu YOLOv5-X (r6.1) 22% der Parameter und 8% der Berechnungen, verbessert aber die AP um 2,2%(Quelle).

Modell Params
(M)
FLOPs
(G)
Größe
(Pixel)
FPS APtest/ val
50-95
APtest
50
APtest
75
APtest
S
APtest
M
APtest
L
YOLOX-S 9.0M 26.8G 640 102 40.5% / 40.5% - - - - -
YOLOX-M 25.3M 73.8G 640 81 47.2% / 46.9% - - - - -
YOLOX-L 54.2M 155.6G 640 69 50.1% / 49.7% - - - - -
YOLOX-X 99.1M 281.9G 640 58 51.5% / 51.1% - - - - -
PPYOLOE-S 7.9M 17.4G 640 208 43.1% / 42.7% 60.5% 46.6% 23.2% 46.4% 56.9%
PPYOLOE-M 23.4M 49.9G 640 123 48.9% / 48.6% 66.5% 53.0% 28.6% 52.9% 63.8%
PPYOLOE-L 52.2M 110.1G 640 78 51.4% / 50.9% 68.9% 55.6% 31.4% 55.3% 66.1%
PPYOLOE-X 98.4M 206.6G 640 45 52.2% / 51.9% 69.9% 56.5% 33.3% 56.3% 66.4%
YOLOv5-N (r6.1) 1.9M 4.5G 640 159 - / 28.0% - - - - -
YOLOv5-S (r6.1) 7.2M 16.5G 640 156 - / 37.4% - - - - -
YOLOv5-M (r6.1) 21.2M 49.0G 640 122 - / 45.4% - - - - -
YOLOv5-L (r6.1) 46.5M 109.1G 640 99 - / 49.0% - - - - -
YOLOv5-X (r6.1) 86.7M 205.7G 640 83 - / 50.7% - - - - -
YOLOR-CSP 52.9M 120.4G 640 106 51.1% / 50.8% 69.6% 55.7% 31.7% 55.3% 64.7%
YOLOR-CSP-X 96.9M 226.8G 640 87 53.0% / 52.7% 71.4% 57.9% 33.7% 57.1% 66.8%
YOLOv7-tiny-SiLU 6.2M 13.8G 640 286 38.7% / 38.7% 56.7% 41.7% 18.8% 42.4% 51.9%
YOLOv7 36.9M 104.7G 640 161 51.4% / 51.2% 69.7% 55.9% 31.8% 55.5% 65.0%
YOLOv7-X 71.3M 189.9G 640 114 53.1% / 52.9% 71.2% 57.8% 33.8% 57.1% 67.4%
YOLOv5-N6 (r6.1) 3.2M 18.4G 1280 123 - / 36.0% - - - - -
YOLOv5-S6 (r6.1) 12.6M 67.2G 1280 122 - / 44.8% - - - - -
YOLOv5-M6 (r6.1) 35.7M 200.0G 1280 90 - / 51.3% - - - - -
YOLOv5-L6 (r6.1) 76.8M 445.6G 1280 63 - / 53.7% - - - - -
YOLOv5-X6 (r6.1) 140.7M 839.2G 1280 38 - / 55.0% - - - - -
YOLOR-P6 37.2M 325.6G 1280 76 53.9% / 53.5% 71.4% 58.9% 36.1% 57.7% 65.6%
YOLOR-W6 79.8G 453.2G 1280 66 55.2% / 54.8% 72.7% 60.5% 37.7% 59.1% 67.1%
YOLOR-E6 115.8M 683.2G 1280 45 55.8% / 55.7% 73.4% 61.1% 38.4% 59.7% 67.7%
YOLOR-D6 151.7M 935.6G 1280 34 56.5% / 56.1% 74.1% 61.9% 38.9% 60.4% 68.7%
YOLOv7-W6 70.4M 360.0G 1280 84 54.9% / 54.6% 72.6% 60.1% 37.3% 58.7% 67.1%
YOLOv7-E6 97.2M 515.2G 1280 56 56.0% / 55.9% 73.5% 61.2% 38.0% 59.9% 68.4%
YOLOv7-D6 154.7M 806.8G 1280 44 56.6% / 56.3% 74.0% 61.8% 38.8% 60.1% 69.5%
YOLOv7-E6E 151.7M 843.2G 1280 36 56.8% / 56.8% 74.4% 62.1% 39.3% 60.5% 69.0%

Übersicht

Die Objekterkennung in Echtzeit ist eine wichtige Komponente in vielen Computer Vision Systemen, z. B. bei der Verfolgung mehrerer Objekte, beim autonomen Fahren, in der Robotik und bei der medizinischen Bildanalyse. In den letzten Jahren hat sich die Entwicklung der Echtzeit-Objekterkennung auf die Entwicklung effizienter Architekturen und die Verbesserung der Inferenzgeschwindigkeit verschiedener CPUs, GPUs und neuronaler Verarbeitungseinheiten (NPUs) konzentriert. YOLOv7 unterstützt sowohl mobile GPU als auch GPU Geräte, vom Edge bis zur Cloud.

Im Gegensatz zu herkömmlichen Echtzeit-Objektdetektoren, die sich auf die Optimierung der Architektur konzentrieren, legt YOLOv7 den Schwerpunkt auf die Optimierung des Trainingsprozesses. Dazu gehören Module und Optimierungsmethoden, die die Genauigkeit der Objekterkennung verbessern, ohne die Inferenzkosten zu erhöhen - ein Konzept, das als "trainierbare Bag-of-Freebies" bekannt ist.

Hauptmerkmale

YOLOv7 führt mehrere wichtige Funktionen ein:

  1. Modell-Neuparametrisierung: YOLOv7 schlägt ein geplantes re-parametrisiertes Modell vor, das auf Schichten in verschiedenen Netzen mit dem Konzept des Gradientenausbreitungspfads anwendbar ist.

  2. Dynamische Label-Zuweisung: Das Training des Modells mit mehreren Ausgangsschichten wirft ein neues Problem auf: "Wie kann man dynamische Ziele für die Ausgänge der verschiedenen Zweige zuweisen?" Um dieses Problem zu lösen, führt YOLOv7 eine neue Methode für die Zuweisung von Bezeichnungen ein, die sogenannte "Grob-zu-Fein-geführte Bezeichnungszuweisung".

  3. Erweiterte und zusammengesetzte Skalierung: YOLOv7 schlägt "erweiterte" und "zusammengesetzte Skalierungsmethoden" für den Echtzeit-Objektdetektor vor, mit denen Parameter und Berechnungen effektiv genutzt werden können.

  4. Effizienz: Die von YOLOv7 vorgeschlagene Methode kann etwa 40 % der Parameter und 50 % der Berechnungen des modernsten Echtzeit-Objektdetektors reduzieren und bietet eine schnellere Inferenzgeschwindigkeit und eine höhere Erkennungsgenauigkeit.

Verwendungsbeispiele

Zum Zeitpunkt der Erstellung dieses Artikels unterstützt Ultralytics derzeit keine YOLOv7-Modelle. Daher müssen alle Nutzer, die YOLOv7 verwenden möchten, sich direkt an das YOLOv7 GitHub Repository wenden, um Anweisungen zur Installation und Verwendung zu erhalten.

Hier ist ein kurzer Überblick über die typischen Schritte, die du unternehmen kannst, um YOLOv7 zu nutzen:

  1. Besuche das YOLOv7 GitHub-Repository: https://github.com/WongKinYiu/yolov7.

  2. Befolge die Anweisungen in der README-Datei zur Installation. Dazu gehört in der Regel das Klonen des Repositorys, die Installation der erforderlichen Abhängigkeiten und das Einrichten aller notwendigen Umgebungsvariablen.

  3. Sobald die Installation abgeschlossen ist, kannst du das Modell gemäß den Anweisungen im Repository trainieren und verwenden. Dazu gehört in der Regel, dass du deinen Datensatz vorbereitest, die Modellparameter konfigurierst, das Modell trainierst und dann das trainierte Modell zur Objekterkennung einsetzt.

Bitte beachte, dass die einzelnen Schritte je nach deinem Anwendungsfall und dem aktuellen Stand des YOLOv7-Repositorys variieren können. Es wird daher dringend empfohlen, sich direkt auf die Anweisungen im YOLOv7 GitHub-Repository zu beziehen.

Wir bedauern alle Unannehmlichkeiten, die dadurch entstehen können und werden uns bemühen, dieses Dokument mit Anwendungsbeispielen für Ultralytics zu aktualisieren, sobald die Unterstützung für YOLOv7 implementiert ist.

Zitate und Danksagungen

Wir möchten den YOLOv7-Autoren für ihre bedeutenden Beiträge im Bereich der Echtzeit-Objekterkennung danken:

@article{wang2022yolov7,
  title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
  author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
  journal={arXiv preprint arXiv:2207.02696},
  year={2022}
}

Die Originalarbeit von YOLOv7 findest du auf arXiv. Die Autoren haben ihre Arbeit öffentlich zugänglich gemacht, und die Codebasis kann auf GitHub eingesehen werden. Wir schätzen ihre Bemühungen, das Feld voranzubringen und ihre Arbeit einer breiteren Gemeinschaft zugänglich zu machen.

FAQ

Was ist YOLOv7 und warum gilt es als Durchbruch in der Echtzeit-Objekterkennung?

YOLOv7 ist ein hochmodernes Echtzeit-Objekterkennungsmodell, das eine unvergleichliche Geschwindigkeit und Genauigkeit erreicht. Es übertrifft andere Modelle wie YOLOX, YOLOv5 und PPYOLOE sowohl bei der Nutzung der Parameter als auch bei der Geschwindigkeit der Schlussfolgerungen. Zu den besonderen Merkmalen von YOLOv7 gehören die Neuparametrisierung des Modells und die dynamische Labelzuweisung, die die Leistung optimieren, ohne die Schlussfolgerungskosten zu erhöhen. Weitere technische Details zu seiner Architektur und zu den Vergleichsmetriken mit anderen modernen Objektdetektoren findest du im YOLOv7-Papier.

Was macht YOLOv7 besser als die Vorgängermodelle YOLO wie YOLOv4 und YOLOv5?

YOLOv7 führt mehrere Neuerungen ein, darunter die Neuparametrisierung des Modells und die dynamische Label-Zuweisung, die den Trainingsprozess verbessern und die Genauigkeit der Schlussfolgerungen erhöhen. Im Vergleich zu YOLOv5 steigert YOLOv7 die Geschwindigkeit und Genauigkeit erheblich. Zum Beispiel verbessert YOLOv7-X die Genauigkeit um 2,2 % und reduziert die Parameter um 22 % im Vergleich zu YOLOv5-X. Detaillierte Vergleiche findest du in der Leistungstabelle YOLOv7 Vergleich mit SOTA-Objektdetektoren.

Kann ich YOLOv7 mit Ultralytics Tools und Plattformen verwenden?

Im Moment unterstützt Ultralytics YOLOv7 nicht direkt in seinen Tools und Plattformen. Wer YOLOv7 nutzen möchte, muss die Installations- und Nutzungshinweise im YOLOv7 GitHub Repository befolgen. Andere hochmoderne Modelle kannst du mit Ultralytics Tools wie Ultralytics HUB erforschen und trainieren.

Wie kann ich YOLOv7 für ein benutzerdefiniertes Objekterkennungsprojekt installieren und ausführen?

Um YOLOv7 zu installieren und auszuführen, befolge diese Schritte:

  1. Klone das YOLOv7-Repository:
    git clone https://github.com/WongKinYiu/yolov7
    
  2. Navigiere zu dem geklonten Verzeichnis und installiere die Abhängigkeiten:
    cd yolov7
    pip install -r requirements.txt
    
  3. Bereite deinen Datensatz vor und konfiguriere die Modellparameter entsprechend der im Repository bereitgestellten Nutzungshinweise. Für weitere Anleitungen besuche das YOLOv7 GitHub Repository, wo du die neuesten Informationen und Updates findest.

Was sind die wichtigsten Funktionen und Optimierungen, die in YOLOv7 eingeführt wurden?

YOLOv7 bietet mehrere wichtige Funktionen, die die Objekterkennung in Echtzeit revolutionieren:

  • Modell-Neuparametrisierung: Verbessert die Leistung des Modells durch Optimierung der Gradientenausbreitungswege.
  • Dynamische Label-Zuweisung: Verwendet eine grob- bis feinkörnige Methode zur Zuweisung dynamischer Ziele für Ausgänge in verschiedenen Zweigen, um die Genauigkeit zu verbessern.
  • Erweiterte und zusammengesetzte Skalierung: Effiziente Nutzung von Parametern und Berechnungen, um das Modell für verschiedene Echtzeitanwendungen zu skalieren.
  • Effizienz: Reduziert die Anzahl der Parameter um 40 % und den Rechenaufwand um 50 % im Vergleich zu anderen State-of-the-Art-Modellen und ermöglicht gleichzeitig schnellere Schlussfolgerungen. Weitere Einzelheiten zu diesen Funktionen findest du im Abschnitt YOLOv7 Überblick.


Erstellt am 2023-11-12, Aktualisiert am 2024-07-04
Autoren: glenn-jocher (8), sergiuwaxmann (1)

Kommentare