使用RNN(LSTM)进行手势识别系统


10

我正在尝试构建用于对ASL(美国手语)手势进行分类的手势识别系统,因此我的输入应该是来自摄像机或视频文件的帧序列,然后它检测到该序列并将其映射到对应的帧课堂(睡眠,帮助,饮食,跑步等)

事情是我已经建立了一个类似的系统,但是对于静态图像(不包括运动),它仅在构建CNN是直截了当的任务时才用于翻译字母,这是有用的,因为手不会动太多,并且数据集结构也很容易管理,因为我正在使用keras,也许仍然打算这样做(每个文件夹都包含一组用于特定符号的图像,并且文件夹的名称是该符号的类名,例如:A,B,C ,..)

我的问题是,如何组织我的数据集以便能够将其输入到keras中的RNN中,以及应使用哪些特定函数有效地训练我的模型和任何必要的参数,有些人建议使用TimeDistributed类,但我不这样做对如何使用它有利于我有一个清晰的想法,并考虑到网络中每一层的输入形状。

同样考虑到我的数据集将由图像组成,我可能需要一个卷积层,将conv层组合到LSTM层中是怎么可行的(我的意思是代码)。

例如,我想象我的数据集是这样的

数据集结构

名为“运行”的文件夹包含3个文件夹1、2和3,每个文件夹对应于其序列中的框架

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

所以RUN_1将包含一些图像集的第一帧,RUN_2第二帧和Run_3第三,我的模型的目标是这个顺序输出字的培训运行


您正在为ASL使用哪个数据集?
山姆·约翰逊

抱歉,但是我们记录了自己的数据集,但没有设法公开发布它,但是还不够多,也没有给出预期的准确性。
Anasovich

它肯定是可行的,并且看起来与下面提到的文章中的代码无关,但是我并不是凭经验讲的,因为它不是我以前使用过的体系结构。希望本文能为您指明正确的方向:machinelearningmastery.com/cnn-long-short-term-memory-networks
Ollie Graham,

Answers:


2

根据我的理解,这似乎可以归结为多类分类问题(手势的每个组/序列最终对应于一个单词/符号)。RNN / LSTM / GRU体系结构是一个很好的起点,但是它的计算量很大并且训练起来很慢。但是,是否绝对需要其中的一个或多个取决于数据的结构方式,以及是否可以将图像视为一组而不是序列来解决。

这里有一些潜在的想法:

  1. 首先为每个“ RUN_ *”文件夹以及每个图层之间dropout和/或flattening之间设置一个CNN 图层。

  2. 首先建立一个代表序列所有阶段的长向量,然后再加上dropout和/或添加几层CNN flattening

这将需要您进行一些探索和调整,以找出最有效的方法,并且您需要选择要优化的评估指标(例如精度/召回率)

我建议使用CNN的原因是,在某些情况下,CNN可以提供与递归模型相似的性能,但成本却很少。不幸的是,很难说出很少或几乎没有关于您的数据的信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.