一种基于FPGA加速的低功耗手势识别系统
文献发布时间:2023-06-19 11:57:35
技术领域
本发明涉及手势识别技术领域,特别涉及一种基于FPGA加速的低功耗手势识别系统。
背景技术
手势识别是很热门且常见的技术,它对人机交互、医疗康复等领域都有着一定的意义。手势识别方案可分为两类,一类是通过MCU采集传感器数据,在本地对传感器数据进行处理并识别出手势;另一类由MCU采集传感器数据,之后将数据发送至性能更强的处理器再进行处理。传统单片机通常运算性能较差;而传输到个人电脑级别的处理器进行处理,虽然性能较高,但是会因传输速率问题增加时延,且个人电脑级别的处理器便携性较差,功耗也较高。
发明内容
本发明的目的在于提供一种基于FPGA加速的低功耗手势识别系统,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于FPGA加速的低功耗手势识别系统,包括FPGA和设置有IMU传感器的手套,所述FPGA包括预处理模块、特征提取模块、分类模块,所述IMU传感器分别设置在手套上每根手指的第二关节和手掌背部。
作为本发明技术方案的进一步改进,所述预处理模块分为小波降噪和SWAB 算法实现数据中有效数据的分割和提取两个部分;其中小波降噪中给定平方可积的信号x(t)则有等式:
其中b是时移,a是尺度因子,ψ(t)为基本小波。
作为本发明技术方案的进一步改进,为了便于FPGA定量化计算,各个尺度下信号阈值的固定公式为:
其中γ为噪声功率谱参数,median()表示输入对应的中位数,为第j层小波的系数,j为分解尺度,length()表示输入数据长度。
作为本发明技术方案的进一步改进,通过SWAB算法实现数据中有效数据的分割和提取具体为:将6个IMU传感器采集得到两个维度的信号数值的平方和作为变化的量度记作:
将signal记作判断手势动作的依据,通过设置合适的阈值分割出相应的信号。
作为本发明技术方案的进一步改进,所述特征提取模块通过采用卷积神经网络模型提取手势特征。
作为本发明技术方案的进一步改进,所述卷积神经网络一共三层卷积层,卷积核数量为分别为4、6、6,卷积核尺寸都固定为3
作为本发明技术方案的进一步改进,所述分类模块使用多层感知机网络完成分类,根据卷积神经网络的输出和最终结果要求设置了多层感知机的输入和输出,进而输出识别结果。
作为本发明技术方案的进一步改进,所述分类模块中多层感知机网络有两个隐藏层,每个隐藏层8个神经单元,针对不同层使用不同的激活函数,且分类模块中引入了新的激活函数为:
ReTanh=max(0,Tanh(x))。
与现有技术相比,本发明的有益效果如下:
1、本发明在FPGA上实现定制化的运算,减少了资源和功耗的浪费,进一步提高了性能功耗比。
2、本发明通过卷积神经网络对IMU传感器采集到的角度数据进行特征提取,避免了数据处理中专家知识的引入。
附图说明
图1为本发明的整体结构图。
图2为本发明的整体运行流程框图。
图3为经过PW后的信号对应波形。
图4为不同层使用不同的激活函数对应的测试准确率结果。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1-2,一种基于FPGA加速的低功耗手势识别系统,包括FPGA和设置有IMU传感器的手套,IMU传感器分别设置在手套上每根手指的第二关节和手掌背部,具体说明的是FPGA包括预处理模块、特征提取模块、分类模块,所述预处理模块分为小波降噪和SWAB算法实现数据中有效数据的分割和提取两个部分;其中小波降噪中给定平方可积的信号x(t)则有等式:
其中b是时移,a是尺度因子,ψ(t)为基本小波。
另外,为了便于FPGA定量化计算,其中各个尺度下信号阈值的固定公式为:
其中γ为噪声功率谱参数,median()表示输入对应的中位数,为第j层小波的系数,j为分解尺度,length()表示输入数据长度。
对经过上述小波降噪后的数据采用SWAB算法实现数据中有效数据的分割和提取,其中SWAB算法即为Sliding-Window and Bottom-up,它是 sliding-window(SW)算法和bottom-up(B-up)算法的结合,具体操作为将6个 IMU传感器采集得到两个维度的信号数值的平方和作为变化的量度记作:
将signal记作判断手势动作的依据,通过设置合适的阈值分割出相应的信号。经过PW后的信号对应波形如说明书附图3所示。
上述实施例中还需要进一步说明的是上述特征提取模块具体通过采用卷积神经网络(CNN)模型提取手势特征,该模块将预处理模块处理后的数据作为最底层输入,通过CNN提取手势特征并输出。其中需要说明的是卷积神经网络(CNN)一共三层卷积层,卷积核数量为[4,6,6],卷积核尺寸都固定为3
最后还需进一步说明的是使用卷积神经网络进行特征提取,输出特征张量,需要再将特征张量输入分类模块,最终输出识别到的手势结果。需要补充说明的是分类模块使用多层感知机网络完成分类,根据CNN的输出和最终结果要求设置了多层感知机的输入和输出,4个输入为特征提取模块的输出,最终输出结果为识别出的手势对应的编号。此外,设置的多层感知机网络有两个隐藏层,每个隐藏层8个神经单元,针对不同层使用不同的激活函数,本发明引用了一种新的激活函数,具体为:
ReTanh=max(0,Tanh(x))
不同层使用不同的激活函数对应的测试准确率结果如图4所示,最后一层OutputLayer固定选择ReLU作为激活函数。通过数据不难发现第一层采用ReLU效果较差,原因在于一是单边激活为线性函数,在层数较少的情况下不容易拟合比较复杂的特征,二是不能二次规范数据的输出范围,进而导致参数大小不可控和模型训练时不收敛的问题。因此本发明分别选用Tanh, ReTanh,ReLU作为感知机网络中三层的激活函数。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种基于FPGA加速的低功耗手势识别系统
- 一种基于加速度的手势识别系统