我使用 Arduino Zero 记录了 3 个通道的 EMG 数据,并通过 python 将数据存储在单独的 csv 文件中。我为每个手势获取了 5 个文件,每个文件包含 6 秒休息/连续执行 6 次的 6 秒手势。然后,我使用 85% 重叠的重叠窗口对数据进行分段,并为每个通道提取 7 个时域特征。每个类使用相同数量的缩放特征向量来训练 3 层 200 个神经元的 MLP,丢失率为 0.2,并且在混淆矩阵中每个手势的准确度达到 90% 以上。训练是通过类似于以下的代码完成的:https://github.com/Bio electronics-Laboratory/EMG_hand_finger_gestures_classification/blob/main/ANN_gridsearch.py
但是,当我实时使用 MLP 时,它可以准确识别 3 到 4 个手势,而不是 8 个,这是预期的吗?
我尝试通过存储传入的数据和生成的特征向量来实时检查我的Python程序是否有任何错误,以便将生成的特征向量与通过对实时存储的过滤、分割和特征提取获得的向量进行比较离线数据并且它们是相同的,所以我不认为实时执行错误的过滤/分割/特征提取存在问题。
有几个因素可能导致实时 EMG(肌电图)分类性能不佳,包括噪声信号、特征提取不足和电极质量低下。分类算法的限制、无法适应个人用户或环境干扰也会阻碍准确的肌肉活动检测和实时表现。