Sobes.tech
Middle

YOLO-ду нодир объекттерди аныктоо үчүн үйрөнүүдө чындыкка жакын же класстардын тең салмактуулугун камсыз кылуу керекпи?

sobes.tech AI

AIден жооп

YOLOнун сейрек объекттерин аныктоо үчүн окутууда, класстардын балансын эске алуу маанилүү, бирок ыкма тапшырмага жана маалыматтарга көз каранды. Эгер чыныгы бөлүштүрүүгө жакын үлгү алуу (яъни, табигый дисбаланс менен) колдонулса, модель сейрек класстарды таанууда начар үйрөнүшү мүмкүн, анткени мисалдар жетишсиз.

Ошондуктан, көбүнчө баланс техникасы колдонулат, мисалы, ар бир класс үчүн бирдей мисалдар санын алуу же сейрек класстар үчүн маалыматтарды көбөйтүү (data augmentation) ыкмаларын колдонуу. Бул модельге сейрек объекттерди жакшы айырмалоого жардам берет.

Бирок, ашыкча жасалма баланс түзүү, сейрек класстарда ашыкча үйрөнүүгө жана жалпы натыйжалуулукка терс таасирин тийгизиши мүмкүн.

Оптималдуу ыкма — чыныгы бөлүштүрүүнү эске алуу менен класстар балансын айкалыштыруу, мисалы, салмактуу жоготуу функцияларын же focal loss колдонуу, бул көп кездешүүчү класстардын таасирин азайтат жана сейрек класстарга басым жасайт.

Салмактуу үлгү алуу мисалы:

# Класстар балансын камсыздоо үчүн псевдокод мисалы
from torch.utils.data import WeightedRandomSampler

class_sample_counts = [1000, 100, 50]  # ар бир класс үчүн мисалдар саны
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)

# DataLoaderда sampler колдонуу