Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Batch Normalization

A normalização por lotes padroniza cada canal ao longo de um minilote e, em seguida, redimensiona-o com parâmetros aprendidos. Aborda a matemática, o comportamento durante a inferência e os limites.

A normalização em lote, ou BatchNorm, é uma camada de rede neural que normaliza cada canal da entrada usando a média e a variância do minilote atual e, em seguida, redimensiona o resultado com dois parâmetros aprendidos. Sergey Ioffe e Christian Szegedy a apresentaram em 2015, e ela permitiu que o classificador de imagens Inception atingisse a mesma precisão com 14 vezes menos etapas de treinamento. A BatchNorm permite taxas de aprendizado mais altas, torna o treinamento menos sensível à inicialização dos pesos e se tornou um componente padrão de redes neurais convolucionais (CNNs), como a ResNet.

Como funciona a normalização em lotes#

Para uma camada convolucional, a BatchNorm calcula uma média μ e uma variância σ² por canal, agregando os valores de todas as imagens do lote e de todas as posições espaciais. Cada ativação x passa então por duas etapas:

  1. Normalização: x̂ = (x − μ) / √(σ² + ε), em que um ε pequeno, 1e-5 por padrão no PyTorch, evita a divisão por zero.
  2. Escala e deslocamento: y = γ·x̂ + β, em que γ e β são aprendidos para cada canal. Eles permitem que a rede restaure a média e a dispersão adequadas à camada seguinte, inclusive desfazendo completamente a normalização.

A BatchNorm normalmente fica entre uma convolução e sua função de ativação. Como β já adiciona um deslocamento por canal, o viés da convolução anterior é redundante e geralmente fica desativado.

Treinamento vs. inferência#

Durante o treinamento, cada passagem para frente também atualiza uma média móvel e uma variância móvel, calculadas como médias móveis exponenciais das estatísticas do lote. A BatchNorm2d do PyTorch aproxima esses valores em 10% de cada novo lote por padrão (momentum=0.1). Na inferência, a camada normaliza usando essas médias móveis, então a previsão de uma imagem deixa de depender das outras imagens que estejam no mesmo lote. model.train() e model.eval() alternam entre os dois comportamentos:

import torch

torch.manual_seed(0)
bn = torch.nn.BatchNorm2d(num_features=3)

# A batch of 8 three-channel feature maps with mean 5 and standard deviation 2
x = 5 + 2 * torch.randn(8, 3, 16, 16)

# Training mode normalizes with this batch's per-channel mean and variance
out = bn(x)
print(f"train mode: output mean {out.mean():.3f}, std {out.std():.3f}")

# The same call nudges the running averages 10% of the way toward the batch statistics
print(f"running mean {bn.running_mean[0]:.3f}, running var {bn.running_var[0]:.3f}")

# Eval mode normalizes with the running averages instead of the batch statistics
bn.eval()
out = bn(x)
print(f"eval mode:  output mean {out.mean():.3f}, std {out.std():.3f}")

No modo de treinamento, a saída tem média 0.000 e desvio padrão 1.000, embora a entrada tenha média 5. Depois de um lote, a média móvel passou apenas de 0 para 0.496, e a variância móvel, de 1 para 1.294; por isso, o modo de avaliação produz saídas com média 3.920. As médias móveis precisam de algumas dezenas de lotes para convergir, e um modelo avaliado no modo errado, ou antes de suas estatísticas estabilizarem, apresenta uma pontuação muito inferior à sua precisão real.

Na inferência, a BatchNorm é uma transformação linear fixa por canal, então pode ser incorporada à convolução anterior: os pesos da convolução são multiplicados por γ/√(σ² + ε), e o viés passa a ser β − γμ/√(σ² + ε). O bloco de convolução padrão do YOLO26 é composto por uma convolução sem viés, seguida de BatchNorm e uma ativação SiLU, e a Ultralytics incorpora cada uma dessas camadas BatchNorm à convolução antes da previsão e da exportação, removendo a camada sem alterar as saídas.

Por que a normalização em lote ajuda#

O artigo original atribuiu o benefício da BatchNorm à redução do deslocamento de covariáveis interno, isto é, à mudança na distribuição das entradas de cada camada conforme as camadas anteriores são atualizadas. Experimentos posteriores que injetaram deslocamentos aleatórios de distribuição após camadas BatchNorm constataram que o treinamento mal era afetado e atribuíram o benefício a uma superfície de perda mais suave, com gradientes mais previsíveis, permitindo que o otimizador dê passos maiores e mais estáveis. Manter as pré-ativações próximas de média zero e variância unitária também impede que as ativações saturantes entrem em suas regiões planas, o que ajuda a combater gradientes que desaparecem.

Como cada exemplo é normalizado com as estatísticas de um lote escolhido aleatoriamente, a BatchNorm também adiciona ruído que age como um leve regularizador, e o artigo original relatou que, em alguns casos, ela podia eliminar a necessidade de dropout.

Limitações#

  • Lotes pequenos: As estatísticas do lote ficam ruidosas quando cada dispositivo contém poucas imagens. Com 2 imagens por GPU, a normalização por grupos, que calcula estatísticas para grupos de canais dentro de cada imagem, teve erro no ImageNet 10.6% menor que a BatchNorm na ResNet-50.
  • Treinamento em várias GPUs: Cada GPU normaliza usando sua própria parcela do lote, a menos que as camadas sejam convertidas para SyncBatchNorm, que agrega estatísticas entre dispositivos ao custo de comunicação adicional.
  • Modelos de sequência: Sequências de comprimento variável e estatísticas dependentes do lote não combinam bem; por isso, os transformers usam normalização por camada.
  • Normalização de dados: Redimensiona as entradas brutas uma vez durante o pré-processamento, por exemplo, dividindo os valores dos pixels por 255. A BatchNorm normaliza ativações intermediárias em cada camada e etapa de treinamento.
  • Normalização por camada: Normaliza cada exemplo considerando suas próprias características, então se comporta da mesma forma no treinamento e na inferência e não depende do tamanho do lote. RMSNorm, uma variante mais simples sem subtração da média, é comum em modelos de linguagem grandes.
  • Normalização por grupos: Divide os canais de cada imagem em grupos e normaliza cada grupo, o que é adequado para modelos de detecção e segmentação treinados com lotes pequenos.
  • Normalização por instância: Normaliza separadamente cada canal de cada imagem, removendo o contraste específico da imagem. A substituição da BatchNorm pela normalização por instância, tanto no treinamento quanto no teste, melhorou bastante a qualidade da transferência rápida de estilo neural.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina