Descubra como a Perda Focal lida com o desequilíbrio de classes na deteção de objectos - concentrando o treino em exemplos difíceis para melhorar a precisão em conjuntos de dados desequilibrados.
A perda focal é uma função objetiva especializada concebida para resolver o problema do desequilíbrio extremo das classes na formação de aprendizagem automática. aprendizagem automática, particularmente no domínio da visão computacional. Em muitos cenários de deteção de objectos, o número de exemplos de fundo (negativos) excede largamente o número de objectos de interesse (positivos). As funções de perda padrão podem podem ficar sobrecarregadas com o grande volume destes exemplos de fundo fáceis de classify , dificultando a capacidade do modelo para aprender os exemplos positivos mais difíceis. A perda focal atenua esse problema dimensionando dinamicamente a perda com base na confiança da previsão, reduzindo efetivamente a ponderação dos exemplos fáceis e forçando o modelo a concentrar os seus esforços de esforços de treino em negativos difíceis e objectos mal classificados.
A principal motivação por detrás da Perda Focal é melhorar o desempenho dos detectores de objectos de uma fase, como as versões iniciais do RetinaNet e arquitecturas modernas como o Ultralytics YOLO11. Nestes sistemas, o detetor analisa uma imagem e gera milhares de localizações candidatas. Uma vez que a maior parte de uma imagem é normalmente fundo, o rácio de fundo para o objeto pode frequentemente ser de 1000:1 ou superior.
Sem intervenção, o efeito cumulativo dos pequenos erros do grande número de amostras de fundo pode dominar as actualizações do gradiente durante a retropropagação. Isto faz com que o algoritmo de otimização dê prioridade à simples classificar tudo como fundo para minimizar o erro geral, em vez de aprender as caraterísticas matizadas dos objectos reais. A perda focal remodela a curva de perda padrão para reduzir a penalidade para exemplos nos quais o modelo já está confiante, direcionando confiante, direcionando assim os direciona os pesos do modelo para se ajustar aos casos desafiadores.
A Perda Focal é uma extensão da perda de entropia cruzada utilizada na classificação binária. Esta introduz um fator de modulação que diminui a contribuição da perda à medida que a confiança na classe correta aumenta. Quando um modelo encontra um exemplo "fácil" - como um pedaço de céu claro que identifica corretamente como fundo com elevada probabilidade - o fator de modulação faz com que a perda se aproxime de zero. Por outro lado, para exemplos "difíceis exemplos em que a previsão do modelo é incorrecta ou incerta, a perda continua a ser significativa.
Este comportamento é controlado por um parâmetro de focagem, frequentemente designado por gama. Ao ajustar este parâmetro, os cientistas de dados podem ajustar a agressividade com que a função de perda reduz o peso dos exemplos bem classificados. Isto permite um treino mais estável estável em dados de treino altamente desequilibrados, levando a uma maior exatidão e recuperação para classes raras.
A capacidade de lidar com o desequilíbrio torna o Focal Loss essencial em ambientes de segurança crítica e de alta precisão.
O ultralytics A biblioteca fornece uma implementação robusta da Perda Focal que pode ser facilmente integrada em
em pipelines de treinamento personalizados. O exemplo a seguir demonstra como inicializar a função de perda e calcular o erro
erro entre os logits de previsão e os rótulos da verdade terrestre.
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}")
É útil distinguir a Perda Focal dos termos relacionados no panorama da função de perda: