data augumentation w uczeniu maszynowym

0

Witam,
chciałbym zapytać, czy dobrze rozumiem idee data augumentation w uczeniu maszynowym.

Ja rozumiem to tak, że mamy mało danych uczących albo kiepskiej jakości i wtedy stosujemy np. normalizację kontrastu itp. A w momencie gdy brakuje nam danych to możemy sobie je "rozmnożyć" obracając zdjęcie, skalując i z jednego zdjęcia możemy zrobić kilka.

Teraz kwestia której nie rozumiem, w którym momencie sieć wykorzystuje te dodatkowe dane.

augumentation = iaa.Sequential(
    [
        # apply the following augmenters to most images
        iaa.Fliplr(0.5), # horizontally flip 50% of all images
        iaa.Flipud(0.2), # vertically flip 20% of all images
        # crop images by -5% to 10% of their height/width
        sometimes(iaa.CropAndPad(
            percent=(-0.05, 0.1),
            pad_mode=ia.ALL,
            pad_cval=(0, 255)
        ))

model.train(dataset_train, dataset_val,
            learning_rate=LEARNING_RATE,
            epochs=6,
            layers='all',
            augmentation=augmentation)

Czy powinienen jakoś wyliczać ile mi przybyło danych? Bo powiedzmy, że mam 1000 zdjęć. A liczbę kroków w jednej epoce zazwyczaj stosuje sie liczba_zdjec/batch = 100 (niech batch bedzie 10). Bo po augmentacji mam teraz dwa razy więcej zdjęć.

0

Data Augumentation to nic innego jak próba polepszenia generalizacji modelu, tworzysz nieinwazyjne (czyli nie usuwasz clou zdjecia) metody np. obracanie, zaciemnianie itd. obrazu.
Nie myl tego z normalizacją (np. kontrastu) ktora jest stosowana w celach obliczeniowych i jest oddzielna od augumentacji.

Co do czesci drugiej to korzystajac z kerasa bo widze ze z niego korzystasz nie musisz tego robic train sam dobiera liczbe kroków uczących ale jesli chcesz to zrobic w tensorflow/pytorchu to musisz juz zrobic to recznie i wyliczyc liczbe krokow identycznie jak to zrobilas tutaj

1 użytkowników online, w tym zalogowanych: 0, gości: 1