一种基于卷积神经网络的摇晃手机生成音乐的方法

1.本发明涉及深度学习多分类技术和智能手机应用开发中人机交互技术领域,特别是一种基于卷积神经网络的摇晃手机生成音乐的方法。
背景技术:
2.随着科技的飞速发展,以智能手机等为代表的移动设备无处不在。这使得人机交互技术成为越来越多学者的研究方向。此前的研究中,虽然基于图像等处理方法已取得了一定成果,然而该方法对外部条件的依赖比较强,对特定的场合和人群应用时,存在局限。而随着微电子技术的日益发展,传感器的种类不断增多,成本不断降低,体积不断变小,灵敏度也有了较大的改观,并不断地被集成到移动电子设备中。其中,基于传感器的手机运动轨迹识别技术作为一种新颖的人机交互模式越来越受到人们的重视。
3.加速度计是智能手机内置的一种比较重要的传感器。加速度是个空间矢量,一方面,要准确了解物体的运动状态,必须测得其三个坐标轴上的分量;另一方面,在预先不知道物体运动方向的场合下,只有应用加速度计来检测加速度信号。
4.近几年来,深度学习在国内兴起,利用该技术实现数据特征的提取与分类,我们可以得到更好的识别手机轨迹的效果。深度学习是一类模式分析方法的统称,就具体研究内容而言,主要涉及三类方法:
5.(1)基于卷积运算的神经网络系统,即卷积神经网络。
6.(2)基于多层神经元的自编码神经网络,包括自编码以及近年来受到广泛关注的稀疏编码两类。
7.(3)以多层自编码神经网络的方式进行预训练,进而结合鉴别信息进一步优化神经网络权值的深度置信网络。
8.通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。以往在机器学习用于现实任务时,描述样本的特征通常需由人类专家来设计,这成为“特征工程”。众所周知,特征的好坏对泛化性能有至关重要的影响,人类专家设计出好特征也并非易事;深度学习则通过机器学习技术自身来产生好特征,这使机器学习向“全自动数据分析”又前进了一步。
9.其中的卷积神经网络在显著减少参数量的情况下,还可以有更好的特征提取效果。此外,一维卷积神经网络在处理时间序列的相关问题上具有很好的性能,而加速度计传感器的数据正好属于时间序列。
技术实现要素:
10.本发明的主要目的是提出一种基于深度学习和加速度计传感器动作数据生成音乐的方法,能够提高动作识别的准确率以及提供更好的人机交互体验。
11.为实现上述目的,本发明提供了一种基于卷积神经网络的摇晃手机生成音乐的方法,包括如下步骤:
12.步骤s1:为自然七个声音阶中的六个分别设定相应的手势并收集六个手势的加速度计传感器数据,在经过处理后制成数据集,所述数据集包括训练集和测试集;
13.步骤s2:构建一维卷积神经网络模型,调节参数,传入预处理过的数据对所述卷积神经网络模型进行训练,将训练好的所述卷积神经网络模型进行量化优化并转换为tensorflow lite模型,以便于部署到android中;
14.步骤s3:将所述tensorflow lite模型部署到android中,采集摇晃手机过程中产生的传感器数据,并将其作为输入传递到所述tensorflow lite模型中进行识别;
15.步骤s4:根据识别结果来播放相应音阶的声音。
16.作为本发明的进一步改进,所述步骤s1包括:划分手势、选择采用的传感器、采集数据、制作数据集、划分训练集和数据集。
17.作为本发明的进一步改进,所述步骤s1包括:手势与音阶的对应规则、采集的加速度计传感器的数据、根据划分的手势来制作的数据集。
18.作为本发明的进一步改进,所述步骤s2包括:
19.步骤s21:构建一个10层的一维卷积神经网络模型;
20.步骤s22:预处理时将数据映射到[-1,1]的区间上;
[0021]
步骤s23:采用训练后量化的方法对所述卷积神经网络模型进行优化并转换成tensorflow lite模型;
[0022]
步骤s24:选择音乐生成app的开发环境和开发平台。
[0023]
作为本发明的进一步改进,所述步骤s2包括:
[0024]
步骤s25:在10层所述卷积神经网络模型中添加batchnormalization层、maxpooling1d层、globalaveragepooling层和dropout层来增加网络的稳定性;
[0025]
步骤s26:训练好所述卷积神经网络模型后用动态范围量化的方法优化,并选择android studio作为开发平台开发一款在android系统上运行的app。
[0026]
作为本发明的进一步改进,所述步骤s3包括:
[0027]
步骤s31:数据的采集使用队列和数组结合的方式实现;
[0028]
步骤s32:对输入的数据进行限制;
[0029]
步骤s33:设计软件的功能架构;
[0030]
步骤s34:设计软件的ui界面。
[0031]
作为本发明的进一步改进,所述步骤s32中对数据的限制方法为检测数值大于0.8数据的个数占总个数的百分比是否大于0.25;检测最大值是否大于0.5;检测最小值是否小于-0.5;所述步骤s33中软件可以实现的功能主要有演奏、乐理查看和乐谱查看,其中演奏部分又可以选择音调、选择音色和调节灵敏度;所述步骤s34中软件的ui界面主要以蓝色为主,共设置了五个界面。
[0032]
作为本发明的进一步改进,所述步骤s4包括:将采集到的数据放入所述tensorflow lite模型中进行识别,根据识别的结果,加载对应的音频资源文件并播放。
[0033]
本发明采用以上技术方案与现有技术相比,通过构建的卷积神经网络模型,再传入预处理过的手势数据对卷积神经网络模型进行训练,进行量化优化后转换为tensorflow lite模型部署到android中,抛弃了传统的机器学习算法,使用一维卷积神经网络,在简化了识别过程的情况下,可以有更好的特征提取效果,能够提高动作识别的准确率以及提供
更好的人机交互体验。
附图说明
[0034]
图1是不同方向手部晃动动作对应的音阶分布图o
[0035]
图2是原始数据示图。
[0036]
图3是数据集示图。
[0037]
图4是本发明中所用的卷积神经网络模型图。
[0038]
图5是测试集的混淆矩阵图。
[0039]
图6是软件的流程图。
[0040]
图7是软件模块图。
[0041]
图8-图12是软件的ui界面设计图。
具体实施方式
[0042]
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0043]
本发明提供了一种基于卷积神经网络的摇晃手机生成音乐的方法,具体包括以下步骤:
[0044]
步骤s1:为自然七声音阶中的六个分别设定相应的手势并收集六个手势的加速度计传感器数据,在经过处理后制成数据集(包含训练集和测试集);
[0045]
步骤s2:构建一维卷积神经网络模型,调节参数,传入预处理过的数据对模型进行训练,将训练好的模型进行量化优化并转换为tensorflow lite模型,以便于部署到android中;
[0046]
步骤s3:将tensorflow lite模型部署到android中,采集摇晃手机过程中产生的传感器数据,并将其作为输入传递到tensorflow lite模型中进行识别;
[0047]
步骤s4:根据识别结果来播放相应音阶的声音。
[0048]
优先地,为自然七声音阶中的六个分别设定相应的手势并收集六个手势的加速度计传感器数据,在经过处理后制成数据集(包含训练集和测试集)。本发明设定在空间中手机向左(1eft)、向右(right)、向后(backward)、向前(forward)、向上(up)、向下(down)晃动分别对应自然七声音阶中的do、re、mi、fa、sol、la。
[0049]
另外,利用软件phyphox来采集手机晃动时的数据,每个动作收集102条数据,总共收集612条数据,按照大约4:1的比例分割为训练集和测试集。
[0050]
另外,制作数据集的过程为:将原始数据中无用的信息(时间序列、总价速度值序列以及第一行标题行等)、删除多余数据使每个的动作的数据固定在200行(不足两百行的数据用0值来补齐)、为每条数据分别打标签。
[0051]
优先地,构建一维卷积神经网络模型,调节参数,传入预处理过的数据对模型进行训练,将训练好的模型进行量化优化并转换为tensorflow lite模型,以便于部署到android中。本发明构建了一个10层(不含无参数的网络层)的一维卷积神经网络模型来进行训练,所选用的深度学习框架为tensorflow,具体还涉及到其中的keras模块。
[0052]
另外,利用如下公式对数据进行预处理:
[0053][0054]
其中,newvalue表示预处理后的数据,o1dvalue表示预处理前的数据,minvalue表示最小值,maxvalue表示最大值。
[0055]
另外,调用tensorflow中的相关函数对模型进行参数的设定以及传入数据训练模型,利用回调函数对模型的参数进行保存,并设定保存训练过程中模型最优的参数。
[0056]
另外,使用tensorflow中的可视化工具tensorboard将模型的训练过程进行可视化
[0057]
另外,利用tensorflow lite工具将训练后模型量化生成.tflite文件,在模型精度几乎不会下降的同时,将模型的体积减小。
[0058]
优先地,将训练好的tensorflow lite模型部署到android中,采集摇晃手机过程中产生的传感器数据,并将其作为输入传递到模型中进行识别。本发明所选取的android开发平台为android studio。
[0059]
另外,本发明在训练模型时,没有向模型中添加元数据,因此选择利用tensorflow lite interpret api来实现模型的推断。
[0060]
另外,软件在采用内存映射的方法导入模型数据。
[0061]
另外,软件使用数组和队列结合的方式收集传感器数据。
[0062]
另外,软件对收集到的传感器数据进行取数据平均值大于3、取算术平均值大于2、取最大最小值区间为[0.5,+∞]和[-∞,-0.5](单位为m/s2)进行判断。判断正确才进行输入,判断错误则不进行输入。
[0063]
另外,软件在输入数据到模型前采用归一化处理。
[0064]
优先地,根据识别结果来播放相应音阶的声音。
[0065]
另外,在识别出手势后,加载相应的音频资源文件进行播放。
[0066]
下面结合说明书附图对本发明的具体实施进行说明。
[0067]
原始数据在制作成数据集的过程中经过处理形状变为了200
×
3,采集的原始数据如图2所示,数据集如图7所示。原始数据导出时为excel表格文件,为了方便保存和易于被tensorflow导入,经过处理后将所有数据分别保存为训练集和测试集两个.txt文件。
[0068]
本发明所搭建的卷积神经网络模型如图7所示,可以看到共设置了6个一维卷积网络层,每层的卷积核数分别为512,512,256,256,128,128,卷积核的尺寸均为8
×
3(因为是一维卷积神经网络,所以卷积核的列数与输入数据的列数相同)。为了防止在训练过程中发生梯度爆炸或梯度弥散的现象,在每层一维卷积层后添加了一个batchnormalization层,提升模型的泛化性。其作用为对数据进行归一化处理,统一数据的分布,减小在训练过程中因为数据分布而对模型产生的影响,将此层放于激活函数relu之前可以使模型训练过程更加的稳定,也会加快模型的收敛速度。此外在模型中还插入了两个maxpooling1d层,其目的是为了更好地提取数据特征,最后利用一个包含6个神经元的全连接层和softmax激活函数来进行最后的结果输出。模型的构建主要使用的是tensorflow中的keras模块,其中的核心代码如下:
[0069][0070][0071]
在将数据传入模型之前还要进行预处理,将x轴,y轴,z轴的数据分别映射到区间[-1,1]上。
[0072]
经过训练,模型的准确率达到了97.17%,对于测试集的混淆矩阵如图7所示。在tensorflow中专门设置了多种模型的保存方式以供不同的需求使用,其中可移植到其他地方进行使用的保存模型方法有多种。考虑到要此模型要部署到android移动设备上,利用tensorflow提供的tensorflow lite工具将模型优化并转换为.tflite文件会更加的便捷。
[0073]
本发明在将keras模型转化为tensorflow lite模型之前,先对模型进行了优化,
采用的方法是量化。训练后量化是一种转换技术,它可以在改善cpu和硬件加速器延迟的同时缩减模型大小,且几乎不会降低模型准确率。量化所采用的手段是将原本32位浮点型的权重转换为8位整型或16位浮点型。这意味着可以缩小模型所占用的内存(大约会变成原来的四分之一),同时整型数据可以提高运算速度以及具有更好的硬件兼容性(可以利用gpu等硬件加速运算)。
[0074]
量化的方法有三种:动态范围量化、全整数量化和float16量化。本发明使用动态范围量化方法来优化模型,仅仅静态化从浮点数到整数的权重(精度为8位)。
[0075]
在安卓应用开发部分使用了android studio进行软件开发,tflite模型对android studio有着很好的支持和优化。应用的功能包含模型导入、数据收集、数据筛选、数据识别、媒体选择、媒体输出等等。在模型导入方面本发明通过内存映射的方法首先将tf模型导入程序中,内存映射有助于大文件的读写操作,可以有效预防内存溢出。
[0076]
模型成功部署之后就要考虑输入的问题,由于我们是收集200组传感器的x、y、z轴加速度(不含g)的值,因此在我们的模型中只要输入一组1*200*3的数组即可,但是在使用数组的时候会产生一个问题,我们需要实时地更新数据,但是数组这个形式太过固定了。由于我们是每一帧的加速度数据都收集,并且要保证数据的大小只有1*200*3,那么就必须先抛弃最原始的第一个数据,然后把每个数据向前移,这样最后一个位置就空出来了,基于这种考虑我们使用了队列和数组相结合的方案。队列具有先进先出的特性,因此我们可以把每一帧数据先存入到队列中再将数据存入数组进而实现稳定的输入数据收集,这个过程是连续并且不间断的,具体过程如下。
[0077]
本发明在应用数据收集方面调用手机传感器并通过队列收集数据,在每次加速度数据发生变化时收集x、y、z轴的数据进行入队操作,并且会进行一次出队操作将数据赋予给数组,这样就保证了收集到的数据流的稳定性,当队列满两百个元素时将数组全体元素前移一个单位并抛弃第一个数据。
[0078]
传感器数据收集的核心代码如下:
[0079]
[0080][0081]
在有了一个稳定的输入数据流之后就要考虑对于这么一个随时在更新的数据要怎么知道何时对它进行识别的问题。因为模型的特性,每一次识别都会产出一个结果,如果我们不加以控制,那么软件将会把一些错误的和不完整的数据也进行识别。为了解决这个问题,本发明使用对数据本身进行限制的算法来实现控制。设置了三个指标对输入数据进行限制,来确保传输到模型的数据的有效性,分别是偏差百分占比、数据最小值和数据最大值,具体判断过程为:检测数值大于0.8数据的个数占总个数的百分比是否大于0.25;检测最大值是否大于0.5;检测最小值是否小于-0.5。如果判断成功则进入到模型中识别,模型识别完成之后会返回6个数据,分别是六个方向的概率,只要取其中的最大值的下标就可以得到识别出来的方向。软件的大致流程如图7所示。
[0082]
计算和判断函数的核心算法如下:
[0083]
[0084]
[0085][0086][0087]
识别只要使用tflite自带的方法就可以很简单的把数据导入到模型中,模型识别
完成之后会返回6个数据,分别是六个方向的概率,只要取其中的最大值的下标就可以得出识别出来的方向了。最后根据用户选择的模式,播放出所需要的音调与音色,本发明分别提供了两种音色和两种音调,分别是吉他、尤克里里和c大调、c小调。此外本发明还在软件中加入乐理知识和乐谱的查看两个功能,功能模块图如图7所示。
[0088]
方向识别和播放的核心代码如下:
[0089]
[0090][0091]
[0092]
在软件开发的最后就是ui设计,ui设计整体采用蓝色。首页分别设置三个功能的按钮;演奏界面的上方显示可用的音调,可用为深蓝色,不可用为浅蓝色,在该调式内但也不可用为灰色,中间为开始/暂停按钮,开始按钮下方可以调节模式和灵敏度,ui界面具体如图8-图12所示。
[0093]
综上所述,本发明一种基于卷积神经网络的摇晃手机生成音乐的方法,通过构建的卷积神经网络模型,再传入预处理过的手势数据对卷积神经网络模型进行训练,进行量化优化后转换为tensorflow lite模型部署到android中,抛弃了传统的机器学习算法,使用一维卷积神经网络,在简化了识别过程的情况下,可以有更好的特征提取效果,能够提高动作识别的准确率以及提供更好的人机交互体验。
技术特征:
1.一种基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,包括如下步骤:步骤s1:为自然七个声音阶中的六个分别设定相应的手势并收集六个手势的加速度计传感器数据,在经过处理后制成数据集,所述数据集包括训练集和测试集;步骤s2:构建一维卷积神经网络模型,调节参数,传入预处理过的数据对所述卷积神经网络模型进行训练,将训练好的所述卷积神经网络模型进行量化优化并转换为tensorflow lite模型,以便于部署到android中;步骤s3:将所述tensorflow lite模型部署到android中,采集摇晃手机过程中产生的传感器数据,并将其作为输入传递到模型中进行识别;步骤s4:根据识别结果来播放相应音阶的声音。2.根据权利要求1所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,所述步骤s1包括:划分手势、选择采用的传感器、采集数据、制作数据集、划分训练集和数据集。3.根据权利要求2所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,所述步骤s1包括:手势与音阶的对应规则、采集的加速度计传感器的数据、根据划分的手势来制作的数据集。4.根据权利要求1所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,所述步骤s2包括:步骤s21:构建一个10层的一维卷积神经网络模型;步骤s22:预处理时将数据映射到[-1,1]的区间上;步骤s23:采用训练后量化的方法对所述卷积神经网络模型进行优化并转换成tensorflow lite模型;步骤s24:选择音乐生成app的开发环境和开发平台。5.根据权利要求4所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,所述步骤s2包括:步骤s25:在10层所述卷积神经网络模型中添加batchnormalization层、maxpooling1d层、globalaveragepooling层和dropout层来增加网络的稳定性;步骤s26:训练好所述卷积神经网络模型后用动态范围量化的方法优化,并选择android studio作为开发平台开发一款在android系统上运行的app。6.根据权利要求1所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,所述步骤s3包括:步骤s31:数据的采集使用队列和数组结合的方式实现;步骤s32:对输入的数据进行限制;步骤s33:设计软件的功能架构;步骤s34:设计软件的ui界面。7.根据权利要求6所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于:所述步骤s32中对数据的限制方法为检测数值大于0.8数据的个数占总个数的百分比是否大于0.25;检测最大值是否大于0.5;检测最小值是否小于-0.5;所述步骤s33中软件可以实现的功能主要有演奏、乐理查看和乐谱查看,其中演奏部分又可以选择音调、选择音色和调节灵敏度;所述步骤s34中软件的ui界面主要以蓝色为主,共设置了五个界面。
8.根据权利要求1所述的基于卷积神经网络的摇晃手机生成音乐的方法,其特征在于,所述步骤s4包括:将采集到的数据放入所述tensorflow lite模型中进行识别,根据识别的结果,加载对应的音频资源文件并播放。
技术总结
本发明提出了一种基于卷积神经网络的摇晃手机生成音乐的方法,包括:步骤S1:为自然七声音阶中的六个分别设定相应的手势并收集六个手势的加速度计传感器数据,在经过处理后制成数据集;步骤S2:构建一维卷积神经网络模型,调节参数,传入预处理过的数据对模型进行训练,将训练好的模型进行量化优化并转换为Tensorflow Lite模型;步骤S3:将Tensorflow Lite模型部署到Android中,采集摇晃手机过程中产生的传感器数据,并将其作为输入传递到Tensorflow Lite模型中进行识别;步骤S4:根据识别结果来播放相应音阶的声音。本发明的方法抛弃了传统的机器学习算法,使用一维卷积神经网络,在简化了识别过程的情况下,有更好的特征提取效果,提高动作识别的准确率以及提供更好的人机交互体验。好的人机交互体验。好的人机交互体验。
技术研发人员:何飞洋 王苏浩 卢齐 林巧民
受保护的技术使用者:南京邮电大学
技术研发日:2023.06.12
技术公布日:2023/8/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/