Usiłuję zbudować system rozpoznawania gestów do klasyfikowania gestów ASL (amerykański język migowy) , więc moje dane wejściowe powinny być sekwencją klatek z kamery lub pliku wideo, a następnie wykrywa tę sekwencję i odwzorowuje ją na odpowiednią klasa (spać, pomagać, jeść, biegać itp.)
Chodzi o to, że zbudowałem już podobny system, ale dla obrazów statycznych (bez ruchu), było to przydatne do tłumaczenia alfabetów, w których zbudowanie CNN było prostym zadaniem, ponieważ ręka nie porusza się tak bardzo, a struktura zestawu danych była również zarządzalna, ponieważ korzystałem z keras i być może nadal zamierzam to zrobić (każdy folder zawierał zestaw obrazów dla określonego znaku, a nazwa folderu to nazwa klasy tego znaku, np .: A, B, C , ..)
Moje pytanie tutaj: w jaki sposób mogę uporządkować mój zestaw danych, aby móc wprowadzić go do RNN w kamerach i jakich określonych funkcji powinienem użyć, aby skutecznie trenować mój model i wszelkie niezbędne parametry, niektórzy sugerowali użycie klasy TimeDistribution, ale ja nie mam jasny pomysł, jak go wykorzystać na moją korzyść, i wziąć pod uwagę kształt wejściowy każdej warstwy w sieci.
także biorąc pod uwagę, że mój zestaw danych będzie składać się z obrazów, prawdopodobnie będę potrzebował splotowego warstwę, jak to będzie możliwe, aby połączyć Conv warstwę do LSTM jeden (mam na myśli w kategoriach kodu).
Na przykład wyobrażam sobie, że mój zestaw danych może być taki
Folder o nazwie „Uruchom” zawiera 3 foldery 1, 2 i 3, każdy folder odpowiada ramce w sekwencji
Więc Run_1 będzie zawierał zestaw obrazów dla pierwszej klatki, Run_2 dla drugiej klatki i Run_3 dla trzeciej klatki, celem mojego modelu jest wytrenowanie w tej sekwencji, aby wypisać słowo Run .
źródło
Odpowiedzi:
W oparciu o moje zrozumienie wydaje się, że sprowadza się to do problemu klasyfikacji wielu klas (każdy zestaw / sekwencja gestów ręki ostatecznie odpowiada słowu / symbolowi). Architektura RNN / LSTM / GRU to świetne miejsce na rozpoczęcie, ale będzie kosztowne obliczeniowo i raczej wolno trenować. Jednak to, czy potrzebujesz jednego lub więcej z nich, zależy od struktury danych i od tego, czy możesz potraktować swoje zdjęcia jako zestaw, a nie sekwencję.
Oto kilka potencjalnych pomysłów:
Rozpocznij od skonfigurowania warstwy CNN dla każdego folderu „RUN_ *” wraz z każdą warstwą
dropout
i / lubflattening
między nimi.Zacznij od ustawienia pojedynczego długiego wektora reprezentującego wszystkie etapy sekwencji, a następnie dodaj kilka warstw CNN, również za pomocą
dropout
i / lubflattening
.To zajmie trochę eksploracji i dostrojenia po twojej stronie, aby zobaczyć, co działa najlepiej, i będziesz musiał wybrać za pomocą wskaźników oceny, które chcesz zoptymalizować (np. Precyzja / przywołanie)
Powodem, dla którego sugeruję CNN, jest to, że w niektórych przypadkach CNN mogą zapewniać wydajność podobną do modelu cyklicznego, ale za ułamek kosztów. Niestety, trudno jest powiedzieć bez żadnych informacji o twoich danych.
źródło