Deve-se fazer uma amostragem aproximada à realidade ou com um equilíbrio de classes ao treinar YOLO para detecção de objetos raros?
sobes.tech IA
Resposta da IA
Ao treinar YOLO para detecção de objetos raros, é importante considerar o equilíbrio das classes, mas a abordagem depende da tarefa e dos dados. Se usar uma amostragem próxima à distribuição real (ou seja, com desequilíbrio natural), o modelo pode aprender mal a reconhecer classes raras devido à falta de exemplos.
Por isso, frequentemente aplicam-se técnicas de balanceamento, como amostragem com quantidade igual de exemplos para cada classe ou uso de métodos de aumento de dados (data augmentation) para classes raras. Isso ajuda o modelo a destacar melhor objetos raros.
No entanto, um equilíbrio artificial excessivo pode levar a overfitting em classes raras e a uma diminuição do desempenho geral.
A abordagem ideal é combinar o balanceamento de classes considerando a distribuição real, por exemplo, usando funções de perda ponderadas ou perda focal (focal loss), que reduzem a influência de classes frequentes e enfatizam as raras.
Exemplo de uso de amostragem ponderada:
# Exemplo de pseudocódigo para balancear classes
from torch.utils.data import WeightedRandomSampler
class_sample_counts = [1000, 100, 50] # número de exemplos para cada classe
weights = 1. / torch.tensor(class_sample_counts, dtype=torch.float)
samples_weight = weights[labels]
sampler = WeightedRandomSampler(samples_weight, num_samples=len(samples_weight), replacement=True)
# Usar sampler no DataLoader