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/).
A normalização por lotes, frequentemente referida como BatchNorm, é uma técnica utilizada em aprendizagem profunda (DL) para estabilizar e acelerar o treinamento de redes neurais artificiais. Introduzida para resolver o problema da mudança interna de covariáveis — em que a distribuição de entradas para uma camada muda continuamente à medida que os parâmetros das camadas anteriores são atualizados —, a BatchNorm padroniza as entradas para uma camada para cada minilote. Ao normalizar as entradas da camada para ter uma média de zero e um desvio padrão de um e, em seguida, dimensioná-las e deslocá-las com parâmetros aprendíveis, esse método permite que as redes usem taxas de aprendizagem mais altas e reduz a sensibilidade à inicialização.
Numa rede neural convolucional (CNN) padrão, os dados fluem através de camadas, onde cada camada realiza uma transformação. Sem normalização, a escala dos valores de saída pode variar muito, dificultando que o algoritmo de otimização encontre os melhores pesos. A normalização em lote é normalmente aplicada imediatamente antes da função de ativação (como ReLU ou SiLU).
O processo envolve duas etapas principais durante o treinamento:
Este mecanismo atua como uma forma de regularização, reduzindo ligeiramente a necessidade de outras técnicas, como camadas de dropout, adicionando uma pequena quantidade de ruído às ativações durante o treino.
Integrar a Normalização por Lote em arquiteturas como ResNet ou detectores de objetos modernos oferece várias vantagens distintas:
A normalização por lotes é um elemento básico em quase todos os sistemas modernos de visão computacional (CV).
É útil distinguir a Normalização por Lote da normalização de dados padrão.
Estruturas de aprendizagem profunda como PyTorch incluem implementações otimizadas de normalização de lotes. NasYOLO Ultralytics , essas camadas são automaticamente integradas aos blocos de convolução.
O seguinte Python O trecho de código demonstra como inspecionar um modelo para ver
onde BatchNorm2d as camadas estão localizadas dentro da arquitetura.
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)
Compreender como essas camadas interagem ajuda os programadores quando utilizam a Ultralytics para ajustar modelos em conjuntos de dados personalizados, garantindo que o treino permaneça estável mesmo com dados limitados.