La Focal Loss
Focal Loss: Cos'è e Come Funziona
La Focal Loss è una funzione di perdita introdotta per migliorare la performance di modelli di object detection come RetinaNet. Il suo scopo principale è ridurre l'impatto degli esempi facili e dare più importanza agli esempi difficili.
🔹 Problema che risolve
Nei dataset di object detection, il numero di oggetti è molto inferiore rispetto allo sfondo. Questo crea uno sbilanciamento che rende il modello meno efficace nel riconoscere gli oggetti rari o piccoli.
La Focal Loss aiuta a risolvere questo problema modificando la Cross-Entropy Loss con un fattore di focalizzazione.
🔹 Formula della Focal Loss
La formula della Focal Loss è:
FL(p_t) = - α (1 - p_t) ^ γ log(p_t)
- p_t: probabilità predetta della classe corretta.
- α: bilancia il peso tra classi.
- γ: controlla il livello di focalizzazione (di solito tra 1 e 5).
🔹 Implementazione in PyTorch
Ecco un'implementazione della Focal Loss in PyTorch:
import torch
import torch.nn as nn
import torch.nn.functional as F
class FocalLoss(nn.Module):
def __init__(self, alpha=0.25, gamma=2.0, reduction='mean'):
super(FocalLoss, self).__init__()
self.alpha = alpha
self.gamma = gamma
self.reduction = reduction
def forward(self, inputs, targets):
BCE_loss = F.binary_cross_entropy_with_logits(inputs, targets, reduction="none")
p_t = torch.exp(-BCE_loss)
focal_loss = self.alpha * (1 - p_t) ** self.gamma * BCE_loss
if self.reduction == 'mean':
return focal_loss.mean()
elif self.reduction == 'sum':
return focal_loss.sum()
else:
return focal_loss
Questa funzione aiuta il modello a concentrarsi sugli esempi difficili e a migliorare il detection di oggetti piccoli o rari.
🔹 Quando usare la Focal Loss?
- ✅ Quando il dataset ha molto background e pochi oggetti.
- ✅ Per modelli single-stage come YOLO, SSD e RetinaNet.
- ✅ Se il modello fatica a rilevare oggetti piccoli o difficili.
🔹 Conclusione
La Focal Loss è un'ottima scelta per migliorare i single-stage object detectors. Con il giusto valore di γ, il modello ignora gli esempi facili e si concentra su quelli più complessi, migliorando la precisione delle predizioni.
💡 Frase mnemonica: "La Focal Loss ignora il facile e si concentra sul difficile!"
Ti è stato utile questo articolo? Lascia un commento qui sotto! 😊
Commenti
Posta un commento