Sobes.tech
Middle

Je potrebné pri tréningu YOLO na detekciu zriedkavých objektov robiť vzorkovanie blízke realite alebo s rovnomerným vyvážením tried?

sobes.tech AI

Odpoveď od AI

Pri tréningu YOLO na detekciu zriedkavých objektov je dôležité zohľadniť rovnováhu tried, ale prístup závisí od úlohy a údajov. Ak použijete vzorkovanie blízke skutočnému rozloženiu (t.j. s prirodzenou nerovnováhou), model sa môže zle naučiť rozpoznávať zriedkavé triedy kvôli nedostatku príkladov.

Preto sa často používajú techniky vyvažovania, ako je vzorkovanie s rovnakým počtom príkladov pre každú triedu alebo použitie metód zvýšenia dát (data augmentation) pre zriedkavé triedy. To pomáha modelu lepšie rozlišovať zriedkavé objekty.

Nadmerné umelé vyvažovanie však môže viesť k preučeniu na zriedkavých triedach a zhoršeniu celkového výkonu.

Optimálny prístup je kombinovať vyvažovanie tried s ohľadom na skutočné rozloženie, napríklad pomocou vážených funkcií straty alebo fokálnej straty (focal loss), ktorá znižuje vplyv často sa vyskytujúcich tried a kladie dôraz na zriedkavé.

Príklad použitia váženého vzorkovania:

# Príklad pseudokódu na vyváženie tried
from torch.utils.data import WeightedRandomSampler

class_sample_counts = [1000, 100, 50]  # počet príkladov pre každú triedu
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)

# Použitie sampler v DataLoader