Scoprite come Focal Loss affronta lo sbilanciamento delle classi nel rilevamento degli oggetti, concentrando l'addestramento su esempi difficili per migliorare la precisione su set di dati sbilanciati.
La perdita focale è una funzione obiettivo specializzata progettata per risolvere il problema dello squilibrio estremo tra le classi nell'apprendimento automatico. apprendimento automatico, in particolare nel campo della visione artificiale. In molti scenari di rilevamento di oggetti, il numero di esempi di sfondo (negativi) supera di gran lunga il numero di oggetti di interesse (positivi). esempi di sfondo (negativi) supera di gran lunga il numero di oggetti di interesse (positivi). Le funzioni di perdita standard possono possono essere sopraffatte dall'enorme quantità di esempi di sfondo facili da classify , ostacolando la capacità del modello di apprendere gli esempi positivi più difficili. di apprendere gli esempi positivi, più difficili. Focal Loss attenua questo problema scalando dinamicamente la perdita in base alla fiducia della previsione. della previsione, riducendo di fatto la ponderazione degli esempi facili e costringendo il modello a concentrare i suoi sforzi di addestramento sui negativi e sugli errori di classificazione. di addestramento sui negativi difficili e sugli oggetti mal classificati.
La motivazione principale che sta alla base della perdita focale è il miglioramento delle prestazioni dei rilevatori di oggetti rilevatori di oggetti a uno stadio, come le prime versioni di versioni iniziali di RetinaNet e le architetture moderne come Ultralytics YOLO11. In questi sistemi, il rilevatore esegue la scansione di un'immagine immagine e genera migliaia di posizioni candidate. Poiché la maggior parte di un'immagine è solitamente costituita da sfondo, il rapporto tra sfondo rispetto all'oggetto può spesso essere di 1000:1 o superiore.
Senza un intervento, l'effetto cumulativo dei piccoli errori dovuti all'enorme numero di campioni di sfondo può dominano gli aggiornamenti del gradiente durante retropagazione. Questo fa sì che l'algoritmo di algoritmo di ottimizzazione a dare la priorità alla semplice classificare tutto come sfondo per minimizzare l'errore complessivo, piuttosto che apprendere le caratteristiche sfumate degli oggetti reali. oggetti reali. La perdita focale rimodella la curva di perdita standard per ridurre la penalità per gli esempi di cui il modello è già sicuro. di cui il modello è già sicuro, indirizzando così i pesi del modello pesi del modello per adattarsi ai casi più difficili.
La perdita focale è un'estensione della perdita Cross-Entropy Loss utilizzata nella classificazione binaria. Introduce un fattore modulante che introduce un fattore modulante che fa decadere il contributo della perdita all'aumentare della fiducia nella classe corretta. Quando un modello incontra un esempio "facile", come ad esempio una zona di cielo chiaro che identifica correttamente come sfondo con alta probabilità, il fattore di modulazione spinge la perdita vicino allo zero. Al contrario, per gli esempi "difficili" esempi in cui la previsione del modello è errata o incerta, la perdita rimane significativa.
Questo comportamento è controllato da un parametro di focalizzazione, spesso indicato come gamma. Regolando questo parametro, gli scienziati dei dati possono regolare l'aggressività con cui la funzione di perdita riduce la ponderazione degli esempi ben classificati. Ciò consente una formazione più stabile formazione più stabile su dati di formazione altamente sbilanciati, con conseguente di dati altamente sbilanciati, con conseguente aumento dell'accuratezza e del richiamo per le classi rare.
La capacità di gestire lo squilibrio rende Focal Loss essenziale negli ambienti critici per la sicurezza e ad alta precisione.
Il ultralytics fornisce un'implementazione robusta di Focal Loss, che può essere facilmente integrata in
pipeline di addestramento personalizzate. L'esempio seguente mostra come inizializzare la funzione di perdita e come calcolare l'errore
errore tra i logit di predizione e le etichette della verità a terra.
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss with a gamma of 1.5
criterion = FocalLoss(gamma=1.5)
# Example: Prediction logits (before activation) and Ground Truth labels (0 or 1)
preds = torch.tensor([[0.1], [2.5], [-1.0]], requires_grad=True)
targets = torch.tensor([[0.0], [1.0], [1.0]])
# Compute the loss
loss = criterion(preds, targets)
print(f"Focal Loss value: {loss.item():.4f}")
È utile distinguere la perdita focale dai termini correlati nel panorama delle funzioni di perdita: