基于Arduino和神经网络的智能拳击手套设计方法
2020-08-13方振国王江涛崔少华
单 巍,方振国,王江涛,崔少华
(淮北师范大学 物理与电子信息学院,安徽 淮北,235000)
随着健康生活理念的普及,各项健身运动在全国范围内开展广泛。其中,拳击运动作为常见健身运动的一种,以其独特的专业性和复杂性决定了这项健身项目必须在专业教练的指导下完成,其自由性大大受到限制。传统的拳击手套设计方案重点偏向于出拳速度和冲击力的测量,受众对象偏向于专业拳击选手。例如,靖守禹[1]采用压力感测器并显示使用者拳击时的输出冲击力,辅助拳击选手对出拳力度的控制精度。赵建敏等[2]通过Kinect体感传感器追踪并获取训练者的关节坐标,并计算击打速度和击打力。上述拳击手套主要针对具备专业知识的使用者,对无专业拳击知识的人群帮助意义不大。因此,本文致力于设计一种既可以实时记录拳击动作次数又能识别出拳击的动作是否标准的系统,辅助健身人群不断改进动作而快速学习拳击。
神经网络作为人工智能领域的经典应用,其高效的性能和效果近年来受到学术界青睐。学者们纷纷将神经网络应用于各领域进行尝试。例如,傅鹏等[3]采用神经网络,通过目标区域的搜索,实现车牌的精准定位。李正明等[4]以神经网络和变压器的统计特征和概率为基础,对局部放电类型进行识别。Shiva等[5]将神经网络应用于交通预测,以神经网络的最佳组合使预测误差最小从而调整交通预测模型。然而,将神经网络应用于拳击手套的设计领域少之又少。针对上述问题,本文提出以Arduino开发板为硬件基础,以Curie神经网络芯片为软件基础的智能拳击手套设计方法,采用姿态传感器采集三轴加速度输入训练好的神经网络进行判别,将最终判断结果显示在电脑屏幕上,出拳人可根据判断结果调整动作,直至达到标准动作。
1 总体设计方案
本文的设计思路为:首先采集标准拳击动作的三轴加速度值,对这一组加速度值进行特征抽取,以此建立标准动作的模型。将已建立的标准模型输入神经网络进行学习(训练),然后将出拳人的运动数据实时采集并再次进行特征抽取(与标准模型算法一致),最后将输出的特征数据送入训练好的神经网络,通过网络判别该组数据与标准动作的相似度,从而对该次动作做出判决,其中神经网络的识别与判断使用Curie芯片完成。具体实施方案如图1所示。
图1 总体实施方案
2 基础硬件设计
本设计的系统以Arduino101为主控单片机,其内部芯片提供了硬件级别的神经网络以供采集数据的学习和识别,样本数据存储在SD卡里,最终处理的结果通过蓝牙端口显示在电脑端的Arduino IDE上。其中,Arduino核心是一个以AT-mega单片机最小系统为核心的控制板[6],是多款硬件开源设计的单片机开发板的统称。Arduino 101(又称Genuino101)是一个低功耗开发板,它是基于Intel Curie模组,可以利用硬件神经网络实现学习和识别的功能。Arduino 101内含的单片机开发板载有蓝牙和姿态传感器,其中,姿态传感器包含有三轴加速度计和陀螺仪[7]。Arduino IDE是Arduino开发板的的集成开发环境,其特点包含界面友好、语法简单以及能方便的下载程序,可以编辑编译运行在Arduino上的程序。Arduino的系统是基于C语言和C++语言[8]。
3 基础软件设计
本文系统设计的关键在于神经网络对采集的特征数据进行判决,若采集数据与标准模型误差在标准值范围(三轴分别在0.1)内,使用者无需调整姿态,继续出拳;若误差超出标准范围,电脑屏幕上显示“unknown”,出拳人必须实时调整出拳姿态直至达到标准值,此时屏幕显示正确判断结果。其中,神经网络对标准模型的学习能力和判决能力要求较高,因此,我们采用市面上反响较好的Curie的芯片,它的内部含有General Vision授权的128个硬件级的神经元,正是由于这些神经元所构成的神经网络[9],让Curie芯片具备学习和识别的能力,该芯片还拥有六轴混合传感器,对出拳速度和姿态的检测精确[10-11]。同时,Curie芯片的高集成度,体积小,长宽分别只有11mm和8mm,使得本文设计的拳击动作识别的硬件能做成可穿戴的设备,方便使用者携带和测量。
Curie神经网络学习和识别的功能基于两种模式,分别是 RBF(radial basis function)模式和KNN(k-nearest neighbor)模式[12]。当处在学习状态下,RBF和KNN公用一套学习机制,随着不同类别的向量的学习,不停修正自己。当处在识别状态时RBF和KNN有两种识别方式,如图2,(a)图表示空间被部分地映射为未分类的区域,具有多种颜色的区域是不确定区域。(b)图表示整个空间被映射,并且每个位置都有一个可能的类别(颜色代码)。RBF的识别方式为:若待识别的向量落在未知类别的作用域,会返回unknown;若落在已知类别的作用域上,则分别计算与其每一个类别中心的距离值,并返回列表,列表按照与每一个类别中心的距离值依次递增而排列。KNN的识别方式为:若待识别的向量落在未知类别的作用域,只会返回一个确定的落在已知域的类别,而且一定会返回一个已知类别,因为它不存在unknown。本系统设计选取RBF模式的学习和识别模式。软件实现过程如图3。
图2 Curie不同模式
图3 动作学习和识别流程
4 实验与结果
4.1 实验数据预处理
以100 Hz的采样频率分别采集标准拳击动作的x、y、z轴加速度值,将存储数据的SD卡插入电脑,选中所有的数据,用折线图显示采集结果,如图4。图4分别由直拳、摆拳、勾拳三个标准动作组成,系列 1、2、3 分别代表x、y、z轴三组数据。由图4可知,由于传感器的延时[13],数据前端和后端均为无效数据,实验删除无效数据后如图5所示。然而图5中每两个标准动作数据之间有一段平缓的数据,为了减小系统计算量,这些平缓的数据应该被合理处理。处理的方法是保持每两个数据尖峰之间的长度为一个动作的周期,将图5数据预处理后送入计算机进行特征提取。
图4 原始采集数据
4.2 特征值提取
将预处理的数据经窗口分割[14]、降采样[15]、数据类型[16]转换等过程,最终提取出所需的特征值。其中,窗口分割的目的是对采集数据进行标记,是神经网络学习的基础条件
降采样的目的是进一步加快神经网络的收敛,减小网络输入的数据量[17]。具体步骤为:在标记的3个文件中随机选择一个起点开始特征抽取,并把抽取的结果与实际值作对比,最终得到一个特征抽取的效果百分比。为保证提取效果,每组数据使用9次循环进行降采样处理,依次选择特征抽取效果百分比最好的一组作为最终输出。
数据类型转换的目的是将降采样输出的小数转化为0~255之间的整数[18-19],有利于神经网络的学习和判决。
以直拳的一个标准动作的x轴的数据分析为例,图 6(a)、(b)分别为特征提取前和提取后的数据。由图6可知,经过本文特征抽取后,数据的特征基本没有丢失,图6(b)只使用了12个数据点就代表了原100个数据点的特征,因此网络的输入数据量大大降低[20]。
4.3 实际测试结果
测试人员佩戴本文设计的智能拳击手套,分别以摆拳、直拳、勾拳的形式进行测试,测试结果如图7。在电脑端的Arduino IDE上准确显示相应判断结果:swing(摆拳)、straight(直拳)、uppercut(勾拳)。实验结果表明,本文设计系统能有效识别拳击基本动作,辅助健身人士对拳击动作的修正与调节,具有推广的实际意义。
图7 测试结果
5 小结
为了推进拳击健身运动的普及,针对非专业的普通人群,本文设计了一种基于Arduino单片机和神经网络的智能拳击手套。该设计以Arduino101为主控单片机,其内部的Curie芯片提供了硬件级别的神经网络以供实验所有数据的学习和识别,样本数据主要存储在SD卡里,最终处理的结果通过蓝牙端口显示在电脑端的Arduino IDE上。通过实际测试,该系统能够准确识别直拳、勾拳、摆拳三种基本的拳击动作,并能准确识别非标准拳击动作,给予实时显示。表明本文设计的系统有效可行。然而本文系统仍然存在进一步改进的空间。在今后的工作中,将重点研究神经网络算法的改进和学习过程。