本装置使用德州仪器的电容数字转换器FDC2214连接几块金属板作为传感器来采集数据,使用MSP430F5529 Launch Pad作为主控,主控上运行的核心的手势识别算法为针对此装置特性改进过的一种k最近邻算法。 该装置可使用摇杆和红外遥控器进行菜单界面的操控,使用LCD2004屏幕来显示内容,具有较为友好的用户交互界面。 经测试,基于预先训练好的机器学习模型,该装置能够较为准确地鉴别特定人员的猜拳和划拳手势。此外,该装置还可进行训练,经过训练后其能够鉴别其他人员的猜拳和划拳手势。
我们做的装置外观比较简单,它长这样:
去南工大交作品的时候,还发生了件惊险刺激的事:
作品提交前,在自己学校测试的时候,准确率还挺高的,但是评测时有两三次没有识别准,然后就只拿了二等奖吧...
2018年江苏省大学生电子设计竞赛设计报告 竞赛选题: D题 手势识别装置
东南大学成贤学院 0092D队
手势识别装置 摘要
本装置使用德州仪器的电容数字转换器FDC2214连接几块金属板作为传感器来采集数据,使用MSP430F5529 Launch Pad作为主控,主控上运行的核心的手势识别算法为针对此装置特性改进过的一种k最近邻算法。
该装置可使用摇杆和红外遥控器进行菜单界面的操控,使用LCD2004屏幕来显示内容,具有较为友好的用户交互界面。 经测试,基于预先训练好的机器学习模型,该装置能够较为准确地鉴别特定人员的猜拳和划拳手势。此外,该装置还可进行训练,经过训练后其能够鉴别其他人员的猜拳和划拳手势。 关键词:模式识别;手势识别;电容数字转换器;k最近邻算法
1. 设计方案工作原理 1.1 预期实现目标定位 题目要求,装置需要具有训练和判决两种工作模式。在判决模式下实验装置能对指定人员进行猜拳游戏和划拳游戏的手势判决,即对比划“石头”、“剪刀”和“布”的手势的判定,和对比划“1”、“2”、“3”、“4”和“5”的手势的判定。在训练模式下能对任意人员进行猜拳游戏和划拳游戏的手势训练,经过有限次训练后,能进行正确的猜拳游戏和划拳游戏的手势判决。
1.2 技术方案分析比较 (1) 主控制器的选择 方案一:使用Arduino作为主控。Arduino是一类便捷灵活、方便上手的开源电子原型平台。因为其拥有大量封装完善便于使用的库函数,且有大量使用者乐于开源他们设计的电路、编写的代码为开源社区做出贡献,所以Arduino是一类非常适合进行快速开发的开发板。但是其性能较差,且程序冗余较多,功耗较高。 方案二:使用MSP430F5529LP作为主控。MSP430F5529LP是德州仪器基于MSP430F5529开发的一款Launch Pad开发板,MSP430F5529是一款16位的超低功耗微控制器,它拥有128KB闪存,8KB RAM,12位ADC,2种USCI以及许多其它的片上外设。 考虑到MSP430系列单片机能够在降低功耗的基础上实现比Arduino更强的性能,且本届比赛可供学生申请5529LP来使用,所以我们选用方案二。
(2) FDC2214连接传感板的方案选择 方案一:使用单通道,仅使用一片可覆盖5个手指的C型铜板作为传感器。 方案二:使用双通道,使用两个条形铜板作为传感器,一个铜板置于拇指、食指、中指之下,另一个铜板置于中指、无名指、拇指之下。 方案三:使用三通道,使用三个条形铜板作为传感器,分别置于拇指之下、食指和中指之下、无名指和小拇指之下。 方案四:使用四通道,使用四个条形铜板,分别置于两手指之间的下方。 经过多次测试,我们认为方案一和方案二识别准确率较低,而方案三和方案四识别准确率较高。因方案三和方案四的识别准确率差距不明显,而方案三较方案四少使用一个通道,能够一定程度上节约资源,故我们选用方案三。
(3) 手势识别算法的选择 方案一:找出不同手势时FDC2214各通道数值的规律,直接将其填入代码来进行判断。经过多次测试,该方案的误差通常是比较大的,且其无法具有学习功能。 方案二:使用支持向量机(Support Vector Machine, SVM)。SVM在理论上非常适合此类数据样本较少的机器学习问题,但是代码编写较为复杂。 方案三:使用k最近邻算法(k-Nearest Neighbor, kNN)。kNN算法理论上在此类数据样本较少的情形时,容易出现过拟合现象而导致识别误差较大,但是经测试,在此种情形实际使用时并未出现过拟合现象,能够获得较高的识别准确率。 综合实际情况考虑,我们选择了方案三,但是我们最终使用的不是经典的kNN算法,我们针对MSP430的低功耗特性,对kNN算法进行改进,减小了计算量,提高了运行效率。
1.3 系统结构工作原理 本装置主要由主控制器、用户操作装置、显示屏、传感器组成。
菜单页面、识别结果等均显示在一块使用I2C转接板的LCD2004显示屏上,用户使用摇杆或者红外遥控器均可在菜单页面上进行操作。传感器采集到的数据经主控处理后,可进行识别手势、训练等进一步的操作。主控还可通过UART将传感器采集到的数据传输给PC,便于前期对数据进行观察。
系统的整体结构如图一所示。
图 1 系统的整体结构
2. 核心部件电路设计 2.1 关键器件性能分析 本装置的关键器件为德州仪器的FDC2214电容数字转换器。 电容式传感是一种低功耗、低成本且高分辨率的非接触式感测技术,适用于从接近检测和手势识别到远程液位感测领域的各项应用。电容式传感系统中的传感器可以采用任意金属或导体,因此可实现高度灵活的低成本系统设计。
FDC2x1x是面向电容式传感解决方案的抗噪声和EMI、高分辨率、高速、多通道电容数字转换器系列。该系列器件采用基于窄带的创新型架构,可对噪声和干扰进行高度抑制,同时在高速条件下提供高分辨率。该系列器件支持宽激励频率范围,可为系统设计带来灵活性。宽频率范围对于导电液体感测的可靠性特别有用。
2.2 核心电路原理图 FDC2214及其外围电路的原理图如下图。
图 2 FDC2214及其外围电路
3. 系统软件设计分析 3.1 系统总体工作流程 上电,待各模块和程序初始化完成后,屏幕上会显示主菜单,主菜单包含“1. Rock Scissors”、“2. Finger Guess”和“Hardware Test”三个选项,分别为猜拳、划拳、硬件测试,用户可通过上下拨动摇杆或按红外遥控器的上下键来进行选择,按下摇杆按键或红外遥控器上的OK键,可进入选定的选项。
在“Hardware Test”中,可看到通过FDC2214读取到的原始数据,同时该数据可通过UART传输至PC,便于前期观察数据和测试硬件的可用性。
在“1. Rock Scissors”和“2. Finger Guess”选项的二级菜单中,都有“Recognize”和“Training”两个选项,分别对应判决和训练。未经训练直接进入判决模式,装置会载入一组预先准备好的训练数据,可对特定人员的手势进行识别。进入训练模式,其他人员可按照屏幕上的提示来录入各种手势,装置会根据录入的数据进行机器学习,训练完成后再选择判决模式,即可对该人员的手势进行判决。
3.2 主要模块程序设计 kNN (k-Nearest Neighbor, k最近邻) 算法是一种常见的分类算法,是一种监督式学习算法。其需要一组带有类标签的训练集,可根据新输入的数据样本的特征向量对该数据样本进行分类。该装置采用一种改进过的kNN算法来对手势进行鉴别。
经典kNN算法的流程为: 计算新输入的数据样本与训练集中各个样本之间的特征向量的距离,对于n维特征向量,这个距离可以为欧氏距离(Euclidean distance)
或者曼哈顿距离(Manhattan Distance)
① 按照距离由低至高排序; ② 选取距离最小的k个点; ③ 确定前k个点所在类别的出现频率; ④ 选取出现频率最高的类别作为该分类算法的最终输出,即为分类结果。
经测试,在此种应用场景下,选用欧氏距离作为算法中的距离,会比选用曼哈顿距离的分类效果更好。因为经典的kNN算法需要将新输入的数据与所有训练数据计算距离,若选用欧氏距离,每次对比都需要进行开方、开根号等运算,会使用大量运算资源,这显然违背了MSP430系列单片机超低功耗的设计初衷,所以我们并未使用经典的kNN算法。
我们对经典kNN算法进行了一些改进。最终实际使用的算法流程为: ① 将新输入的数据样本分别与所有训练数据按特征向量的各维度相减求差,若各维度的差的绝对值均小于某个值,即将此训练数据标记为邻近点,未标记数据不参与后续计算; ② 若无数据被标记为邻近点,则判定此数据样本属于未知类别,提前结束流程; ③ 若存在邻近点,再对所有被标记为邻近点的数据运行kNN算法。 计算加减和比较大小要比开方和开根号消耗更少的运算资源,在每秒执行相同次数的情况下,该改进后的算法需要消耗的运算资源平均仅为经典kNN算法的约六分之一,且能够在无手势时或遇到一个没有预先设计到的奇怪手势时,给出结果为“未知”的判定。
3.3 关键模块程序清单 具体可查看附件。
4. 竞赛工作环境条件 4.1 设计分析软件环境 FDC2214外围电路设计:Altium Designer 18 MSP430F5529LP代码编辑:VS Code V1.25 MSP430F5529LP代码编译、烧写及调试:Code Composer Studio V6.2 串口数据读取和分析:COMTool V1.4 和 SerialPlot 0.10 I2C时序分析:saleae Logic 1.2.18
4.2 仪器设备硬件平台 saleae逻辑分析仪、直流稳压电源、万用表等。
4.3 配套加工安装条件 电烙铁、电动螺丝刀、电锯、电钻等。
5. 作品成效总结分析 5.1 系统测试性能指标
题目要求 | | 装置工作在判决模式下,能对参赛者指定人员进行猜拳判决,给出手势“石头”、“剪刀”和“布”的准确判决,要求每一次判决的时间不大于1秒。 | 完成。 判决准确率极高,随机测试100个猜拳手势,识别正确的有97个。每次判决仅耗时约0.1秒。 | 装置工作在判决模式下,能对参赛者指定人员进行划拳判决,给出手势“1”、“2”、“3”、“4”和“5”的准确判决,要求每一次判决的时间不大于1秒。 | 完成。 大多数情况下,能够实现准确判决,随机测试100个划拳手势,识别正确的有88个。每次判决仅耗时约0.1秒。 | 装置工作在训练模式下,对任意测试者进行猜拳的手势训练,每种动作训练次数不大于3次,总的训练时间不大于1分钟;然后切换工作模式到判决模式,对被训练的人员进行猜拳判决,要求每一次判决的时间不大于1秒。 | 完成。 平均训练时间约39秒,训练后再进行判决能够实现比直接判决更高的准确度。每次判决仅耗时约0.1秒。 | 装置工作在训练模式下,对任意测试者进行划拳的手势训练,每种动作训练次数不大于3次,总的训练时间不大于2分钟;然后切换工作模式到判决模式,对被训练的人员进行划拳判决,要求每一次判决的时间不大于1秒。 | 完成。 平均训练时间约1分10秒,训练后再进行判决能够实现比直接判决更高的准确度。每次判决仅耗时约0.1秒。 |
5.2 成效得失对比分析 在本次电赛的准备过程中,我们更加熟悉了MSP430系列微控制器的使用方法,对I2C、UART通信协议有了更多的了解,还学会了通过逻辑分析仪来进行I2C的时序分析。此外,有两名队员曾经学习过机器学习相关的理论知识,在此次电赛的比赛过程中,我们成功将机器学习领域的算法应用在了自己制作的嵌入式系统中,使用改进的kNN算法对FDC2214采集到的数据进行处理,实现了带有学习功能的效果不错的手势识别应用。
在训练阶段,虽然我们遇到的问题大多被解决了,但是我们仍未了解其中一些问题的原理,在未来我们还是需要多加学习。
5.3 创新特色总结展望 电容式传感是一种低功耗、低成本且高分辨率的非接触式感测技术,MSP430系列是一种为专为低功耗设计的微控制器。 在该系统中,我们针对实际场景,使用优化过的监督学习算法来进行手势识别,在准确率不降的前提下,降低了算法所需的运算资源,也降低了功耗。经多次测试,本装置能够基本准确地识别特定人员的猜拳和划拳手势,装置经训练后,还能基本准确地识别其他人员的猜拳和划拳手势,满足题目要求。
设计报告.pdf
(383.72 KB, 下载次数: 28)
当时电赛刚结束的时候,我把我们的设计报告发在了我的个人微信公众号上,设计报告全文可见:https://mp.weixin.qq.com/s/4RzHI_-UrrnBCT06Qty8-w
|