YOLO (You Only Look Once) ist eine Familie von Echtzeit-Objekterkennungssystemen, die auf Convolutional Neural Networks basieren. Erstmals 2015 von Joseph Redmon und Kollegen vorgestellt, hat YOLO mehrere Iterationen durchlaufen und ist zu einem der am weitesten verbreiteten Frameworks für Objekterkennung geworden. Der Name spiegelt das Kerndesign des Algorithmus wider: Er benötigt nur einen einzigen Vorwärtsdurchlauf durch das neuronale Netz, um Vorhersagen zu treffen, im Gegensatz zu früheren, auf Regionsvorschlägen basierenden Techniken wie R-CNN, die für ein einzelnes Bild tausende Durchläufe benötigten.
Anders als frühere Methoden, die ein Modell an mehreren Positionen und Skalen auf ein Bild anwendeten, wendet YOLO ein einzelnes neuronales Netz auf das gesamte Bild an. Das Netzwerk teilt das Bild in ein Raster von Regionen auf und sagt für jede Region Begrenzungsrahmen (Bounding Boxes) und Klassenwahrscheinlichkeiten voraus. Diese Vorhersagen werden mit Konfidenzwerten gewichtet, was eine schnelle und genaue Erkennung in einer einzigen Auswertung ermöglicht.
Überblick
Die Architektur von YOLO basiert auf einem Convolutional Neural Network, das das gesamte Bild in einem Durchgang verarbeitet. Das Bild wird in ein S × S-Raster unterteilt, wobei jede Zelle für die Vorhersage von Begrenzungsrahmen und Konfidenzwerten verantwortlich ist. Wenn das Zentrum des Begrenzungsrahmens eines Objekts in eine Zelle fällt, gilt diese Zelle als "enthaltend" das Objekt. Jede Zelle sagt B Begrenzungsrahmen voraus, zusammen mit Konfidenzwerten, die sowohl die Wahrscheinlichkeit eines vorhandenen Objekts als auch die Genauigkeit des vorhergesagten Rahmens widerspiegeln.
Die Netzwerkausgabe für jede Zelle umfasst bedingte Klassenwahrscheinlichkeiten (die Wahrscheinlichkeit, dass die Zelle ein Objekt einer bestimmten Klasse enthält, unter der Bedingung, dass sie mindestens ein Objekt enthält) und Parameter für Begrenzungsrahmen (Zentrumskoordinaten, Breite und Höhe). Mehrere Begrenzungsrahmen pro Zelle ermöglichen es dem Modell, sich auf verschiedene Objektformen zu spezialisieren, wie schlanke versus gedrungene Objekte. Die ursprüngliche YOLO-Architektur bestand aus 24 Convolutional-Schichten, gefolgt von 2 vollständig verbundenen Schichten.
Während des Trainings wird für jede Zelle, die einen Ground-Truth-Begrenzungsrahmen enthält, nur der vorhergesagte Rahmen mit der höchsten Intersection over Union (IoU) mit dem Ground Truth für den Gradientenabstieg verwendet. Die Verlustfunktion fördert, dass das Modell die vorhergesagten Rahmenkoordinaten mit dem Ground Truth abgleicht, die korrekten Klassenwahrscheinlichkeiten setzt und Fehlalarme unterdrückt.
Vorgänger und Kontext
Vor YOLO stützten sich Objekterkennungssysteme wie R-CNN und OverFeat auf Regionsvorschläge oder mehrskalige Scan-Ansätze. OverFeat, ein frühes einflussreiches Modell, trainierte ein neuronales Netz für die Klassifikation und fügte dann ein Regressionsnetz hinzu, um die Ecken von Begrenzungsrahmen vorherzusagen. Bei der Inferenz führte es das Klassifikationsnetz über viele Zoomstufen und Ausschnitte aus, wodurch tausende Kandidatenrahmen erzeugt wurden, die später zusammengeführt wurden. Dieser Prozess war rechenintensiv und langsam.
YOLO adressierte diese Ineffizienzen, indem es die Erkennung als ein einzelnes Regressionsproblem neu formulierte. Anstatt das Bild mehrmals zu scannen, verarbeitet YOLO das gesamte Bild in einem einzigen Vorwärtsdurchlauf, was es erheblich schneller macht, während es eine konkurrenzfähige Genauigkeit beibehält. Diese Verschiebung ermöglichte Echtzeitanwendungen in der Videoanalyse, Robotik und im autonomen Fahren.
Versionen
Die YOLO-Serie kann in zwei Teile unterteilt werden. Der ursprüngliche Teil, gepflegt von Joseph Redmon, umfasst YOLOv1, YOLOv2 und YOLOv3. Diese Versionen wurden auf einer eigenen Website veröffentlicht und in Forschung und Industrie weit verbreitet übernommen.
YOLOv1
YOLOv1, 2015 eingeführt, etablierte das Kernframework. Es teilte das Bild in ein S × S-Raster, wobei jede Zelle B Begrenzungsrahmen und Konfidenzwerte vorhersagte. Die Netzwerkausgabe für jede Zelle umfasste Klassenwahrscheinlichkeiten und Rahmenkoordinaten. Die ursprüngliche Implementierung verwendete S = 7 und B = 2, was 98 Begrenzungsrahmen pro Bild ergab. Trotz seiner Geschwindigkeit hatte YOLOv1 Einschränkungen bei der Erkennung kleiner Objekte und der Handhabung überlappender Objekte, die spätere Versionen adressierten.
YOLOv2 und YOLOv3
YOLOv2, auch bekannt als YOLO9000, führte Verbesserungen wie Batch-Normalisierung, Ankerrahmen (Anchor Boxes) und mehrskaliges Training ein. Es konnte über 9.000 Objektkategorien erkennen, indem es hierarchische Klassifikation nutzte. YOLOv3 verbesserte die Genauigkeit weiter durch eine tiefere Architektur mit Residualverbindungen und mehrskaligen Vorhersagen, was eine bessere Erkennung kleiner Objekte ermöglichte. Diese Versionen festigten YOLOs Ruf als State-of-the-Art-Echtzeitdetektor.
Auswirkungen und Anwendungen
YOLOs Geschwindigkeit und Effizienz haben es zu einer beliebten Wahl für Echtzeitanwendungen gemacht, einschließlich Videoüberwachung, autonomer Fahrzeuge und Robotik. Sein Ein-Pass-Design ist besonders für Edge-Geräte und eingebettete Systeme geeignet, wo Rechenressourcen begrenzt sind. Das Framework hat auch die nachfolgende Forschung in der Objekterkennung beeinflusst und viele Varianten und Anpassungen inspiriert.
Seit den frühen 2020er Jahren wird YOLO weiterhin aktiv von der Forschungsgemeinschaft entwickelt, wobei neuere Versionen wie YOLOv4, YOLOv5 und spätere Iterationen weitere Optimierungen einführen. Diese Versionen integrieren oft Techniken aus der Deep-Learning- und Neuronalen-Netzwerk-Forschung, wie Aufmerksamkeitsmechanismen und verbesserte Trainingsstrategien. YOLOs Vermächtnis liegt in seiner Demonstration, dass Echtzeiterkennung ohne Einbußen bei der Genauigkeit erreichbar ist, was es zu einem Eckpfeiler der modernen Computer Vision macht.