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