34

Obecnie próbuję stworzyć program różnicujący zgniłe pomarańcze i jadalne pomarańcze wyłącznie na podstawie ich wyglądu zewnętrznego. Aby to zrobić, planuję użyć Convolutional Neural Network, aby ćwiczyć ze zgniłymi pomarańczami i normalnymi pomarańczami. Po kilku poszukiwaniach mogłem znaleźć tylko jedną bazę danych o wielkości ok. 150 zgniłych pomarańczy i 150 normalnych pomarańczy na czarnym tle (http://www.cofilab.com/downloads/). Oczywiście model uczenia maszynowego potrzebuje co najmniej kilku tysięcy pomarańczy, aby uzyskać dokładność powyżej 90 procent. Czy mogę jednak zmienić te 150 pomarańczy w jakiś sposób, aby uzyskać więcej zdjęć pomarańczy? Przez zmianę, mam na myśli dodanie różnych odcieni pomarańczy na cytrusach, aby uzyskać "inny kolor pomarańczowy". Czy byłaby to skuteczna metoda szkolenia sieci neuronowej?Zmiana przeszkolonych obrazów do szkolenia sieci neuronowej

Odpowiedz

7

Jest to bardzo dobry sposób na zwiększenie liczby dacie masz. To, co zrobisz, zależy od twoich danych. Na przykład, jeśli szkolisz dane uzyskane z czujnika, możesz dodać trochę zakłóceń do danych treningowych, abyś mógł zwiększyć swój zestaw danych. W końcu możesz spodziewać się hałasu z czujnika później.

Zakładając, że będziesz ćwiczyć na obrazach, oto bardzo dobre repozytorium github, które zapewnia środki do wykorzystania tych technik. Ta biblioteka pytona pomaga w powiększaniu obrazów do projektów uczenia maszynowego. Konwertuje zestaw obrazów wejściowych na nowy, znacznie większy zbiór lekko zmienionych obrazów. Link: https://github.com/aleju/imgaug

Cechy:

  • większości standardowych technik powiększania dostępny.

  • Techniki można zastosować zarówno do obrazów, jak i punktów szczególnych/punktów orientacyjnych na obrazach . Zdefiniuj sekwencję augmentacji raz na początku eksperymentu , a następnie zastosuj ją wielokrotnie.

  • Zdefiniuj elastyczne zakresy stochastyczne dla każdej augmentacji, np. "obróć każde zdjęcie o wartość pomiędzy -45 a 45 stopni" lub "obróć każdy obraz o wartość próbkowaną z rozkładu normalnego N (0, 5.0)".

  • łatwo przekształcić wszystkie zakresy stochastycznych do wartości deterministycznych do zwiększenia różne partie obrazu w dokładnie identyczny sposób (na przykład obrazy i ich Strefy).

enter image description here

2

To naprawdę dobry sposób na zwiększenie zestawu danych. Można na przykład zastosować rozmycie gaussowskie do obrazów. Staną się rozmyte, ale różnią się od oryginału. Możesz także odwrócić obrazy. Lub, w ostatnim przypadku, poszukaj nowych obrazów i zastosuj cytowane techniki.

3

Rozszerzenie danych jest tym, czego szukasz. W twoim przypadku możesz zrobić różne rzeczy:

  1. Zastosuj filtry, aby uzyskać nieco inny obraz, jak już powiedziano, możesz użyć rozmycia gaussowskiego.

  2. Wytnij pomarańczę i umieść ją na innym tle.

  3. Skaluj pomarańcze, używając różnych współczynników skali.

  4. Obracanie obrazów.

  5. twórz syntetyczne zgniłe pomarańcze.

  6. Wymieszaj wszystkie kombinacje poprzednio wymienionych. Przy pomocy tego rodzaju ulepszenia możesz łatwo stworzyć tysiąc różnych pomarańczy.

Zrobiłem coś takiego ze zbioru danych o 12.000 obrazów i mogę tworzyć 630.000 próbek

0

danych powiększania jest naprawdę dobry sposób na zwiększenie szkoleń ustawiony ale jeszcze nie na tyle aby trenować głęboki koniec sieciowej, aby zakończyć na własną rękę, biorąc pod uwagę możliwość, że będzie to nadmierne dopasowanie. Powinieneś popatrzeć na adaptację domeny, w której bierzesz udoskonalony model, taki jak incepcja, który jest szkolony na zestawie danych imagenet i finalizujesz go dla twojego problemu. Ponieważ musisz nauczyć się tylko parametrów wymaganych do sklasyfikowania twojego przypadku użycia, możliwe jest osiągnięcie dobrych dokładności przy relatywnie mniej dostępnych danych treningowych. Wystawiłem demo klasyfikacji w tej technice here. Wypróbuj go z zestawem danych i sprawdź, czy to pomaga. Demo zajmuje się udoskonalonym modelem, a także rozszerzeniem danych dla zbioru danych, który prześlesz.

Powiązane problemy