YOLOv7: Trainierbare 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. Darüber hinaus übertrifft YOLOv7 andere Objektdetektoren wie YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5 und viele andere in 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 für YOLOv7 ist auf GitHub verfügbar.
Vergleich der SOTA-Objektdetektoren
Aus den Ergebnissen in der Vergleichstabelle YOLO 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 51,4% AP bei einer Framerate von 161 fps, während PPYOLOE-L mit der gleichen AP nur 78 fps Framerate hat. In Bezug auf die Nutzung der Parameter 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) ähnlicher Größenordnung, so ist die Inferenzgeschwindigkeit von YOLOv7-X um 31 fps schneller. Darüber hinaus 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-winzig-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, darunter die Verfolgung mehrerer Objekte, autonomes Fahren, Robotik und medizinische 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, von der 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.
Wesentliche Merkmale
YOLOv7 führt mehrere wichtige Funktionen ein:
-
Modell-Neuparametrisierung: YOLOv7 schlägt ein geplantes neu parametrisiertes Modell vor, eine Strategie, die auf Schichten in verschiedenen Netzen mit dem Konzept des Gradientenausbreitungspfades anwendbar ist.
-
Dynamische Label-Zuweisung: Das Training eines Modells mit mehreren Ausgabeschichten 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 der Label-Zuweisung ein, die grob-zu-fein-geführte Label-Zuweisung.
-
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.
-
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 höhere Erkennungsgenauigkeit.
Beispiele für die Verwendung
Zum Zeitpunkt der Erstellung dieses Artikels unterstützt Ultralytics derzeit keine YOLOv7-Modelle. Daher müssen alle Benutzer, die YOLOv7 verwenden möchten, direkt auf das YOLOv7 GitHub-Repository verweisen, um Anweisungen zur Installation und Verwendung zu erhalten.
Hier ist ein kurzer Überblick über die typischen Schritte, die Sie bei der Nutzung von YOLOv7 unternehmen können:
-
Besuchen Sie das YOLOv7 GitHub-Repository: https://github.com/WongKinYiu/yolov7.
-
Folgen Sie den Anweisungen in der README-Datei für die Installation. Dies umfasst in der Regel das Klonen des Repositorys, die Installation der erforderlichen Abhängigkeiten und das Einrichten aller erforderlichen Umgebungsvariablen.
-
Sobald die Installation abgeschlossen ist, können Sie das Modell gemäß den im Repository bereitgestellten Nutzungsanweisungen trainieren und verwenden. Dies beinhaltet in der Regel die Vorbereitung Ihres Datensatzes, die Konfiguration der Modellparameter, das Training des Modells und die Verwendung des trainierten Modells zur Objekterkennung.
Bitte beachten Sie, dass die einzelnen Schritte je nach Ihrem spezifischen 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 dies verursachen kann 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 auf dem Gebiet der Echtzeit-Objekterkennung danken:
Die ursprüngliche YOLOv7-Veröffentlichung ist auf arXiv zu finden. Die Autoren haben ihre Arbeit öffentlich zugänglich gemacht, und die Codebasis kann auf GitHub abgerufen 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 wird es als ein Durchbruch in der Echtzeit-Objekterkennung angesehen?
YOLOv7 ist ein hochmodernes Echtzeit-Objekterkennungsmodell, das eine beispiellose 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 Label-Zuweisung, die seine Leistung optimieren, ohne die Inferenzkosten zu erhöhen. Weitere technische Details über die Architektur und Vergleichsmetriken mit anderen hochmodernen Objektdetektoren finden Sie in der YOLOv7-Veröffentlichung.
Wie verbessert sich YOLOv7 gegenüber den Vorgängermodellen YOLO wie YOLOv4 und YOLOv5?
YOLOv7 führt mehrere Innovationen ein, darunter die Neuparametrisierung des Modells und die dynamische Zuweisung von Bezeichnungen, die den Trainingsprozess verbessern und die Genauigkeit der Schlussfolgerungen erhöhen. Im Vergleich zu YOLOv5 steigert YOLOv7 die Geschwindigkeit und Genauigkeit erheblich. Beispielsweise verbessert YOLOv7-X die Genauigkeit um 2,2 % und reduziert die Parameter um 22 % im Vergleich zu YOLOv5-X. Detaillierte Vergleiche finden Sie 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. Benutzer, die YOLOv7 verwenden möchten, müssen die Installations- und Nutzungsanweisungen befolgen, die im YOLOv7-GitHub-Repository bereitgestellt werden. Für andere moderne Modelle können Sie Ultralytics Tools wie Ultralytics HUB verwenden.
Wie kann ich YOLOv7 für ein benutzerdefiniertes Objekterkennungsprojekt installieren und ausführen?
Um YOLOv7 zu installieren und auszuführen, folgen Sie bitte diesen Schritten:
- Klonen Sie das YOLOv7-Repository:
- Navigieren Sie zu dem geklonten Verzeichnis und installieren Sie die Abhängigkeiten:
- Bereiten Sie Ihren Datensatz vor und konfigurieren Sie die Modellparameter gemäß den im Repository bereitgestellten Nutzungsanweisungen. Für weitere Anleitungen besuchen Sie das YOLOv7 GitHub-Repository für die neuesten Informationen und Updates.
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 fein geführte Methode zur Zuweisung dynamischer Ziele für Ausgänge über verschiedene Zweige hinweg und verbessert so die Genauigkeit.
- Erweiterte und zusammengesetzte Skalierung: Effiziente Nutzung von Parametern und Berechnungen zur Skalierung des Modells für verschiedene Echtzeitanwendungen.
- Effizienz: Verringert die Anzahl der Parameter um 40 % und den Rechenaufwand um 50 % im Vergleich zu anderen modernen Modellen, während gleichzeitig eine schnellere Inferenzgeschwindigkeit erreicht wird. Weitere Einzelheiten zu diesen Funktionen finden Sie im Abschnitt YOLOv7 Überblick.