Sobes.tech
Middle

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