Chciałbym użyć sieci neuronowej do klasyfikacji obrazów. Zacznę od wstępnie przeszkolonego CaffeNet i wyszkolę go do mojej aplikacji.
Jak przygotować obrazy wejściowe?
W tym przypadku wszystkie obrazy są tego samego obiektu, ale z różnymi odmianami (pomyśl: kontrola jakości). Są w nieco różnych skalach / rozdzielczościach / odległościach / warunkach oświetleniowych (w wielu przypadkach nie znam skali). Ponadto na każdym obrazie znajduje się obszar (znany) wokół interesującego obiektu, który powinien zostać zignorowany przez sieć.
Mógłbym (na przykład) przyciąć środek każdego obrazu, co gwarantuje, że zawiera część interesującego obiektu i żaden z ignorowanego obszaru; ale wydaje się, że to wyrzuciłoby informacje, a także wyniki nie byłyby tak naprawdę w tej samej skali (może 1,5-krotna odmiana).
Powiększanie zestawu danych
Słyszałem o tworzeniu większej ilości danych treningowych przez losowe przycinanie / odbicie lustrzane / itp. Czy istnieje standardowa metoda? Jakieś wyniki na temat tego, jak wiele poprawia dokładność klasyfikatora?
import scipy.misc
. stackoverflow.com/questions/13581593/...Chociaż odpowiedź wacax jest kompletna i naprawdę wyjaśniająca, chciałbym dodać kilka rzeczy na wypadek, gdyby ktoś natknął się na tę odpowiedź.
Przede wszystkim, w większości
scipy.misc
związanych z funkcji graficznych (imread
,imsave
,imresize
ERC) stały się przestarzałe na rzecz obu ImageIO lub skimage .Po drugie, zdecydowanie zalecałbym imgaug biblioteki python do każdego zadania rozszerzania. Jest naprawdę łatwy w użyciu i ma praktycznie wszystkie techniki powiększania, których możesz chcieć użyć.
źródło