【论文阅读】基于卷积神经网络和预提取特征的肌电信号分类

Myoelectric Signal Classification Using Convolutional Neural Networks with Pre-Extracted Features

原文:DOI: 10.1109/ICICS55353.2022.9811218

2022

翻译:靠岸学术

目录

摘要

1引言

2背景

A. 卷积神经网络

B. 特征工程

3材料与方法

A. CNN集成

4结果

5讨论

6结论


摘要

This paper presents a model in which time and frequency domain data are pre-extracted from electromyographic (EMG) signals and used as input to a Convolutional Neural Network (CNN) to classify a patient’s limb movements. EMG is a source of information for the development of prostheses, but its classification still represents a challenge due to its inherent variability and non-stationary nature. The proposed approach provides representative information about the EMG signal to CNN, which then selects the relevant features and performs the classification more accurately. The investigation evaluated the work using six data sets, with upper and lower limb movements (p < 0.05). The comparison with other similar approaches demonstrates its potential, reaching 98.84% of accuracy, superior to the traditional algorithms. The study suggests the feasibility of employing CNN-type networks in the case of the EMG signal, combined with a pre-processing technique.

Index Terms—Signal Processing, Convolutional Neural Network, Pattern Recognition, Feature Selection, Rehabilitation, BioPatRec.

本文提出了一种模型,该模型从肌电图(EMG)信号中预先提取时域和频域数据,并将其用作卷积神经网络(CNN)的输入,以对患者的肢体运动进行分类。肌电图是假肢开发的信息来源,但由于其固有的变异性和非平稳性,其分类仍然是一个挑战。所提出的方法向CNN提供关于EMG信号的代表性信息,然后CNN选择相关特征并更准确地执行分类。该研究使用六个数据集评估了这项工作,包括上肢和下肢运动(p < 0.05)。与其他类似方法的比较表明了它的潜力,达到了98.84%的准确率,优于传统算法。该研究表明,结合预处理技术,在EMG信号的情况下采用CNN型网络是可行的。

索引词—信号处理、卷积神经网络、模式识别、特征选择、康复、生物模式识别。

1引言

肌电信号 (EMG) 被多个研究领域用作工具或信息来源。生物医学信号的正确处理和滤波必须特别注意。EMG 从大脑通过脊髓传递到肌肉,负责控制运动。该信号具有随机性,但在组织收缩的最初 200 毫秒内,可以识别个体希望执行的运动。它的一些应用包括运动员的身体评估、诊断肌肉问题和康复 [1]。

康复工程利用肌电图(EMG)来创建智能假肢,人工手臂的控制通过残肢信号进行[2]。然而,科学研究提出的解决方案与市售设备之间仍然存在差距。在临床环境中获得的结果与实际应用有很大差异。目前,商业产品不能被认为是稳健的,并且它们的控制并不完全自然[3],这导致了[4]用户的高拒绝率。

模式识别算法经常被用于根据人们希望执行的动作来分类EMG信号。根据文献,信号特征的提取和选择可以改善分类过程,并且专注于特征工程的研究很常见[5]。提取非冗余特征并为给定的分类器选择最合适的特征是费力的任务。因此,对具有自动特征提取和选择的机器学习算法(如卷积神经网络(CNN)[6])的研究已经变得流行,因为它们从过程中消除了这些步骤。然而,最近一项使用深度学习技术进行生物信号分类的研究[8]指出,由于此类信号的固有特性(尤其是噪声和干扰),直接在原始信号上使用CNN是值得怀疑的。通过这种方式,预处理步骤可以缓解这个问题,并为模型提供更全面的稳定性。

本文提出了一种分类方法,该方法不是将原始EMG信号输入CNN,而是输入一组先前从信号中提取的特征,从而为分类器提供格式化的低维信息。所提出的模型分为两个阶段。首先,从原始信号中提取数据,以减轻系统负载,并提供一组具有代表性的特征,这些特征不易受到变异性和噪声的影响。在第二阶段,CNN网络自动从先前的集合中提取最相关的特征,并利用其分类能力来区分运动类别。该方法测试了几种排列方式,以找到一个理想的工作范围,该范围表达了训练和准确性之间最佳的成本效益比。

研究人员已经在许多应用中使用 CNN,包括 EMG 信号分类并获得高质量的结果。然而,他们没有考虑到训练时间的重要性,并且该指标经常达到很高的值 [7, 20]。在这项研究中,我们提出了一个模型,该模型呈现高质量的结果并且可以减轻网络负载,从而实现效率和快速训练。所提出的方法降低了系统输入的维度,从而降低了其计算成本,从而实现了在线训练。某些条件,如疲劳、压力、温度、湿度,甚至电极的位置,都会改变信号的特性,这将不是同质的。此外,在初步测试中,用原始 EMG 信号馈送 CNN,我们没有获得好的结果。这项工作的主要贡献是:

  • 在输入 CNN 之前进行信号预处理:加速训练并提高网络准确性;
  • 与BioPatRec集成:使网络矩阵适应任何数据集。 这一步骤允许与该软件的统计模块集成,为我们提供了比较的基础;
  • 总体性能评估:此类网络计算成本高昂,嵌入式设备可以受益于更轻量级的版本;
  • 肌电信号模式识别的一般性讨论。

2背景

模式识别模型可以分为三个步骤,如图1所示:1) 信号采集、捕获、采样和处理;2) 特征提取和选择;3) 分类。以下小节描述了用于执行该操作的技术——用一组特征而不是原始信号来馈送分类模型。有必要结合 CNN 和 BioPatRec。

A. 卷积神经网络

CNN旨在学习输入和输出之间的关系,并将其知识存储在其滤波器权重中[24]。第一层是卷积层,负责通过卷积的数学运算执行滤波。此操作的结果称为“特征映射”。下一层负责归一化,计算每个输入通道的均值和方差。此步骤减少了训练时间。ReLU(Rectified Linear Unit,修正线性单元)层执行阈值操作,其中小于零的值被赋值为零。全连接层结合了前一步骤学习到的特征,以识别正确的模式。最后,这个分类层根据互斥类别创建输出标签[26]。

Ortiz等人开发了一个用于创建康复策略的开源研究平台,名为BioPatRec [9, 10]。它允许世界各地的研究人员拥有一个集中的研究环境。该软件是模块化的,包含许多分类算法和用于EMG处理的不同资源。这项工作将使用CNN网络增加BioPatRec的功能,以自动调整算法输入到所选数据集。

B. 特征工程

在人工智能领域,最能描述类之间边界的特征集合始终是一个非常重要的议题[11, 12]。随着机器学习技术的进步,为了消除特征提取步骤,涌现出能够自动完成此任务的网络。其他工作以通常的方式实现了用于EMG分类的此类网络,即直接将原始信号输入算法[7, 13, 20]。在本文中,我们提出了一种不同的方法。我们没有提供原始信号(其是非平稳或非同质的),而是首先在时域和频域中提取一组特征,然后将其输入到CNN中。因此,作为分类器输入的信息在数学上更有意义,并且更不易受到噪声的影响。

肌电信号分类通常采用 LDA(线性判别分析)[1],这是一种简单的数学方法,能够提取最具区分性的特征。另一种经过充分研究的算法是 MLP(多层感知器)[14]。作者在 [7] 中进行了一项有趣的研究,使用 Python 和 TensorFlow 评估肌电信号(测试 CNN 网络)。另一项研究 [13] 也实施了一种使用 CNN 的方法,并显示出有希望的结果。最近的一项研究 [20] 采用原始信号来馈送 CNN,并在两个数据集(Ninapro,[15])中获得了 98.31% 和 68.98% 的准确率。

3材料与方法

该研究在一台12核AMD Ryzen 5微处理器上进行了测试,该处理器配备16GB内存和250GB固态硬盘。BioPatRec在Manjaro Linux操作系统上运行。

在本文中,我们将提出的模型与 6 种通用分类器进行了比较。对于这些测试,使用了 6 个数据集 [9]。这些数据代表两种类型的包容性数据:个体(10mov4ch 和 10mov4ch-2)和下肢运动(TMC、TBC 和 UMC),以及一种类型的排他性数据(同步)。它们之间的变化是设置,例如电极放置和其他 [9]。表 I 显示了每组信号的记录协议。图 2 显示了运动的组成及其各自的自由度。

每个数据集都有一个输入和输出大小,因此有必要对 CNN 进行矩阵调整。该工作以自动化的方式将 Matlab 的 CNN 网络集成到 BioPatRec 中,而无需考虑数据集(具有特定格式)。滤波器的调整取决于输入大小、特征数量和要预测的类别。开发者不需要为每种类型的输入创建网络,因为有一个调整矩阵可以适应所有配置。图 III 显示了与数据集相关的运动。

表 I 数据存储库

BioPatRec平台对来自每组信号的数据执行了过滤和分割。每个窗口为200毫秒,重叠50毫秒。对于本研究,该方法采用了标准的BioPatRec过滤程序。特征提取的目的是突出重要信息,拒绝不相关的数据和噪声。本研究中使用的时间-频率特征总结在表II [16, 17, 18, 21]中。

图1. 对信号进行采样后,需要进行滤波并将其分割成窗口。从窗口中提取特征,并以向量形式组织。CNN网络的一般化,展示了卷积、归一化、ReLu和池化层。直接使用原始信号而不进行特征预选择的方法会受到噪声和干扰的影响,这是由于波的性质和可变性造成的。

图 2. 第一个框展示了具有 1 个自由度的运动。第二个框展示了具有 2 个自由度的组合。第三个四边形展示了具有 3 个自由度的可能性。下面的矩形展示了下肢的运动。

A. CNN集成

该研究将 CNN 算法与 BioPatRec 平台相结合。有必要创建一个架构,使输入向量的大小与第一个卷积层相匹配。由于每个数据集都有其采集协议,因此网络输入在信号之间不会是统一的。集合 SimultaneousForearm 是使用八个双极氯化银电极采集的,因此拟合矩阵会将十七个特征组织成一个长度为 136 (8x17) 的一维向量。该调查使用三种不同的架构进行了实验:第一种只有一层卷积层 (CNN-A),第二种有两层 (CNN-B),第三种有三层 (CNN-C)。可以直接在代码中进行更改,用户可以自由地提出不同的网络。例如,表 III 总结了 CNN-C 网络在由 Lower Limb UMC 集合馈送时的状态。

调整超参数:为了找到网络的最佳工作范围,有必要调整一些参数。此步骤没有通用规则,因此需要对多个值进行穷举搜索。该研究使用了 Adam 训练方法(自适应矩估计)。该技术允许自适应学习率,并使用一阶和二阶梯度矩估计来调整学习率。该研究使用的学习率为 0.003,最大 epoch 数为 20,衰减因子等于 0.9。对于批次,它代表在每次迭代中呈现给网络的信息块 [25],我们选择了默认大小 128。正如 [13] 指出的那样,此属性的小值通常会导致较长的训练时间。使用的损失函数是交叉熵。对于参数的选择,使用了网格搜索扫描协议。

统计分析:该研究考虑了两个用于统计分析的指标。第一个是准确率,它衡量算法区分不同运动类别的能力。评估的第二个标准是在训练网络上花费的时间。测试时间在分类器之间无关紧要,因为在所有情况下,它们都很廉价,并且不限制假肢的任何要求。训练时间在计算上是昂贵的,并且在实践中,会使校准和重新校准假肢变得困难。因此,训练时间是比预测时间更相关的指标。

所有测试在数据采集和算法上都遵循相同的协议。所有分析的患者都重复实验10次,获得的值用于计算一组测试的平均值。使用配对t检验来比较两个接近的结果,以验证获得的值是否可以被认为在统计学上相等(p < 0.05)。为了进行比较,还测试了其他四个分类器:多层感知器(MLP)、线性判别分析(LDA)、自组织映射(SOM)和调节反馈网络(RFN)。

表二 特征

表三 网络架构 C

4结果

个体动作:定量结果见表四。在代表个体动作的两个数据集中,CNN-C均取得了较高的准确率(95.73%和98.84%),超过了所有其他评估方法。该方法使用了CNN-C网络和SOM算法之间的配对t检验,以验证所提出的概念与最佳评估算法之间是否存在统计差异。t检验结果保证了两个分类器之间存在统计差异:CNNC优于其他通用算法。关于训练时间,CNN-C在第一组中平均花费1.14秒,在第二组样本中平均花费1.29秒。虽然没有呈现最佳结果(LDA - 0.11秒),但CNN算法的性能具有竞争力。

同步运动:两种CNN模型在此测试中均获得了高准确率:是本研究中的最佳结果。CNNC获得了97.49%的平均准确率,而LDA方法获得的平均准确率为95.22%。在这两种情况下,都存在统计学差异(p < 0.05)。CNN-C获得的训练时间为5.20秒,并非本研究的最佳时间:LDA分类器仅用0.12秒即可完成训练。

下肢:在第一组(TMC)中,CNN-C获得了研究的最佳结果,达到了96.90%的准确率,其次是CNN-B分类器,准确率为96.65%。在分析时间时,CNN-C获得了良好的数值,分别花费了1.42秒。最佳结果再次来自LDA网络,仅用时0.11秒。

分析第二组信号(TBC),CNN混合模型表现出最佳数值,配置C、B和A的平均精度分别为97.58%、97.22%和96.97%。本研究中测试的算法的平均训练时间分别为2.34、1.88和1.10秒。LDA获得了最佳时间,平均时间为0.11。

CNN-C 在 UMC 配置中呈现最佳结果 (97.23%)。第二好的值是 LDA (97.01%),考虑到统计差异 (p < 0.05)。时间分析没有呈现关于其他实验的显著变化:LDA 算法是最好的(训练耗时 0.11 秒),CNN 网络耗时不到 7 秒。

5讨论

表V显示了所提出的模型与其他研究的比较。最近的工作[22]使用了一个轻量级卷积神经网络,并达到了90±5的准确率。作者没有考虑训练时间,而是考虑了系统的总延迟。我们的工作不关注测试时间的测量,因为在所有情况下,测试时间都很短(在CNN情况下为0.0012秒)。另一项最近的工作[23]使用了一个CNN-RNN用于EMG信号的情况,并获得了96.60%的准确率。这些工作表明,在EMG信号的情况下,存在使用深度学习技术的趋势,因为这种网络可以提供更强大的解决方案。我们的方法提供了具有竞争力的结果,且计算成本可接受,这支持了在嵌入式设备中使用此类算法。

表四 实验的总体结果

表五 对比表

在最初的实验中,我们使用了一种直接将原始信号馈送到网络的方法。与其他模型相比,结果并不令人满意。对此的一种假设是,这些类别有很多相似之处,这使得分类过程变得困难。一个动作和另一个动作之间的差异是细微的,这可能增加了分类过程的复杂性。这就是特征提取过程有意义的原因:除了减少可变性之外,它还向网络传递信息,从而增加了类之间的分离边界。图3显示了4个不同信号样本之间的相似性。与例如代表行人或汽车的图像具有明显的差异不同,肌肉信号可能具有非常相似的特征。

图3. 4种不同运动重复两次之间的相似性。

最后,我们可以说深度架构具有更大的潜力。我们的13层CNN-C网络在所有测试中都提供了最佳的准确性,并且训练时间具有竞争力。此外,在我们其他的作品[21]中,我们使用了这里介绍的思想来为整个人群训练一个通用的神经网络,这加强了该方法的潜力。

6结论

本文提出了一种模型,该模型从肌电信号中提取时域和频域的数据特征,并将其用作卷积神经网络的输入。卷积神经网络具有很高的分类能力,并且能够执行自动特征提取。因此,这种类型的网络被用于原始信号。然而,由于肌电信号固有的变异性和非平稳性,我们已经证明,对波形进行预处理并向网络提供代表性的数据特征可以提高分类性能并节省处理时间。此外,由于不同的运动会产生非常相似的信号,因此使用原始肌电信号进行分类的过程变得更加困难。

所提出的模型使用六个不同的数据集进行评估,并与其他流行的分类器进行比较,在所有测试组中均超过了它们。此外,它还与其他最先进的模型进行了比较,并获得了比所有模型更好的性能指标,同时保持了更低的训练时间。目前的方法适用于未来在具有硬件限制的系统上进行部署,并允许对设备进行重新校准。结果令人鼓舞,并可能提高对智能假肢使用的依从性。该分类器已包含在 BioPatRec 分类模块中,并且可以在互联网上免费获得 [19]。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93267.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

珠海社保缴费记录如何打印

珠海社保掌上办&#xff08;微信小程序&#xff09; 进入“珠海社保掌上办”—“资料打印”— 选择养老工伤失业个人缴费证明&#xff0c;可选择 全部缴费记录打印或自选时段打印&#xff1a; 长按图片保存后打印。

AM32电调学习-使用Keil编译uboot

目前的AM32的APP固件包含了keil工程&#xff0c;但是uboot还没看到&#xff0c;对于习惯使用keil的新用户&#xff0c;调试起来会有些不习惯&#xff0c;本文将简单描述怎么新建一个keil的uboot工程&#xff0c;以AT32F421为例。一、新建目录新建一个目录Keil_Projects二、新建…

【大文件上传】分片上传+断点续传+Worker线程计算Hash

/*** 文件分片上传管理器* 提供文件分片、哈希计算、并发上传和断点续传功能*/ class FileChunkUploader {/*** 构造函数* param {File} file - 要上传的文件对象* param {Object} options - 配置选项* param {number} [options.chunkSize5MB] - 每个分片的大小&#xff08;字节…

-bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

这是典型的Windows换行符&#xff08;CRLF&#xff09;导致的脚本不能在Linux/Unix环境下正常执行的问题。Linux 期望的是 LF (\n)&#xff0c;而 Windows 是 CRLF (\r\n)&#xff0c;所以脚本文件的第一行解释器路径后多了一个不可见的 ^M&#xff08;回车符&#xff09;&…

芯伯乐1MHz高频低功耗运放芯片MCP6001/2/4系列,微安级功耗精密信号处理

前言在工业控制、通信设备、家用电器等领域&#xff0c;信号处理是核心环节之一&#xff0c;其中运算放大器&#xff08;运放&#xff09;是实现信号处理的核心器件&#xff0c;其选型参数直接决定了信号链路的性能和输出信号的质量&#xff0c;是确保信号正常、精确输出的关键…

智能的数学原理

智能的数学原理可以分成几个层次来看——从最底层的数学基础&#xff0c;到支撑“智能”表现的数学模型&#xff0c;再到连接数学与现实认知的理论框架。 分成 五个核心板块 来梳理&#xff1a;1. 信息与表示的数学 智能的第一步是“能表示信息”&#xff0c;这涉及&#xff1a…

FPGA即插即用Verilog驱动系列——SPI发送模块

实现功能&#xff1a;按字节以spi模式3发送数据&#xff0c;如果要stm32接收&#xff0c;请在cubemx中将对应的spi接口设置为模式3&#xff0c;详情见代码开头注释// spi_byte_master.v // 经过优化的SPI主设备模块&#xff0c;每次使能发送一个字节。 // 它实现了SPI模式3 (CP…

C++ 排序指南

在 C 中&#xff0c;std::sort 是一个非常强大且常用的函数&#xff0c;用于对容器或数组中的元素进行排序。它定义在 <algorithm> 头文件中。 std::sort 的基本语法 std::sort 的基本语法有以下几种形式&#xff1a;默认升序排序&#xff1a; std::sort(first, last);fi…

RS232串行线是什么?

RS232串行线是什么&#xff1f;RS232串行线是一种用于串行通信的标准化接口&#xff0c;广泛应用于早期计算机、工业设备、仪器仪表等领域的短距离数据传输。以下是其核心要点解析&#xff1a;1. 基本定义 全称&#xff1a;RS232&#xff08;Recommended Standard 232&#xff…

k8s-scheduler 解析

学习文档 官网的k8s上关于scheduler的文档基本可以分为这两部分 介绍 scheduler 的基本概念 介绍 scheduler 的配置 KubeSchedulerConfiguration 的参数 介绍 scheduler 的命令行参数 调度框架解析 Scheduling-framework 解析 kube-scheduler 选择 node 通过下面这两步…

前端简历1v1修改: 优化项目经验

今天有人找我优化前端简历&#xff0c;分享一下如何优化项目经验描述。这是修改前的版本&#xff1a;项目为Web前端开发&#xff0c;但描述为APP应用&#xff0c;包含某某功能。起初我感到困惑&#xff0c;因为前端技术栈使用Vue&#xff0c;为何项目类型是APP&#xff1f;后来…

K8S企业级应用与DaemonSet实战解析

目录 一、概述 二、YAML文件详解 三、企业应用案例 3.1 环境准备 3.2 扩缩容 3.3 滚动更新 3.4 回滚 四、自定义更新策略 4.1类型 4.2 设置方式 4.3 配置案例 一、 DaemonSet 概述 DaemonSet 工作原理 Daemonset 典型的应用场景 DaemonSet 与 Deployment 的区别…

Celery在Django中的应用

Celery在Django中的应用一、项目配置二、异步任务2.1 普通用法2.1.1 通过delay2.1.2 通过apply_async2.2 高级用法2.2.1 任务回调&#xff08;Callback&#xff09;2.2.2 任务链&#xff08;Chaining&#xff09;2.2.3 任务组&#xff08;Group&#xff09;2.2.4 任务和弦&…

DeepSeek生成的高精度大数计算器

# 高精度计算器&#xff08;精确显示版&#xff09;1. **精确显示优化**&#xff1a;- 新增print_mpfr()函数专门处理MPFR数值的打印- 自动移除多余的尾随零和小数点- 确保所有浮点结果都以完整十进制形式显示&#xff0c;不使用科学计数法2. **浮点精度修复**&#xff1a;- 所…

08--深入解析C++ list:高效操作与实现原理

1. list介绍1.1. list概述template < class T, class Alloc allocator<T> > class list;Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions.概述&#xff1…

GraphQL从入门到精通完整指南

目录 什么是GraphQLGraphQL核心概念GraphQL Schema定义语言查询(Queries)变更(Mutations)订阅(Subscriptions)Schema设计最佳实践服务端实现客户端使用高级特性性能优化实战项目 什么是GraphQL GraphQL是由Facebook开发的一种API查询语言和运行时。它为API提供了完整且易于理…

使用 Dockerfile 与 Docker Compose 结合+Docker-compose.yml 文件详解

使用 Dockerfile 与 Docker Compose 结合的完整流程 Dockerfile 用于定义单个容器的构建过程&#xff0c;而 Docker Compose 则用于编排多个容器。以下是结合使用两者的完整方法&#xff1a; 1. 创建 Dockerfile 在项目目录中创建 Dockerfile 定义应用镜像的构建过程&#xff1…

15 ABP Framework 开发工具

ABP Framework 开发工具 概述 该页面详细介绍了 ABP Framework 提供的开发工具和命令行界面&#xff08;CLI&#xff09;&#xff0c;用于创建、管理和定制 ABP 项目。ABP CLI 是主要开发工具&#xff0c;支持项目脚手架、模块添加、数据库迁移管理及常见开发任务自动化。 ABP …

力扣top100(day02-01)--链表01

160. 相交链表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {/*** 查找两个链表的相交节点* param headA 第一个…

LLM 中 语音编码与文本embeding的本质区别

直接使用语音编码,是什么形式,和文本的区别 直接使用语音编码的形式 语音编码是将模拟语音信号转换为数字信号的技术,其核心是对语音的声学特征进行数字化表征,直接承载语音的物理声学信息。其形式可分为以下几类: 1. 基于波形的编码(保留原始波形特征) 脉冲编码调制…