Explore como o Focal Loss resolve o desequilíbrio de classes no deep learning. Aprenda a implementá-lo com Ultralytics para se concentrar em exemplos difíceis e melhorar a precisão do modelo.
A perda focal é uma função objetiva especializada usada principalmente no aprendizado profundo para lidar com o desafio do grave desequilíbrio de classes. Em muitas tarefas de visão computacional, como detecção de objetos, o número de exemplos de fundo (amostras negativas) supera significativamente os objetos de interesse (amostras positivas). Métodos padrão, como a amplamente utilizada Cross-Entropy Loss, tratam todos os erros de forma igual, o que muitas vezes faz com que o modelo seja sobrecarregado pelo grande volume de dadosclassify . A Focal Loss modifica o cálculo padrão da perda para diminuir o peso desses exemplos fáceis, forçando o algoritmo de otimização a concentrar a sua capacidade de aprendizagem em exemplos "difíceis" — osclassify raros eclassify que são cruciais para o desempenho do modelo .
A principal inovação do Focal Loss reside na sua capacidade de dimensionar dinamicamente a penalidade atribuída a cada amostra com base na confiança do modelo. Num cenário típico de aprendizagem supervisionada, um detetor pode avaliar milhares de localizações candidatas numa imagem. Como a maioria dessas localizações não contém objetos, uma função de perda padrão acumula muitos pequenos sinais de erro desses negativos fáceis, o que pode abafar o sinal valioso das poucas instâncias positivas.
A perda focal introduz um fator de modulação que diminui a contribuição da perda à medida que a confiança na classe correta aumenta. Isso significa que, se um modelo já tiver 99% de certeza de que um patch de fundo é realmente fundo, a perda para esse patch é reduzida a quase zero. Consequentemente, os pesos do modelo são atualizados principalmente com base em amostras classificadas incorretamente ou aquelas em que o modelo está incerto. Essa abordagem direcionada é essencial para treinar detectores de objetos de alto desempenho em uma única etapa, como o YOLO26, permitindo que eles alcancem alta precisão sem necessitar de etapas complexas de amostragem.
Lidar com dados de treino desequilibrados é fundamental para implementar sistemas de IA robustos em ambientes onde a segurança e a precisão são fundamentais.
O ultralytics A biblioteca inclui implementações otimizadas de funções de perda avançadas para suportar
modelos de última geração. Enquanto o Plataforma Ultralytics configura automaticamente
esses hiperparâmetros para um treino ideal, os programadores também podem aceder diretamente a esses componentes para pesquisas personalizadas
.
O exemplo a seguir demonstra como inicializar a perda focal usando o ultralytics pacote de utilitários e
calcular o erro para um conjunto de previsões.
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss.
# The 'gamma' parameter controls the focusing strength (higher = more focus on hard examples).
criterion = FocalLoss(gamma=1.5)
# Example: Model predictions (logits) and binary Ground Truth labels
# requires_grad=True simulates model outputs that need backpropagation
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss value
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")
Compreender onde a perda focal se encaixa no panorama mais amplo da medição de erros ajuda a selecionar a estratégia certa para tarefas específicas de visão computacional.