Estou tentando criar um sistema de reconhecimento de gestos para classificar gestos ASL (American Sign Language) , então minha entrada deve ser uma sequência de quadros de uma câmera ou de um arquivo de vídeo, em seguida, ele detecta a sequência e a mapeia para a correspondência aula (dormir, ajudar, comer, correr, etc.)
O problema é que eu já construí um sistema semelhante, mas para imagens estáticas (sem movimento incluído), ele foi útil para traduzir alfabetos apenas nos quais a construção de uma CNN era uma tarefa simples, pois a mão não se move muito e o a estrutura do conjunto de dados também era gerenciável porque eu estava usando keras e talvez ainda pretenda fazê-lo (todas as pastas continham um conjunto de imagens para um sinal específico e o nome da pasta é o nome da classe desse sinal ex: A, B, C ..)
Minha pergunta aqui, como posso organizar meu conjunto de dados para poder inseri-lo em uma RNN em keras e quais funções devo usar para treinar efetivamente meu modelo e quaisquer parâmetros necessários, algumas pessoas sugeriram usar a classe TimeDistributed, mas eu não tenha uma ideia clara de como usá-lo a meu favor e leve em consideração o formato de entrada de todas as camadas da rede.
considerando também que meu conjunto de dados consistiria em imagens, provavelmente precisarei de uma camada convolucional, como seria possível combinar a camada conv na camada LSTM (quero dizer em termos de código).
Por exemplo, imagino que meu conjunto de dados seja algo como isto
A pasta denominada 'Executar' contém 3 pastas 1, 2 e 3, cada pasta corresponde ao seu quadro na sequência
Portanto, o Run_1 conterá um conjunto de imagens para o primeiro quadro, Run_2 para o segundo quadro e Run_3 para o terceiro, o objetivo do meu modelo é ser treinado com essa sequência para gerar a palavra Run .
fonte
Respostas:
Com base no meu entendimento, isso parece se resumir a um problema de classificação de várias classes (cada conjunto / sequência de gestos com as mãos eventualmente corresponde a uma palavra / símbolo). Uma arquitetura RNN / LSTM / GRU é um ótimo lugar para começar, mas será computacionalmente caro e bastante lento para treinar. No entanto, se você precisa absolutamente de um ou mais desses fatores, depende de como seus dados estão estruturados e se pode tratar suas imagens como um conjunto, e não como uma sequência.
Aqui estão algumas idéias em potencial:
Comece configurando uma camada CNN para cada pasta "RUN_ *", junto com
dropout
e / ouflattening
entre cada camada.Comece configurando um único vetor longo representando todos os estágios da sequência e adicione duas camadas de CNNs, também com
dropout
e / ouflattening
.Isso levará alguma exploração e ajuste para ver o que funciona melhor e você precisará escolher as métricas de avaliação que deseja otimizar (por exemplo, precisão / recall)
A razão pela qual estou sugerindo uma CNN é porque, em certos casos, as CNNs podem fornecer desempenho semelhante a um modelo recorrente, mas por uma fração do custo. Infelizmente, é difícil dizer com pouca ou nenhuma informação sobre seus dados.
fonte