Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Batch Normalization

La normalizzazione dei batch standardizza ogni canale su un mini-batch, quindi lo riscalibra con parametri appresi. Tratta la matematica, il comportamento in inferenza e i limiti.

La normalizzazione dei batch, o BatchNorm, è uno strato di una rete neurale che normalizza ogni canale del proprio input usando la media e la varianza del mini-batch corrente, quindi riscalando il risultato con due parametri appresi. Sergey Ioffe e Christian Szegedy la introdussero nel 2015, e ciò permise al loro classificatore di immagini Inception di raggiungere la stessa accuratezza con un numero di passaggi di addestramento 14 volte inferiore. BatchNorm consente tassi di apprendimento più elevati, rende l’addestramento meno sensibile all’inizializzazione dei pesi ed è diventata un componente standard delle reti neurali convoluzionali (CNNs), come ResNet.

Come funziona la normalizzazione dei batch#

Per uno strato convoluzionale, BatchNorm calcola una media μ e una varianza σ² per ogni canale, aggregando i dati di tutte le immagini del batch e di tutte le posizioni spaziali. Ogni attivazione x attraversa quindi due passaggi:

  1. Normalizzazione: x̂ = (x − μ) / √(σ² + ε), dove un valore ε piccolo, pari a 1e-5 per impostazione predefinita in PyTorch, evita la divisione per zero.
  2. Scala e traslazione: y = γ·x̂ + β, dove γ e β sono parametri appresi per ogni canale. Consentono alla rete di ripristinare la media e la dispersione più adatte allo strato successivo, anche annullando del tutto la normalizzazione.

BatchNorm si trova di solito tra una convoluzione e la relativa funzione di attivazione. Poiché β aggiunge già uno spostamento per canale, il bias della convoluzione precedente è ridondante e normalmente viene disabilitato.

Addestramento e inferenza#

Durante l’addestramento, ogni passaggio in avanti aggiorna anche una media mobile e una varianza mobile, calcolate come medie mobili esponenziali delle statistiche del batch. BatchNorm2d di PyTorch le sposta per impostazione predefinita del 10% verso i valori di ogni nuovo batch (momentum=0.1). In inferenza, invece, lo strato normalizza usando queste medie mobili, così la predizione di un’immagine non dipende più dalle altre immagini presenti nello stesso batch. model.train() e model.eval() alternano i due comportamenti:

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}")

In modalità di addestramento, l’output ha media 0.000 e deviazione standard 1.000, anche se l’input ha media 5. Dopo un batch, la media mobile è passata solo da 0 a 0.496 e la varianza mobile da 1 a 1.294, quindi la modalità eval produce output con media 3.920. Le medie mobili richiedono alcune decine di batch per convergere; un modello valutato nella modalità sbagliata, o prima che le sue statistiche si siano stabilizzate, ottiene un punteggio molto inferiore alla sua vera accuratezza.

In inferenza, BatchNorm è una trasformazione lineare fissa per canale e può quindi essere incorporata nella convoluzione precedente: i pesi della convoluzione vengono moltiplicati per γ/√(σ² + ε) e il bias diventa β − γμ/√(σ² + ε). Il blocco convoluzionale standard in YOLO26 è composto da una convoluzione senza bias seguita da BatchNorm e da un’attivazione SiLU; Ultralytics fonde ciascuno di questi strati BatchNorm nella convoluzione prima della predizione e dell’esportazione, rimuovendo così lo strato e mantenendo invariati gli output.

Perché la normalizzazione batch è utile#

L’articolo originale attribuiva i vantaggi di BatchNorm alla riduzione dello shift covariato interno, cioè al cambiamento nella distribuzione degli input di ogni strato durante l’aggiornamento degli strati precedenti. In seguito, esperimenti che hanno introdotto shift casuali delle distribuzioni dopo gli strati BatchNorm hanno rilevato effetti minimi sull’addestramento e hanno ricondotto il vantaggio a una superficie di perdita più regolare, con gradienti più prevedibili, che consente all’ottimizzatore di compiere passi più ampi e stabili. Mantenere le pre-attivazioni vicine a una media nulla e a una varianza unitaria evita inoltre che le attivazioni saturanti entrino nelle loro regioni piatte, contrastando i gradienti evanescenti.

Poiché ogni esempio viene normalizzato usando le statistiche di un batch estratto casualmente, BatchNorm aggiunge anche rumore che agisce da lieve regolarizzatore; l’articolo originale ha riportato che, in alcuni casi, questo poteva eliminare la necessità del dropout.

Limiti#

  • Batch piccoli: le statistiche del batch diventano rumorose quando ogni dispositivo contiene poche immagini. Con 2 immagini per GPU, la Group Normalization, che calcola le statistiche su gruppi di canali all’interno di ogni immagine, ha ottenuto un errore su ImageNet inferiore del 10.6% rispetto a BatchNorm su ResNet-50.
  • Addestramento multi-GPU: ogni GPU normalizza usando la propria porzione del batch, a meno che gli strati non vengano convertiti in SyncBatchNorm, che aggrega le statistiche tra i dispositivi al costo di una comunicazione aggiuntiva.
  • Modelli sequenziali: le sequenze di lunghezza variabile e le statistiche dipendenti dal batch si adattano male, quindi i transformer usano invece la normalizzazione degli strati.
  • Normalizzazione dei dati: riscala gli input grezzi una volta durante il pre-processing, per esempio dividendo i valori dei pixel per 255. BatchNorm normalizza le attivazioni intermedie a ogni strato e a ogni passaggio di addestramento.
  • Normalizzazione degli strati: normalizza ogni esempio rispetto alle proprie feature, quindi si comporta allo stesso modo durante l’addestramento e l’inferenza e non dipende dalla dimensione del batch. RMSNorm, una variante più semplice che non sottrae la media, è comune nei modelli linguistici di grandi dimensioni.
  • Normalizzazione a gruppi: suddivide i canali di ogni immagine in gruppi e li normalizza all’interno di ciascun gruppo, una soluzione adatta ai modelli di rilevamento e segmentazione addestrati con batch piccoli.
  • Normalizzazione per istanza: normalizza separatamente ogni canale di ogni immagine, eliminando il contrasto specifico dell’immagine. Sostituire BatchNorm con la normalizzazione per istanza, sia durante l’addestramento sia durante il test, ha migliorato notevolmente la qualità del trasferimento dello stile neurale rapido.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning