data augumentation w uczeniu maszynowym

Odpowiedz Nowy wątek
2019-03-14 21:46
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ęć.

Nikt Ci nie odpowiada, bo, w zasadzie, Sam sobie odpowiedziałeś. Mozesz to, przecież, łatwo sprawdzić eksperymentalnie. - lion137 2019-03-15 11:37
Jest to mój pierwszy projekt. Właśnie nie wiem jak to sprawdzić :( W jaki sposób mogę to sprawdzić? - marysienka 2019-03-16 16:02

Pozostało 580 znaków

2019-03-15 12:08
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

edytowany 2x, ostatnio: komuher, 2019-03-15 12:10
Czyli muszę zsumować liczbę zdjęć oryginalnych, czyli np. 200 + te które powstały w wyniku data augumentation. A w jaki sposób wyliczyć to skoro stosuje odbicie lustrzane pionowe do 50%, 20 % do poziomego itd. I ostatecznie wydaje mi się, że jako wynik końcowy posiadam pewną liczbę danych będąca sumą logiczną wszystkich metod. Bo pewnie zdazy się, że niektóre zdjęcie będzie i pionowo odwrócone i poziomo odwrócone jednocześnie i zdazy sie też taki, co akurat żadna metoda nie została zastosowana. czyli mogę mieć zarówno 100 zdjec, 120, 140... nie wiadomo. - marysienka 2019-03-16 16:07
Tak, uzuwam tensorflow. - marysienka 2019-03-16 16:11

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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