Explore how [batch normalization](https://www.ultralytics.com/glossary/batch-normalization) stabilizes training, prevents vanishing gradients, and boosts accuracy for models like [YOLO26](https://docs.ultralytics.com/models/yolo26/).
Die Batch-Normalisierung, häufig als BatchNorm bezeichnet, ist eine Technik, die im Deep Learning (DL) eingesetzt wird, um das Training künstlicher neuronaler Netze zu stabilisieren und zu beschleunigen. Eingeführt, um das Problem der internen Kovariatenverschiebung zu lösen – bei dem sich die Verteilung der Eingaben in eine Schicht kontinuierlich ändert, wenn die Parameter der vorherigen Schichten aktualisiert werden – standardisiert BatchNorm die Eingaben in eine Schicht für jede Mini-Batch. Durch die Normalisierung der Schichteingaben auf einen Mittelwert von Null und eine Standardabweichung von Eins sowie die anschließende Skalierung und Verschiebung mit lernbaren Parametern ermöglicht diese Methode den Netzwerken die Verwendung höherer Lernraten und reduziert die Empfindlichkeit gegenüber der Initialisierung.
In einem standardmäßigen Convolutional Neural Network (CNN) fließen Daten durch Schichten, wobei jede Schicht eine Transformation durchführt. Ohne Normalisierung kann die Skala der Ausgabewerte stark variieren, was es für den Optimierungsalgorithmus schwierig macht, die besten Gewichte zu finden. Die Batch-Normalisierung wird in der Regel unmittelbar vor der Aktivierungsfunktion (wie ReLU oder SiLU) angewendet.
Der Prozess umfasst zwei Hauptschritte während des Trainings:
Dieser Mechanismus wirkt als eine Form der Regularisierung und reduziert den Bedarf an anderen Techniken wie Dropout-Schichten geringfügig, indem er den Aktivierungen während des Trainings eine geringe Menge an Rauschen hinzufügt .
Die Integration der Batch-Normalisierung in Architekturen wie ResNet oder moderne Objektdetektoren bietet mehrere deutliche Vorteile:
Die Batch-Normalisierung ist ein fester Bestandteil fast aller modernen Computervisionssysteme (CV).
Es ist hilfreich, die Batch-Normalisierung von der Standard- Datennormalisierung zu unterscheiden.
Deep-Learning-Frameworks wie PyTorch enthalten optimierte Implementierungen der Batch-Normalisierung. In den Ultralytics YOLO werden diese Schichten automatisch in die Faltungsblöcke integriert.
Die folgenden Python Der Codeausschnitt zeigt, wie man ein Modell überprüft, um zu sehen,
wo BatchNorm2d Die Schichten befinden sich innerhalb der Architektur.
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Print the model structure to view layers
# You will see 'BatchNorm2d' listed after 'Conv2d' layers
print(model.model)
Das Verständnis der Wechselwirkungen zwischen diesen Schichten hilft Entwicklern bei der Verwendung der Ultralytics zur Feinabstimmung von Modellen auf benutzerdefinierten Datensätzen, wodurch sichergestellt wird, dass das Training auch bei begrenzten Datenmengen stabil bleibt.