摘要:为了使聋哑人与更多不懂手语的人自然地交流,本作品将手语翻译成文字和语音,利用Microsoft Kinect记录手语手势的三维坐标,通过机器学习和优化算法,在IntelAtom平台上实现了手语翻译。
简介
手语是聋哑人士的主要沟通工具,它是利用手部和身体的动作来传达意义。虽然手语帮助它的使用者之间互相沟通,但聋哑人士与一般人的沟通却十分困难,这个沟通障碍是源于大部分人不懂得手语。
另一方面,聋哑小朋友由于很难表达自己,以及中国的聋哑教师数量有限,导致他们的学习出现困难,得不到和普通小朋友同等的学习机会。
为了解决这个问题,我们设计实现了一个从手语动作翻译成文字和声音的翻译器,令学习手语更有趣、更方便、更容易,以达到这个项目缩少聋哑人士与其他人的沟通障碍的目的。
工作原理和算法
特征提取 深度图像的分辨率是640x480,意味着每秒钟的数据有17.6MB,存储如此大量的数据是不可能的。同时许多没有用处的数据(例如背景)都包含在原始数据中。因此我们必须从原始数据中提取出有用的信息。骨架是一种可以用来表示手语的有用信息。
我们利用Kinect和OpenNI提取用户的骨架节点得到XYZ三点的坐标。我们一共提取了6个骨架节点,左手、左手肘、左肩、右手、右手肘、右肩。对于每一帧,我们从这些节点中计算出14个特征向量来表示这一帧的手语动作。经过标准化计算,我们用121帧来表示一个手语词语,因此每一个词语有1694个特征。
原始数据标准化 我们通过均匀分配和插值使原始数据标准化。通过二次插值法,利用最相近的三个原始数据计算出标准化的数据,使得每一个手语动作都统一用121帧来表示。
支持向量机 SVM(支持向量机)是统计学和计算机科学中的概念,简而言之,给定一组已经分好类别的数据,而且分类依据是未知的,支持向量机训练算法可以通过计算构建一个模型 ,一组新的数据到来时可以预测出新的数据属于哪一个类别。
SVM的模型将所有数据映像到一个高维空间里,并计算出不同类别数据之间的最大化几何边缘区,然后把新的数据映射到同一个空间,根据之前计算出的最大化几何边缘区来预测新的数据属于哪一个类别。
平台限制与解决方法
平台限制 使用Kinect的建议系统需求是CPU有双核2.66 GHz或以上,内存有2GB或以上,但Intel提供的平台只有分别1GHz CPU和1G 内存,明显与系统需求有差异。
即使我们使用Linux操作系统,处理器使用率依旧满载,并且帧率只有大约2到4左右,远少于正常的30帧。在这种条件下,再加上处理器资源已被提取资源的线程占据,所以不可能在处理器里进行资料分析的工作。
瓶颈 为了找出瓶颈,我们首先关闭了图像用户接口。虽然处理器使用率降至85%,但帧率跟之前的一样。我们观察得到其中一个OpenNI控制的线程依然是占领了整个线程。只是由于所提供的平台是双线程的关系,使用率分别被定在50%及35%。