本发明涉及一种钢琴指法智能识别方法。
背景技术:
钢琴乐谱弹奏场景中需要人工确认弹奏的手法是否正确,在实际操作中,这需要观察者全程注视着弹奏者的手指动作和熟悉乐谱。这就无法实现一个观察者同时观察多个弹奏者并给出及时的弹奏指法判断,尤其对没有指导者自学的人来说,根本没法进行独自学习。
钢琴弹奏学习主要是学习根据琴谱能用手指弹奏出来,钢琴弹奏教学中判断琴谱及对应弹奏的指法是否一一对应来衡量弹奏的正确性。在钢琴实践当中如果一位老师想亲自同时查看多个同学在同一时间段内弹奏同一钢琴乐谱或者不同钢琴乐谱的弹奏指法是否正确,这一教学几乎是不可能的。随着计算机视觉技术和机器学习的发展和进步,通过监控自动识别事件变得越来越有可能,例如肢体动作的识别、手势识别、人脸识别等。这些智能化识别的方法基本都是先提取物体的特征,然后根据特征做检测、分类和识别。提取物体的特征的方法主要分为传统手工设计特征的方法和基于深度卷积神经网络的方法:
1、传统手工设计特征的方法如hog、lbp、sift等,传统手工设计特征相对简单,无需学习与训练,仅需简单计算与统计。但是手工设计特征容易受到外界因素的影响,实际的应用效果并不鲁棒。
2、基于深度卷积神经网络的方法通常是设计神经网络模型来挖掘更深、更为抽象的图像特征,无需手工参与,受光照、姿态等影响较小,对复杂场景适应能力更强。
技术实现要素:
本发明的目的是提出一种钢琴指法智能识别方法,是针对独自学习钢琴弹奏乐谱和同时评价多个学员在钢琴弹奏乐谱过程中智能识别钢琴弹奏手法的错误,能够及时提醒错误信息,方便了弹奏者在没有指导者在旁边指导时也能及时错误提醒和评价。
本发明的目的是解决钢琴弹奏者在弹奏乐谱时,通过智能识别弹奏指法及时给出弹奏者的弹奏指法错误信息提示,让弹奏者能在练习时能及时纠正错误,并达到独自钢琴弹奏学习的目的。
本发明的具体技术方案如下:
一种钢琴指法智能识别方法,包含以下步骤:
步骤一摄像头安装与调试:安装一个摄像头,摄像头的视角能够全覆盖钢琴键盘,尽量画质清晰,且摄像头能够链接钢琴显示屏幕把钢琴键盘画面实时显示在钢琴画面上。
步骤二钢琴键盘分割:对钢琴键盘分割主要使用基于深度学习的显著性目标检测算法sod100k[1],该算法提出的轻量级网络主要由特征提取器和跨阶段的融合部分组成,可同时处理多个尺度的特征。特征提取器与sod100k提出的层内多尺度块堆叠在一起,并根据特征图的分辨率分为4个阶段,每个阶段分别具有3、4、6和4个层内多尺度块。sod100k提出的一种灵活的卷积模块(goctconvs)组成的跨阶段融合部分会处理来自特征提取器各阶段的特征以获得高分辨率的输出。
该算法使用一种新型的动态权重衰减方案来减少特征表示的冗余性,可以根据某些通道的特定特征来调整权重衰减。具体来说,在反向传播期间,衰减项会根据某些通道的特征动态变化。动态权重衰减的权重更新可表示为:
其中λd是动态权重衰减的权重,xi表示由wi计算的特征,而s(xi)是特征的度量,根据任务可以具有多个定义,wi是第i层的权重,
xi表示特征图,h,w分别表示特征图的高和宽。
步骤三钢琴键盘标定:通过步骤二得到的分割后键盘的框坐标,现在需要给键盘从左边到右边排序并对键盘框进行标定如x1,x2,...。
步骤四弹奏的人手检测:通过摄像机采集一部分弹奏钢琴的手指视频以及在网上收集一部分人手图片并标注人手框和左、右分类标记,使用faceboxes[2]检测算法训练人手检测器模型。该算法提出了一个新的锚框增加密度策略,目的是提高小尺度人脸的召回率。在不同的featuremap上设置anchorbox用于检测目标物体,但是对于目标拥挤的情况,在网络底层设置的小anchor显然非常的稀疏,为了对那些底层的小anchor进行一个稠密化的工作,具体就是在每个感受野的中心,对其进行偏移。anchor密度可表示为:
adensity=ascale/ainterval
ascale表示anchor的尺度,而ainterval表示anchor的间隔。
步骤五弹奏手指关键点检测:使用openpose[3]人手关键点检测算法,检测弹奏手指关键点坐标,并对检测到的靠近手指尖的关键点进行标记h1、h2、h3、...。该算法网络结构包含6个stage,每个stage的loss为肢体部位置信度图和肢体亲和向量场的预测值和groundtruth之间的l2范数,可表示为:
总体的loss为各个的stage的loss之和:
步骤六弹奏手指和钢琴键盘信息的联合匹配:当弹奏者按下钢琴键x1后,钢琴端侧会传出与被按下的钢琴键的信号f1,信号f1对应钢琴键x1框,通过步骤四检测钢琴键盘上是否有人手存在,若存在,则通过步骤五检测人手关键点,并比对每个靠近手指尖的关键点是否落在x1标定的钢琴键框内,若在框内有标定的指尖关键点,通过指尖关键点便可以判定出弹奏者使用的是哪个手指,进而可以识别出弹奏指法是否正确,若不正确则给出错误提示。
对钢琴弹奏时指法的智能识别,能及时对弹奏者弹奏乐谱时错误指法的提醒,对独自钢琴练习能及时纠正提醒,对同时进行多个钢琴教学指导具有辅助作用,提高教学指导的效率,方便了弹奏者在没有指导者在旁边指导时也能及时错误提醒和评价。使用深度学习的方法对钢琴键盘的分割、弹奏的人手检测、弹奏手指关键点检测等模型对外界环境影响抗干扰能力较强,模型鲁棒性较好。
附图说明
图1是本发明钢琴指法智能识别方法的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
一种钢琴指法智能识别方法,其整体步骤如下。
步骤一摄像头安装与调试:安装一个摄像头,摄像头的视角能够全覆盖钢琴键盘,尽量画质清晰,且摄像头能够链接钢琴显示屏幕把钢琴键盘画面实时显示在钢琴画面上。
步骤二钢琴键盘分割:对钢琴键盘分割主要使用基于深度学习的显著性目标检测算法sod100k[1](highlyefficientsalientobjectdetectionwith100kparameters),该算法提出的轻量级网络主要由特征提取器和跨阶段的融合部分组成,可同时处理多个尺度的特征。特征提取器与sod100k提出的层内多尺度块堆叠在一起,并根据特征图的分辨率分为4个阶段,每个阶段分别具有3、4、6和4个层内多尺度块。sod100k提出的一种灵活的卷积模块(goctconvs)组成的跨阶段融合部分会处理来自特征提取器各阶段的特征以获得高分辨率的输出。
该算法使用一种新型的动态权重衰减方案来减少特征表示的冗余性,可以根据某些通道的特定特征来调整权重衰减。具体来说,在反向传播期间,衰减项会根据某些通道的特征动态变化。动态权重衰减的权重更新可表示为:
其中λd是动态权重衰减的权重,xi表示由wi计算的特征,而s(xi)是特征的度量,根据任务可以具有多个定义,wi是第i层的权重,
xi表示特征图,h,w分别表示特征图的高和宽。
步骤三钢琴键盘标定:通过步骤二得到的分割后键盘的框坐标,现在需要给键盘从左边到右边排序并对键盘框进行标定如x1,x2,...
步骤四人手检测:通过摄像机采集一部分弹奏钢琴的手指视频以及在网上收集一部分人手图片并标注人手框和左、右分类标记,使用faceboxes[2](faceboxes:acpureal-timefacedetectorwithhighaccuracy)检测算法训练人手检测器模型。该算法提出了一个新的锚框增加密度策略,目的是提高小尺度人脸的召回率。在不同的featuremap上设置anchorbox用于检测目标物体,但是对于目标拥挤的情况,在网络底层设置的小anchor显然非常的稀疏,为了对那些底层的小anchor进行一个稠密化的工作,具体就是在每个感受野的中心,对其进行偏移。anchor密度可表示为:
adensity=ascale/ainterval
ascale表示anchor的尺度,而ainterval表示anchor的间隔。
步骤五手指关键点检测:使用openpose[3](openpose:realtimemulti-person2dposeestimationusingpartaffinityfields)人手关键点检测算法,检测弹奏手指关键点坐标,并对检测到的靠近手指尖的关键点进行标记h1、h2、h3、...。该算法网络结构包含6个stage,每个stage的loss为肢体部位置信度图和肢体亲和向量场的预测值和groundtruth之间的l2范数,可表示为:
总体的loss为各个的stage的loss之和:
步骤六信息匹配:当弹奏者按下钢琴键x1后,钢琴端侧会传出与被按下的钢琴键的信号f1,信号f1对应钢琴键x1框,通过步骤四检测钢琴键盘上是否有人手存在,若存在,则通过步骤五检测人手关键点,并比对每个靠近手指尖的关键点是否落在x1标定的钢琴键框内,若在框内有标定的指尖关键点,通过指尖关键点便可以判定出弹奏者使用的是哪个手指,进而可以识别出弹奏指法是否正确,若不正确则给出错误提示。
1.一种钢琴指法智能识别方法,其特征在于,包含以下步骤:
步骤一摄像头安装与调试:安装一个摄像头,摄像头的视角能够全覆盖钢琴键盘,尽量画质清晰,且摄像头能够链接钢琴显示屏幕把钢琴键盘画面实时显示在钢琴画面上;
步骤二钢琴键盘分割:对钢琴键盘分割主要使用基于深度学习的显著性目标检测算法sod100k[1],该算法提出的轻量级网络主要由特征提取器和跨阶段的融合部分组成,可同时处理多个尺度的特征;特征提取器与sod100k提出的层内多尺度块堆叠在一起,并根据特征图的分辨率分为4个阶段,每个阶段分别具有3、4、6和4个层内多尺度块;sod100k提出的一种灵活的卷积模块(goctconvs)组成的跨阶段融合部分会处理来自特征提取器各阶段的特征以获得高分辨率的输出;
步骤三钢琴键盘标定:通过步骤二得到的分割后键盘的框坐标,现在需要给键盘从左边到右边排序并对键盘框进行标定如x1,x2,...;
步骤四弹奏的人手检测:通过摄像机采集一部分弹奏钢琴的手指视频以及在网上收集一部分人手图片并标注人手框和左、右分类标记,使用faceboxes[2]检测算法训练人手检测器模型;
步骤五弹奏手指关键点检测:使用openpose[3]人手关键点检测算法,检测弹奏手指关键点坐标,并对检测到的靠近手指尖的关键点进行标记h1、h2、h3、...。
步骤六弹奏手指和钢琴键盘信息的联合匹配:当弹奏者按下钢琴键x1后,钢琴端侧会传出与被按下的钢琴键的信号f1,信号f1对应钢琴键x1框,通过步骤四检测钢琴键盘上是否有人手存在,若存在,则通过步骤五检测人手关键点,并比对每个靠近手指尖的关键点是否落在x1标定的钢琴键框内,若在框内有标定的指尖关键点,通过指尖关键点便可以判定出弹奏者使用的是哪个手指,进而可以识别出弹奏指法是否正确,若不正确则给出错误提示。
技术总结