Code Monkey home page Code Monkey logo

semg_deeplearning's Introduction

基于表面肌电信号的动作识别(深度学习)

1、sEMG的基础知识

1-1 sEMG的产生

表面肌电信号是由多个运动单元发放的动作电位序列,在皮肤表面呈现的时间上和空间上综合叠加的结果。

图1 肌电信号生成

sEMG的特点:

  • 幅值一般和肌肉运动力度成正比,能精确的反映肌肉自主收缩力
  • 超前于人体运动30-150ms产生

1-2 基于sEMG的动作识别一般处理流程

图2 基于机器学习的肌电识别处理流程

(1)离线采集sEMG

  • 定义动作数量、动作类型
  • 选择采集设备:Delsys(2000Hz)、Myo(200Hz)、OttoBock(100Hz)、高密度阵列式等
  • 肌肉位置的选择、电极数量的选择:根据肌肉解剖位置调整电极
  • 引导方式:图片、语音
  • 采集流程:休息+动作循环采集
  • 休息时间、动作时间,动作维持的力的大小,动作的姿势尽量保持一致

(2)数据预处理

  • 10-350Hz带通滤波器,50Hz陷波器
  • 标签修正:数据裁剪、最大面积法、极大似然修正
  • 样本不均衡问题:休息动作的处理(通过阈值)
  • 特征归一化:min-max标准化、标准差归一化
  • 数据增强:加高斯噪声、翻转信号通道、时间窗+增量窗
图3 基于最大面积法的动作标签修正(红线表示未修正的标签,黑线表示修正后的标签)

.

(3)特征提取:时域、频域、时频域(tsfresh库)

(4)特征选择:

  • 过滤法:方差选择法、相关系数法、卡方检验、互信息法,评估单个特征和结果值之间的相关程度,排序留下Top相关的特征部分
  • 包裹型:递归特征删除法、基于学习模型的特征排序
  • 嵌入型:正则化方法(L1正则化筛选特征)

(5)特征降维:

  • PCA、LDA、SVD分解、流行学习LLE(非线性降维)、自编码器、T-SNE

(6)模型训练:

  • KNN、LDA、DT、LR、NB、SVM、ANN
  • RF、AdaBoost、GBDT、LightGBM、XGBoost
  • AE、MLP、深层玻尔兹曼机、深层信念网络、CNN、RNN、LSTM、Inception、Attention
  • 迁移学习、GAN

(7)在线控制决策:

  • 预测结果做平滑处理,1s判别10次,3-5次投票作为控制指令
  • 机器人正在运动时不接受指令
  • 机器人闭手状态时只接受开手类指令(康复机器人)
图4 肌电控制手部康复机器人

1-3 基于深度学习的处理流程:实现端到端的动作识别

(1)离线采集sEMG,并数据预处理

(2)构造肌电图像,输入给深度学习模型

图5 基于深度学习的肌电识别处理流程

2、数据集

2-1 NinaPro 数据集

NinaWeb

NinaPro数据下载及数据说明

NinaPro DB1: OttoBock(100Hz)采集设备,粘贴10个电极,27位健康受试者,53种手部动作(包含休息状态)

NinaPro DB2:Delsys(2000Hz)采集设备,粘贴12个电极,40位健康受试者,49种手部动作(不包含休息状态)

2-2 Medical & Rehabilitation Robot Laboratory of SIA 数据集

SIA_delsys_16_movements_data数据下载

SIA_delsys_16_movements数据集:Delsys(2000Hz)采集设备,粘贴6个电极,4位健康受试者,16种手部动作

6个电极的粘贴位置:前臂的桡侧腕短伸肌、桡侧腕屈肌、肱桡肌、尺侧腕伸肌、指伸肌、指浅屈肌

图6 16手部动作

3、方法

3-1 传统机器学习方法

每个通道提取多个特征,RMS、MAV、WL、ZC、SSC等

3-2 深度学习方法

(1)NinaPro DB1:输入图像大小 12 * 10 (120ms * 10channels)

(2)NinaPro DB2: 输入图像大小 200 * 12 (100ms * 12channels)

(3)SIA_delsys:输入图像大小 200 * 6 (100ms * 6channels)

3-3 网络结构

使用Conv1D、Conv2D、Alternate-CNN(交替卷积)、ML-CNN(多流卷积操作+大池化层)四种

NinaPro DB1中的ML-CNN类似于NLP中的TextCNN模型,没有Embedding层

图7 应用于肌电识别的TextCNN模型

ML-CNN(Multi-stream convolutional operation and large pooling window CNN)

图8 应用于肌电识别的ML-CNN模型

semg_deeplearning's People

Contributors

malele4th avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

semg_deeplearning's Issues

label和使用数据

你好,我看在DB2上训练的代码,label为0的都被去除了,这样就只有49类了,为什么还是50类呢?
还有就是为什么只用了一个人的数据训练呢?这根本就不具有鲁棒性啊?

Hi

你好,看了你用NINAPRO训练模型的程序,很受用,我也开始做肌电信号,可以交流一下吗

val acc与train acc

按照代码训练之后执行history.loss_plot('epoch')
却没有val acc与train acc两组数据 查看变量后发现两组数据中所有数组都是零
请问该如何解决

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.