基于FPGA的实时手势识别系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的实时手势识别系统
张永强;陈香;王从政;董中飞;左鹏飞
【摘要】本文构建了一个基于FPGA的实时手势识别平台,并在该平台上实现了一种基于表面肌电(sEMG)信号和加速度(ACC)信号的手势识别算法.具体实现过程中,无线sEMG传感器和无线三轴ACC传感器穿戴于两手前臂实时获取sEMG信号和ACC信号,并以无线方式发送到数据处理模块.数据处理模块充分利用FPGA的并行处理优势,融合ACC和sEMG信息特征,实现了单双手手势的实时识别.经测试,本文所用的手势识别算法移植到FPGA中以后,识别速度明显提高,16个中国手语手势动作达到了95%以上的识别率.%This paper developed a real-time gesture recognition system based on FPGA, and achieved a gesture recognition algorithm based on surface electromyography ( sEMG) and acceleration ( ACC ) signals on the system. Specifically, the wireless sEMG sensors and wireless tri-axial ACC sensors were worn on the arms to collect signals and sent the signals to the data processing module. The processing module took full advantage of FPGA parallel processing,and put sEMG and ACC signal features together to achieve real-time hand gesture recognition. According to the test, the hand gesture recognition algorithm transplanted on FPGA got faster recognition speed than it was run on a personal computer,and the recognition rate for sixteen kinds of Chinese sign gestures reached 95% above.
【期刊名称】《传感技术学报》
【年(卷),期】2011(024)011
【总页数】5页(P1653-1657)
【关键词】手势识别;FPGA;表面肌电;加速度
【作者】张永强;陈香;王从政;董中飞;左鹏飞
【作者单位】中国科学技术大学电子科学技术系,合肥230027;中国科学技术大学
电子科学技术系,合肥230027;中国科学技术大学电子科学技术系,合肥230027;中
国科学技术大学电子科学技术系,合肥230027;中国科学技术大学电子科学技术系,
合肥230027
【正文语种】中文
【中图分类】TP274.2;TP212.9
随着传感器技术、通信技术和IC技术的快速发展,人机交互已经从原来的键盘、
鼠标这种单一的交互模式,迅速发展成为融合多种传感器,运用多种通信方式的多样化交互模式[1-2]。
手势识别是当下人机交互领域的热点研究方向之一[3]。
目前,市场上和实验室里已有的手势识别系统主要分为基于数据手套和基于计算机视觉的交互系统[4],它们提供了一种和谐自然的人机交互方式。
但是,基于数据手套的系统穿戴复杂,价格昂贵,大量推广比较困难[5]。
而基于视觉的系统易受环境干扰,识别率低,不适于大量手势识别[6]。
针对前述两种手语识别系统的弊端,基于表面肌电和加速度的手势识别在穿戴和价格方面有着更多优势,在手势识别研究中取得了较好的进展[7]。
表面肌电信号是一种可以反映肌肉的活动状态和强度的电生理信号。
不同的手势执行过程中会伴随着不同肌肉群的收缩,将表面肌电电极安置在特定的肌肉群位置上,可以检测到带有可分性手势信息的表面肌电信号。
表面肌电信号主要反映的是手型
信息和手腕伸屈信息,对手指动作的识别有着独特优势。
例如,Jun-Uk Chu等人对四通道肌电信号使用广义小波变换进行特征提取,最终实现了10类手势的识别,识别率不低于93%[8]。
加速度传感器可检测手臂的空间运动信息,对运动尺度较大的手势具有较好的区分能力。
例如,刘剑锋等人采用隐马尔科夫模型作为分类器实现了基于加速计信号的八类大幅度手势的识别,识别率达88%以上[9]。
两种传感器在手势信息描述上有着不同的优势,将二者有效的结合可以实现较高精度的手势识别。
本人所在实验室对加速计与表面肌电传感器信息进行融合,采用多级决策树算法在PC机上实现了30类以上的典型手语词和模拟真实情景对话的16
个例句的识别[10]。
目前,基于表面肌电和加速度的手势识别系统多采用PC处理的方式[11-12],很不利于实际场合的应用。
因此,开发相应的嵌入式系统,对于该项技术的推广有着十分重大的意义。
FPGA硬件结构完全由用户自己定义,可以进行大量的并行性运算,更灵活的实现各种算法。
基于此,本文设计了以FPGA为核心的嵌入式系统,进行大量的算法并行化处理,最终实现了多种手势的快速识别,为将来进一步实现便携实用的手势识别系统奠定了基础。
1 系统实现
FPGA实时手势识别平台的实物图和硬件结构图分别如图1和图2所示。
从硬件上,系统分成三个模块:无线数据采集发送模块、数据处理模块和结果显示模块。
图1 手势识别系统实物图
图2 系统硬件结构框图
1.1 无线数据采集发送模块
本文所用无线数据采集发送模块[13]如图1(a)所示。
模块尺寸为长35 mm,宽20 mm,厚11 mm,把sEMG或ACC的信号采集和数据的无线收发部分组装在了一起,非常适合穿戴在人体上。
sEMG信号由实验室自制的sEMG传感器获取,ACC信号来自加速计芯片MMA7361。
选用C8051F411为控制器,C8051F411通过自带的12位ADC对传感器输出信号采样,然后,控制射频芯片CC2500把数据发射出去。
经测定,sEMG传感器工作时的信噪比保持在20 dB以上(此处信噪比指做手势产生的sEMG信号幅度与静止状态下电极测量的噪声幅度之比),ACC芯片工作于1.5 gn 模式时可以产生分辨率高达800 mV/gn的模拟三轴加速度信号,每个ACC芯片为系统提供来自三个方向的三通道ACC信号。
无线通信方面,选用了TI公司的CC2500无线收发芯片,芯片工作稳定,且尺寸较小。
由于芯片工作在2.4GHz频段,故其所需天线的尺寸也比较小,可将天线集成在PCB板上以达到缩小电极体积的目的。
同时,CC2500还具有功耗低等优点,有助于降低移动设备的功耗。
如图3所示,在用户双手前臂手臂各放置5个sEMG模块和1个ACC模块,就构成了本系统所需的基于sEMG和ACC的16通道无线数据采集前端。
图3 ACC和SEMG传感器的放置
1.2 信号处理模块
本系统信号接收端为两片 CC2500,直接由FPGA通过SPI接口控制,二者相互独立工作于两个频段,互不干扰。
信号处理模块主要由FPGA组成,如图1(b)所示。
FPGA选用EP3C10E144,属于Altera CycloneⅢ系列,具有423Kbit的嵌入式存储器,10320个逻辑单元(LE),95个用户I/O管脚和46个硬件乘法器。
基于sEMG信号和ACC信号的手势识别,在算法流程上分为活动段检测、特征提取和分类识别三个步骤。
FPGA内部功能具体实现框图如图4所示。
图4 FPGA内部模块框图
1.2.1 活动段获取算法实现
信号是否进入活动段,通过监测sEMG信号来决定。
多通道sEMG数据经过数据
汇总模块后,以帧为单位发送给活动段监测模块,每帧中含有5个通道的数据,按时间先后顺序沿并行信号线依次发送。
帧的同步信号标识每帧的开始,每通道的信号由位的同步信号标识。
活动段检测算法采用绝对值移动平均(AMA)[14]的方法,其FPGA实现原理如图5所示。
先取得各通道sEMG信号绝对值的和,设置一个累加器1,用帧同步信号作为累加器1的清零端,用位同步信号作为累加器1时钟,数据取绝对值后流入累加器1,每个帧同步来到时累加器1输出一次结果。
32点移动平均用移位寄存器的结构实现,帧同步信号为移位寄存器提供时钟,在每个时钟周期进行一次移位,累加器2加入新进寄存器的值,减去移出寄存器的值,累加的结果与阈值比较。
这种移位相加结构实现的活动段检测效率高,消耗的资源少,在FPGA上实现具有一定的优势:假如试图用程序而不是逻辑实现该结构,每次移位需要执行32次赋值操作,而在FPGA中,只需一个时钟周期就可完成任意点数的移位。
本系统使用两个这样的活动段监测模块以实现双手手势的独立并行处理。
图5 活动段检测的FPGA实现
1.2.2 特征提取算法实现
对于sEMG信号,采用每通道的绝对值均值作为特征。
首先把接收到的每一个数据经汇总后存入外部的SRAM中,当信号进入活动段时,对此时的数据所在的片外SRAM的地址进行标记;当动作完成后,再对此时的数据所在的片外SRAM的地址进行标记。
这样,当一个动作完成时,根据标记的地址,集中的把活动段以内的数据读出来进行特征提取运算。
ACC信号作用是判别手势所处的运动状态与方位,取平均值A=∑Xi/N作为手势方位的判断,用一阶矩u=∑ |Xi-A|/N判断运动的剧烈程度。
由于求取平均值同求取一阶矩十分相似,可以写成统一的形式F=∑ |Xi-C|/N,求取平均值A时令C=0,求取一阶矩u时令C=A。
在CPU上,这种处理方式会引来更大的时间开
支,因为求取均值的时候做了不必要做的处理。
但是在FPGA中只需要做一个这
样的结构,循环两次就可以先后得到均值和一阶矩,恰恰减少了FPGA资源的消耗。
实现原理如图6所示。
图6 ACC信号特征求解的FPGA实现
由于除法运算会占用大量的逻辑单元和时钟周期,根据实际情况,整个活动段的ACC点数N不会超过256个,采取把除法变换为乘法的方式,把所有可能出现的N的倒数1/N(0-255)乘以65536(2的16次方)得到65536/N,按对应的存入一个单独分配的内嵌RAM中,以N为对应数据的地址,发送给内部生成的ROM,就可以在下一个时钟周期得到65536/N的数值。
然后使用内置的硬件乘法器做乘法,同时右移16位,即可在一个时钟周期里得到运算结果,最低精度为千分之一。
通过牺牲一个硬件乘法器和少数存储单元,换来了几十倍以上的时间和逻辑单元,并且保证了运算的精度,这种方式对于拥有着丰富硬件乘法器和大量内嵌存储器的FPGA来说,是十分合理的。
1.2.3 识别算法实现
识别算法分为两个步骤:①通过ACC特征锁定手势动作的方位和运动的剧烈程度,完成预分类;②使用sEMG特征完成最终分类。
首先,通过特征提取得到三轴ACC 信号的均值和一阶矩,再通过三轴ACC信号的均值可以得知当前手势所处的方位。
把三轴ACC信号的一阶矩的和同某一阈值作比较,如果小于该阈值,判定该手势为静态手势,否则,判定该手势为动态手势。
ACC特征的预分类,可以有效缩小识别范围,减少运算量。
接着,把5通道sEMG的绝对均值组成特征向量,设计正态分布下的贝叶斯分类器[15-16]对
手势动作进行精确的分类识别。
分类器的结构如图7所示。
图7 分类器结构
其中,X=(x1,x2,…,xd-1,xd)T 为特征向量,d为特征维数,wi为类别,
gi(X)为类别wi的判别函数,N为类别数。
本文的贝叶斯分类器使用最小错误判决规则,同时,假定各类别的类条件概率密度函数P(X|wi)满足多变量正态分布,μi
和Σi分别表示X在类别wi下的均值向量和协方差阵。
根据文献[15],可取如
下函数作为判别函数:
P(wi)为类别wi发生的先验概率,这里取每个类别的先验概率等同,判决函数可以最终简化为
使用多个样本对分类器进行训练,获得判决函数所需的参数。
当前的FPGA手势
识别系统尚未加入操作系统,没有提供足够强大的人机界面进行在线训练,训练工作仍然通过PC机完成。
为了计算方便,我们把判决函数所需的已知参数放在一起组成模板,载入FPGA的自生成ROM中。
将当前特征向量进行有限次数的加法、乘法之后,即可得到识别结果。
在单手手势和双手手势的判别上,如果双手动作的活动段在时域上有重合部分,则判别为双手手势。
在活动段检测上,左右手是独立的,同时进行的。
系统设定,无论是单手手势,还是双手手势,退出活动段后会立即进行特征提取和分类识别,然后直接把结果发送给单片机。
识别结果用一个字节表示,图8给出了这个字节的
组成和每个bit所代表的含义。
单片机通过解析这个字节便可得知所需信息,进一步做出反应。
这种方式没有引入相对于单手手势识别而言的任何延时,既兼容了单双手手势的识别,同时保证了系统的实时性。
图8 识别结果字节格式定义
1.3 结果显示模块
本模块由单片机和液晶显示模块(简称LCD)构成,单片机接收到动作识别结果后,以汉字的形式将结果在LCD上显示出来。
系统选用了具有丰富的片上外设的
C8051F340单片机,其具有全速USB模块,可方便的实现单片机与PC的快速数据传输,同时多达40个PIO口可方便实现同FPGA的并口通信和对LCD的并口
控制。
2 结果与系统性能测试
我们从识别准确率和识别速度两方面开展相应实验对系统性能进行测试。
(1)手势识别准确率测试。
选取了中国手语的8个单手词和8个双手词对系统识别
率进行测试,手语词的图片如图9所示。
其中,单手词有:你,好,等号,坏,部,山,永远和现在;双手词有:家,人,榜样,元旦,结婚,坐,今天和强大。
图9 16个中国手语手势
每类动作取20个样本训练分类器,训练完成后,将分类器参数载入FPGA中,进行识别率测试。
测试过程中,为了统计方便,规定每个动作重复测试20次。
实验选取了3位同学A,B,C作为受试者,被正确识别出的手势数和识别率如表1所示。
从表1可见,本系统实现了对16种手势动作的95%以上的正确识别。
表1 手势识别测试结果好等号你坏永远部山现在识别率ABC
98.7%96.8%97.5%元旦结婚家榜样人坐强今天识别率20 20 20 20 19 20 20 20 18 19 19 19 20 20 20 20 20 20 19 17 19 20 20 20 ABC 20 20 19 20 19 20 19 20 18 20 19 19 18 20 19 20 20 20 20 18 18 19 20 20
97.5%97.5%95.6%
(2)手势识别速度测试。
通过配置FPGA,引出一个活动段指示管脚和一个识别结
果指示管脚,每次识别时,用示波器测量这两个管脚电平变化边沿的时间差,即识别时间(特征提取与分类所需的时间)。
对多个时间长度不同的动作测量发现,特征提取和分类所用的时间基本保持在1.4 ms左右。
同CPU主频为2.5GHz,且拥有2G内存的个人计算机相比,运用同样的算法识别同样多种类的动作时,FPGA的
计算速度约是计算机的4倍,而FPGA目前接入的主时钟频率是50 MHz,约为
计算机的1/50。
经过对总体逻辑结构的分析认为,FPGA进行手势识别的主要时
间消耗在分类器模块。
每次识别过程中,由于参与分类的判别函数个数是一样多的,因此,分类器模块消耗的时间总是固定的,致使识别时间基本不变。
FPGA内部资源消耗情况如表2所示。
表2 FPGA资源消耗逻辑单元 3885(37%)9*9硬件乘法器 12(26%)内嵌存储单元 13.5KB(23%)锁相环 1(50%)
3 结论
本文通过安置于人体的无线sEMG传感模块和无线三轴ACC传感模块,完成数据采集与发送工作。
在数据处理上,充分利用FPGA本身的特点,实现了具有FPGA 特色的手势动作模式识别算法。
实验证明,本手势交互系统可实现多类手势动作的准确实时识别,且具有便携的特点,对推广至其他实际应用场合,或者经过版图设计、后端仿真等设计流程,最终研制出手势识别芯片,都具有较高的实用价值。
参考文献:
[1]迟健男,王志良,谢秀贞,等.多点触摸人机交互技术综述[J].智能系统学报,2011,6(1):28-37.
[2]徐宝国,何乐生,宋爱国.基于脑电信号的人机交互实验平台的设计和应用[J].电子测量与仪器学报,2008,22(1):81-85.
[3]Chen Xiang,Zhang Xu,Zhao Zhangyan,et al.Hand Gesture Recognition Research Based on Surface EMG Sensors and 2D-accelerometers[C]//Wearable Computers,2007:11-14.
[4]Mitra S,Acharya T.Gesture Recognition:A Survey[J].IEEE Transactions on Systems,Man,and Cybernetics,2007,37(3):311-324. [5]吴江琴,高文,基于DGMM的中国手语识别系统[J].计算机研究与发展,2000,37(5):551-558.
[6]Starner T,Weaver J,Pentland A.Real-Time American Sign Language Recognition Using Desk and Wearable Computer Based Video[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,
20(12):1371-1375.
[7]AsghariOskoeiM,Hu H.Myoelectric Control Systems—A Survey [J].BiomedicalSignalProcessing and Control,2007,2(4):275-294. [8]Jun-Uk Chu,Inhyuk Moon,Mu-Seong Mun.A Real-Time EMG Pattern Recognition System Based on Linear-Nonlinear Feature Projection for a Multifunction Myoelectric Hand[J].IEEE Transactions on Biomedical Engineering,2006,53(11):2232-2239.
[9]Jianfeng Liu,Zhigeng Pan,Xiangcheng Li.An Accelerometer-Based Gesture Recognition Algorithm and its Application for 3D Interaction [J].Computer Science and Information Systems,2010,7(1):177-188. [10]李云,陈香,张旭,等.基于加速计与表面肌电传感器信息融合的手语识别方法[J].航天医学与医学工程,2010,23(6):419-424.
[11]Anala Pandit,Dhairya Dand,Sisil Mehta,et al.A Simple Wearable Hand Gesture Recognition Device using iMEMS[C]//Soft Computing and Pattern Recognition,2009:592-597.
[12]Chen Xiang,Zhang Xu,Zhao Zhangyan,et al.Multiple Hand Gesture Recognition Based on Surface EMG Signal[C]//International Conference on Bioinformatics and Biomedical Engineering,2007:506-509. [13]胡巍,赵章琰,陈香,等.无线多通道表面肌电信号采集系统设计[J].电
子测量与仪器学报,2009,23(11):30-35.
[14]Chen Xiang,Zhang Xu,Zhao Zhangyan,et al.Multiple Hand
Gesture Recognition based on Surface EMG Signal[C]//International Conference on Bioinformatics and Biomedical Engineering,2007:506-509. [15]孙即祥.现代模式识别[M].长沙:国防科技大学出版社,2002:91-99. [16]汪增福.模式识别[M].合肥:中国科学技术大学出版社,2010:87-89.。