重要程度: ⭐⭐⭐⭐⭐
为什么看这篇文献?
- 利用高密度肌电,通过卷积神经网络识别运动单元的尖峰序列以及实时估计肌肉的神经驱动
- 两种不同的CNN网络与卷积核补偿算法(CKC)进行了比较,分别从仿真和实验上
- 探究窗口大小和步长的影响
- 该方法是用于识别运动单元的。运动单元目前有多种分解方法,如FastICA算法、CKC算法,本文是在CKC算法的基础上缩短识别时间
看文献过程中的笔记:
❓疑问:
98%和85%的准确率和灵敏性分别代表什么?
准确率是识别错的,灵敏性是没识别到的
为什么要把CKC识别的尖峰序列用于CNN的训练
用作输出标记值
什么是消失梯度问题?
目视检查并手动编辑所有MU尖峰序列[37]
脉冲噪声比(PNR)>30 dB的MU被保留用于进一步分析[34]
✍️笔记:
2023.09.14
这篇文章的初衷:这篇文章考虑到分解算法种的矩阵扩展和白化需要很多时间。自己在跑代码的时候发现,白化还好,矩阵扩展真的需要花费很大的时间,特别是当 R 很大的时候,而且就是分解也需要迭代很多次,速度非常慢,因此实时性是不可能的,所以这篇文章提出了用 CNN 来直接识别 MUST。
回顾了文献《A convolutional neural network to identify motor units from high-density surface electromyography signals in real time》,这篇文章说到盲源分离算法的时间成本很高,回过头来确实是这样的,特别是信号的扩展那一步,如果扩展的参数比较大的话甚至可能要等个几分钟。同时,在学习完深度学习的相关基础后,对这个网络结构的认知也更加清晰,他采用了4层卷积层,每两层接一个池化层,最后接两个全连接层。需要注意的是,他是将sEMG的64个通道平铺后,使用滑动窗口来构成图像的,这和我的方法不太一样。这次还仔细分析了滑动窗口是如何构造的,哪一段输入对应哪一段输出,未来可能会用到滑动窗口,可以参考。
2022.03.20
文章首先通过CKC算法(基于生理学)识别运动单元,HD-EMG(输入)和尖峰序列(输出)用于训练CNN。然后HD-EMG被CNN实时分解为放电序列。放电序列通过求和和滤波来估计神经驱动。
两种CNN:(a)多个单输出深度卷积神经网络SO-DCNN(一个net分解一个MU);(b)一个多输出深度卷积神经网络MO-DCNN(一个net分解所有MU)。
用CKC估计的神经驱动与用MO-DCNN估计的神经网络驱动之间存在较高的互相关系数(不同条件下的r值范围:0.88–0.95)。
一、Introduction
人类运动的控制与运动单元(MU)的激活有关,运动单元结合了运动神经元及其所支配的肌肉纤维。肌肉动作电位先于力的产生,导致机电(这里的机电指机械臂等被控制系统)的延迟,可以通过肌电信号预测运动意图来降低延迟。因此信号处理必须要准确快速,通常短于自主运动期间观察到的机电延迟(即225±50 ms [8])。
神经驱动:支配肌肉的运动神经元的输出
神经支配比率:运动单位内神经元支配的肌肉纤维的数量(不同运动单元之间不同)
运动单元动作电位:motor unit action potentials(MUAPs)
问题—>CKC,ICA 等算法已用于识别大量的 MU,但信号扩展或白化等几个步骤增加了计算时间,不能实时估计神经驱动。
解决—>将干扰 EMG 分解为 MU 尖峰序列的算法直接估计神经驱动。
对表面肌电信号如何分解成MUST的相关研究已经进展为如何增加准确率和降低时间延迟。更为重要的是,如何利用MUAP的时空特性去识别MUST。由于肌电信号是随机信号,因此通常通过滑动窗口提取其特征,考虑到低延迟,本文要选取尽可能短的滑动窗口。
我们认为对肌肉的神经驱动是所有已识别的MU的尖峰序列的总和,也称为累积尖峰序列(CST)。为了生成CST,对单个MU尖峰序列进行求和,并用400ms的Hanning窗口进行滤波(De Luca等人,1982)。
二、Methodology
CKC算法识别了MU的个数及尖峰序列,$y$是通过CKC算法得到的二进制序列:
![](/2023/04/29/%E8%AE%BA%E6%96%87/Deep%20Learning/A-convolutional-neural-network-to-identify-motor-units-from-high-density-surface-electromyography-signals-in-real-time/Untitled.png)
上面公式中的max以及后面的公式是什么意思?
max的意思是取最大值,如果有1则是1,如果没有1则是零。这里是在步长这么大的窗口里进行取值,取出来构成输入窗口的输出CNN的输入输出:
[i × s - w/2, i × s + w/2]——>discharge time instance: i × s——>会造成一个w/2的延迟。
CNN的输入:one window of the HD-EMG signal (width: $M$; length: $w$)
CNN的输出:binary value, indicating the discharge times of a given MU通过F1-score来评判一个MU是否被成功识别
结构和超参数手动优化,比较不同层数的3种网络,比较不同节点数的3种网络,本文用的CNN是效果最好的。文章使用的CNN是两个卷积层接一个池化层,然后再两个卷积层接一个池化层,最后接两个全连接层。输出层采用了sigmoid激活函数,因为值域是0-1,其他层采用了ReLU激活函数,ReLU解决了梯度消失的问题并且能够快速收敛。
For the SO-DCNN:
![image-20230913171459585](/2023/04/29/%E8%AE%BA%E6%96%87/Deep%20Learning/A-convolutional-neural-network-to-identify-motor-units-from-high-density-surface-electromyography-signals-in-real-time/image-20230913171459585.png)
C1-C3包含128个并行核滤波器,核大小为3,用于提取时空特征。C4有64个核滤波器,用于减少完全连接层的可训练参数的数量。卷积层(FM6)的输出被平坦化为矢量,并被馈入两个完全连接的层,分别包括256个节点和1个节点。我们对输出层使用S形激活函数,对所有其他层使用整流线性单元(ReLU)激活函数。sigmoid激活函数的输出范围为0到1,这符合我们的输出要求,即二进制值。ReLU解决了消失梯度问题,加快了收敛速度。
- 设计连续卷积层,允许CNN模型学习更复杂的特征。
- 将大小为2的最大池应用于C2和C4以提取代表性特征,同时降低特征的维数。
- 完全连接层基于特征映射做预测和分类。
For the MO-DCNN:
![image-20230913171524030](/2023/04/29/%E8%AE%BA%E6%96%87/Deep%20Learning/A-convolutional-neural-network-to-identify-motor-units-from-high-density-surface-electromyography-signals-in-real-time/image-20230913171524030.png)
前三层结构相同,后面变为并行层。
三、Experiment
肌肉:腓肠肌
设备:A two-dimensional adhesive grid of 64 electrodes was placed over the gastrocnemius medialis muscle
高密度肌电信号的仿真:三层圆柱形容器,每层包含肌肉、脂肪、皮肤,半径分别为10mm、4mm、1mm。125664条纤维,分为150个运动单位。每个运动单元支配的纤维为52到3191不等。
四、Data processing
- HD-EMG decomposition with the CKC algorithm implemented in the DEMUSE tool software
需要人工检查假阳或者假阴,剔除信噪比小于30dB的运动单元(该阈值确保灵敏度高于90%,假阳性率低于2%),剔除尖峰序列小于150的运动单元。(提高灵敏度降低误差) - 利用所有网格中的最大幅值对信号进行-1到1的归一化(通过限制输入的幅值对学习进行加速)
- 并不是所有的MU都用于CNN的训练,选取了至少有150个spikes的MU用作CNN的输入
文献使用了哪些方法?
滑动窗口方法:窗宽和步长的选择,要考虑窗口没有重叠和存在gap的情况。
深度CNN由四个卷积层(C1-C4)、两个完全连接层(F1和F2)、两层最大池层和一个平坦层组成。Deep CNN使用tensorflow和keras完成
CKC算法使用matalb开发的DEMUSE工具软件
灵敏度和准确率:
文献得到了哪些结论?
MO-DCNN 训练和预测的时间最低,但是 SO-DCNN 的准确率和灵敏度普遍较高。MO-DCNN 在训练时间(3.2-21.4 s/epoch)方面优于 SO-DCNN(6.5–47.8 s/epoch)和预测时间也同样是 MO-DCNN 更优(0.04 vs 0.27 s/sample)。MO-DCNN 的最佳窗口大小和步长分别为 120 和 20 个数据点。模拟和实验记录的 HD-EMG 信号的准确率和灵敏度分别为 98%和 85%,与 CKC 估计的神经驱动相关系数高于0.85
CKC的分解结果显示发力水平越低,识别到的MU越多(10%:22,30%:23,50%:15)
窗口长度为20的情形下灵敏度和准确率均较低,有两个可能的原因:
连续窗口的重叠部分较少
连续窗口之间存在间隙
总的延迟(HD-EMG信号到预测放电序列)在80ms,比以前的方法快两倍,且低于人类机电延迟(from 70 to 385 ms in [8])
- 提出的神经网络能够更好地识别低信噪比信号,从而减少数据段的时间
- 没有信号扩展、白化等额外的预处理步骤
窗口宽度为20个数据点时,灵敏度和准确率较低的原因可能是因为太短了不能充分捕获MUAP
HD-EMG使得潜在成分分析方法能够识别MU尖峰序列[15-17]
神经驱动与肌纤维动作电位没有直接联系,较大MU对EMG的振幅影响较大,EMG存在干扰,EMG包含临近肌肉的信号使得解释困难
缺点:
- CNN严重依赖于CKC算法(由深度CNN识别的所有MU完全来自CKC算法的分解结果,不能识别新的运动单元一旦CNN确定)
- 时间分辨率较低,只有102Hz(步长为20时,每20个数据点产生一个输出)
- CKC和仿真的spikes还要降采样来匹配预测的时间分辨率
优点:
- 时间延迟短
- 使用了神经特征
从引文中得到的结论:
- 更大的MU比较小的MU产生的信号幅值更大
- 神经驱动相比于表面肌电信号能够在更短的时间内准确分类人体动作:First, this direct information about neural coding enables to reach a nearly perfect classification to predict human movement with shorter segments of data than for the interference EMG.
相关论文链接:
盲源分离算法利用HD-sEMG能够精确识别大量MU
Muceli S, Poppendieck W, Negro F, Y oshida K, Hoffmann K P , Butler J E, Gandevia S C and Farina D 2015 Accurate and representative decoding of the neural drive to muscles in
humans with multi-channel intramuscular thin-film electrodes J. Physiol. 593 3789–804
CKC算法分解HD-EMG得到MUs
Holobar A and Zazula D 2007 Multichannel blind source separation using convolution kernel compensation IEEE Trans. Signal Process. 55 4487–96
尖峰序列求和滤波得到神经驱动
De Luca C J, LeFever R S, McCue M P and Xenakis A P 1982 Behaviour of human motor units in different muscles during linearly varying contractions J. Physiol. 329 113–28