Використання RNN (LSTM) для системи розпізнавання жестів


10

Я намагаюся створити систему розпізнавання жестів для класифікації жестів ASL (американської мови жестів ) , тому мій вхід повинен бути послідовністю кадрів або з камери, або з відеофайлу, тоді він визначає послідовність і відображає її у відповідній клас (спати, допомагати, їсти, бігати тощо)

Справа в тому, що я вже створив подібну систему, але для статичних зображень (не включається рух), це було корисно для перекладу алфавітів, лише коли побудова CNN була прямим завданням вперед, оскільки рука не рухається так сильно і Структура набору даних була також керованою, коли я використовував кераси, і, можливо, все ще маю намір це зробити (кожна папка містила набір зображень для певного знаку, а ім'я папки - це назва класу цього знака, наприклад: A, B, C , ..)

Моє запитання тут, як я можу організувати свій набір даних, щоб можна було вводити його в RNN в керах і які певні функції я повинен використовувати для ефективного тренування своєї моделі та будь-яких необхідних параметрів, деякі люди пропонували використовувати клас TimeDistributed, але я не мати чітке уявлення про те, як використовувати його на мою користь, і врахувати вхідну форму кожного шару в мережі.

також враховуючи, що мій набір даних буде складатися з зображень, я, мабуть, знадобиться згорткового шару, як було б можливо комбінувати шар conv у LSTM (я маю на увазі з точки зору коду).

Наприклад, я уявляю, що мій набір даних виглядає приблизно так

структура набору даних

Папка під назвою "Виконати" містить 3 папки 1, 2 і 3, кожна папка відповідає її кадру в послідовності

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення

Отже Run_1 буде містити деякий набір зображень для першого кадру, Run_2 для другого кадру та Run_3 для третього, мета моєї моделі - навчитись із цією послідовністю виводити слово Run .


Який набір даних ви використовуєте для ASL?
Сем Джонсон

Вибачте, але ми записали наш власний набір даних, і не вдалося випустити його публічно, це було не так багато і не дало очікуваної точності.
Анасович

Це, безумовно, виконується і не схоже на занадто багато додаткового кодування зі згаданої нижче статті, але я не кажу з досвіду, оскільки це не архітектура, якою я користувався раніше. Сподіваємось, ця стаття направить вас у правильному напрямку: machinelearningmastery.com/cnn-long-short-term-memory-networks
Оллі Грем

Відповіді:


2

Виходячи з мого розуміння, це, здається, зводиться до багатокласової проблеми класифікації (кожен набір / послідовність жестів рукою зрештою відповідає слову / символу). Архітектура RNN / LSTM / GRU - це чудове місце для початку, але воно буде обчислювально дорогим та досить повільним для навчання. Однак, чи вам абсолютно потрібна одна чи декілька з них, залежить від того, як структуровані ваші дані, і чи зможете ви піти від обробки зображень як набору, а не як послідовності.

Ось кілька потенційних ідей:

  1. Почніть зі встановлення рівня CNN для кожної папки "RUN_ *", а також dropoutта / або flatteningміж кожним шаром.

  2. Почніть зі встановлення одного довгого вектора, що представляє всі етапи послідовності, потім додайте пару шарів CNN, також із dropoutта / або flattening.

Це потребує певного дослідження та налаштування на вашому кінці, щоб побачити, що найкраще працює, і вам потрібно буде вибрати за допомогою показників оцінки, які ви хочете оптимізувати (наприклад, точність / відкликання)

Причина, яку я пропоную CNN, полягає в тому, що, в деяких випадках, CNN можуть забезпечувати аналогічні показники, як у періодичної моделі, але за часткою витрат. На жаль, важко розповісти про мало ваших даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.