【动作模式识别】实现复合动作模式识别(离线控制模块)
一、思路
一般来说,要实现摸脸动作,需要采集手臂的以下肌肉的肌电信号:
- 肱二头肌:控制肘关节的屈曲
- 肱三头肌:控制肘关节的伸展
- 前臂屈肌群:控制手腕和手指的屈曲
- 前臂伸肌群:控制手腕和手指的伸展
- 拇指长展肌:控制拇指的展开
- 拇指短伸肌:控制拇指的伸直
这些肌肉的具体位置可以参考:http://menovomed.com/newsv.php?id=549。一般来说,需要将电极贴在目标肌肉上,注意避免交叉干扰和噪音。
(1) 基于肌电信号的手臂动作识别及虚拟仿真 - 百度学术. https://xueshu.baidu.com/usercenter/paper/show?paperid=10550cv0wc3104x00v1h0vr0sp742042.
(2) 有了意念当“指挥” 假肢也能很“听话”----中国科学院. https://www.cas.cn/kx/kpwz/201708/t20170821_4611750.shtml.
(3) 基于表面肌电信号的手臂运动模式识别-开题PPT_百度文库. https://wenku.baidu.com/view/4e6fff73a417866fb84a8e4c.html.
(4) 深度学习的人体动作识别算法 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/46599638.
(5) 超轻量更泛化!基于人体骨骼点的动作识别 - 知乎. https://zhuanlan.zhihu.com/p/426695879.
(6) 有了意念当“指挥” 假肢也能很“听话”----中国科学院. https://bing.com/search?q=%e6%89%8b%e8%87%82%e5%8a%a8%e4%bd%9c%e6%a8%a1%e5%bc%8f%e8%af%86%e5%88%ab.
二、复杂动作怎么信号处理?
如果你一次采集了五个通道的肌电信号,你可以将这些信号叠加在一起,也就是将每个通道的信号相加得到一个总信号,然后对这个总信号进行预处理和特征提取和模式识别。这样做的好处是可以减少计算量和提高信噪比。但是,这种方法也有一些缺点,比如可能会丢失一些通道间的信息,或者造成一些通道的信号被其他通道的信号掩盖。
另一种方法是对每个通道的信号分别进行预处理和特征提取,然后将每个通道的特征向量拼接成一个总的特征向量,再用这个总的特征向量进行模式识别。这样做的好处是可以保留每个通道的信息,或者利用不同通道之间的相关性。但是,这种方法也有一些缺点,比如可能会增加计算量和降低信噪比。
因此,需要根据你的具体应用场景和目标来选择合适的方法。
推荐B站一个非常好的国内教程:https://www.bilibili.com/video/BV15e4y197iL/?spm_id_from=333.999.0.0&vd_source=e1b57954a90a5c44920c0ea78136af67
(1) 表面肌电信号(sEMG)基础知识总结 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/485705730.
(2) 干货|一文详解sEMG表面肌电 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379925002.
(3) 什么是肌电?_肌电是什么意思-CSDN博客. https://blog.csdn.net/psybrain/article/details/120945604.
(4) 多通道表面肌电信号分解的研究 - 百度学术. https://xueshu.baidu.com/usercenter/paper/show?paperid=96753679fcfd2908ec256deced56da2b.
(5) NinaPro-DB1 · master · mirrors / malele4th / sEMG_DeepLearning. https://gitcode.net/mirrors/malele4th/sEMG_DeepLearning/-/tree/master/NinaPro-DB1.
(6) 干货|一文详解sEMG表面肌电 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/379925002.
三、特征提取思路
首先我们先看看适合肌电信号都有哪些特征提取算法?
肌电信号的特征提取算法有很多种,不同的算法可能适用于不同的目的和场景。一般来说,肌电信号的特征提取算法可以分为以下几类:
- 基于时域的特征提取算法:这类算法主要利用肌电信号在时间上的变化规律,提取出一些统计量或者时序参数,如均值、方差、标准差、偏度、峰度、波峰波谷距离、零交叉率等。这类算法的优点是简单易实现,计算量小,但是缺点是对噪声敏感,不能反映肌电信号的频率特性。
- 基于频域的特征提取算法:这类算法主要利用肌电信号在频率上的分布特征,提取出一些谱域参数或者变换系数,如功率谱密度、频谱中心、频谱宽度、频谱基频、频谱最大峰值、快速傅里叶变换系数、小波变换系数等¹²。这类算法的优点是能够反映肌电信号的频率特性,对噪声不敏感,但是缺点是计算量大,需要较高的采样率。
- 基于时频域的特征提取算法:这类算法主要利用肌电信号在时域和频域上的联合特征,提取出一些时频参数或者变换系数,如短时傅里叶变换系数、连续小波变换系数、离散小波变换系数、经验模态分解系数等。这类算法的优点是能够反映肌电信号的时变性和非线性性,适用于非平稳信号,但是缺点是计算量更大,需要较高的采样率和分辨率。
我们选择连续小波变换系数算法,对噪声不敏感,需要满足高采样率 - 基于深度学习的特征提取算法:这类算法主要利用深度神经网络自动学习肌电信号的高层抽象特征,无需人工设计或者选择特征,如卷积神经网络、循环神经网络、自编码器等。这类算法的优点是能够适应复杂和多样的肌电信号数据,提高识别准确率和鲁棒性,但是缺点是需要大量的训练数据和计算资源,难以解释和理解特征含义。
对于复合动作选择基于时频域的算法更合适,为什么呢?
对于复合动作,比如说摸脸、摸后脑勺、进食等,我认为基于时频域的特征提取算法比基于频域的特征提取算法更适合你的要求。因为基于时频域的特征提取算法可以同时反映肌电信号的时域和频域特征,而基于频域的特征提取算法只能反映肌电信号的频域特征。复合动作通常涉及多个肌肉群的协调和变化,因此需要考虑肌电信号的时变性和非线性性,而不仅仅是频率特性。
基于时频域的特征提取算法有很多种,例如短时傅里叶变换(STFT)、连续小波变换(CWT)、离散小波变换(DWT)、经验模态分解(EMD)等 。你可以根据你的数据和目标选择合适的算法和参数。一般来说,STFT和CWT可以提供较高的时间分辨率和频率分辨率,但是需要较大的计算量和存储空间;DWT可以提供较低的时间分辨率和频率分辨率,但是需要较小的计算量和存储空间;EMD可以提供自适应的时间分辨率和频率分辨率,但是需要较高的计算复杂度和稳定性。
关于训练集和测试集
训练集和测试集是机器学习中常用的两种数据集,它们的意思和区别如下:
- 训练集(training set)是用来训练模型的数据,它包含了输入变量和输出变量,也就是特征和标签。训练集中的标签可以是人工打标签的,也可以是从其他数据源获取的,例如数据库、网站、传感器等。
- 测试集(test set)是用来评估模型的性能的数据,它也包含了输入变量和输出变量,但是在训练过程中不会使用。测试集中的标签也可以是人工打标签的,也可以是从其他数据源获取的,但是要和训练集的标签来源保持一致,以保证评估的有效性。
训练集和测试集的划分方法有多种,一种常见的方法是留出法(holdout cross validation),即按照一定的比例将数据集静态地划分为训练集和测试集,例如6:4或8:2。另一种常见的方法是k折交叉验证(k-fold cross validation),即将数据集动态地划分为k份,每次使用k份中的一份作为测试集,其他作为训练集,重复k次,然后取平均值作为最终的评估结果。
想了解更多关于训练集和测试集的定义和区别,可以参考以下的一些网页
(1) 机器学习干货篇:训练集、验证集和测试集 - 知乎. https://zhuanlan.zhihu.com/p/377789735.
(2) 一文看懂 AI 数据集:训练集、验证集、测试集(附:分割方法+交叉验证) - 知乎. https://zhuanlan.zhihu.com/p/98532085.
(3) 测试集和训练集是什么意思? - 百度知道. https://zhidao.baidu.com/question/425949299.html.
(4) 机器学习为什么要划分训练集、测试集和验证集?这3个样本集的区别又在哪里? - 知乎. https://zhuanlan.zhihu.com/p/377396096.
(5) #通俗理解# 测试集、训练集、开发集的区别 - 知乎. https://zhuanlan.zhihu.com/p/367995480.
四、动作模式识别
在处理三通道肌电信号或者更多通道信号数据进行动作模式识别时,选择合适的算法是至关重要的。根据不同需求,有几种算法可能适合:
-
线性判别分析(LDA):LDA是一种简单且计算效率高的方法,适用于特征空间线性可分的情况。它通过最大化类间距离和最小化类内距离来进行分类。
-
支持向量机(SVM):SVM在处理小样本、非线性及高维模式识别中表现出色,它通过找到最优超平面来区分不同类别的数据。
-
人工神经网络(ANN):ANN能够学习和模拟非线性和复杂的关系,特别是在特征空间复杂或者当数据关系难以用传统统计方法描述时。
-
卷积神经网络(CNN):CNN在图像处理中表现优异,对于肌电信号,可以将其转换为肌电图像,再利用CNN进行特征学习和分类。
-
循环神经网络(RNN):RNN特别适合处理序列数据,能够捕捉时间序列中的动态变化,适用于肌电信号这种随时间变化的数据。
选择哪种算法取决于您的具体应用场景和数据特性。例如,如果您的数据集较小,SVM可能是一个好的选择;如果您需要处理复杂的模式或者分类边界,ANN或CNN可能更合适。同时,深度学习方法如CNN和RNN可以自动提取特征,减少手动特征工程的需要,但它们通常需要更多的数据和计算资源。
在选择算法时,您还应该考虑实时性要求和系统的计算能力。例如,LDA由于其简单性,可能更适合需要快速响应的应用。而深度学习方法,尽管计算复杂度高,但在有足够资源的情况下可以提供更高的准确率和鲁棒性。
总之,选择合适的算法需要综合考虑数据特性、应用需求、计算资源和实时性要求。
(1) 智能交互中的肌电模式识别研究进展 - SIAT. http://neural.siat.ac.cn/index.php/news/109.shtml.
(2) 基于表面肌电信号的动作识别—深度学习方法 - 知乎. https://zhuanlan.zhihu.com/p/61650163.
(3) 基于EMG的人体下肢运动意图感知与预测研究 - 豆丁网. https://www.docin.com/p-2321503571.html.
(4) 表面肌电信号的多流卷积网络融合手势识别方法. http://www.shcas.net/jsjyup/pdf/2022/8/表面肌电信号的多流卷积网络融合手势识别方法.pdf.
(5) “惯性动作捕捉+无线表面肌电”技术融合新趋势 - 知乎. https://zhuanlan.zhihu.com/p/411813910.
(6) 智能交互中的肌电模式识别研究进展:https://mp.weixin.qq.com/s/QkOxEseGpQX-KhMvap9SzA.
相关文章:
【动作模式识别】实现复合动作模式识别(离线控制模块)
一、思路 一般来说,要实现摸脸动作,需要采集手臂的以下肌肉的肌电信号: 肱二头肌:控制肘关节的屈曲肱三头肌:控制肘关节的伸展前臂屈肌群:控制手腕和手指的屈曲前臂伸肌群:控制手腕和手指的伸…...
Python基础学习009——类的封装
# 面向对象是一种编程思想,还有另一种是面向过程 # 面向过程,具体步骤的实现,所有功能都自己书写 # 面向对象,使用一个个工具(函数),帮助完成各项任务 # 类:对多个特性相同或相似的食物的统称,根据特征不同一个事物可以属于多个类 # 对象:由类实例化的一个事物,指代1个 # 类的组…...
前端开发和后端开发,你更倾向于哪一种?
作为一个Web开发者,你是否曾经面临过这样的选择:是专注于前端开发,还是转向后端开发?前端开发和后端开发是Web开发中的两个不同的领域,它们各有各的特点和优势,也各有各的挑战和难点。那么,你应…...
Selenium 基本功能
#driver.quit()from selenium import webdriver from selenium.webdriver.chrome.service import Service# 尝试传参 s Service("chromedriver.exe") driver webdriver.Chrome(services)driver.get(https://www.baidu.com/) input()#1/导入Selenium库 from seleniu…...

智能井盖传感器有哪些?万宾科技智能井盖效果
在城市治理过程之中,小小的井盖却成为影响民生的一个重要方面,因为井盖一旦出现问题,会严重影响市民的生命安全,并且传统的井盖一般都会采用人工巡检的方式,这就导致了巡检的难度较大,从而不能对城市各个角…...

视频增强和修复工具 Topaz Video AI mac中文版功能
Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频,包括低分辨率视频、老旧影片、手机录制的视频等。 使用Topaz Video AI非常简单,…...
0基础学习PyFlink——使用datagen生成流式数据
大纲 可控参数字段级规则生成方式数值控制时间戳控制 表级规则生成速度生成总量 结构生成环境定义行结构定义表信息 案例随机Int型顺序Int型随机型Int数组带时间戳的多列数据 完整代码参考资料 在研究Flink的水位线(WaterMark)技术之前,我们可…...

vue使用Web Speech API实现语音播报
SpeechSynthesisUtterance对象用于表示要播放的语音内容,SpeechSynthesis对象则用于控制语音的播放、暂停、停止等操作。 const synth window.speechSynthesis const msg new SpeechSynthesisUtterance() // 语音播放 const playVoice (text) > {synth.canc…...
MVC5_Day1(Razor视图引擎)
MVC提供了两种不同的视图引擎:Razor视图引擎、Web Forms视图引擎。 1.代码表达式 1.1 转换字符:核心转换字符,用作标记<>代码之间相互转换的字符。 1.2 两种基本转换:代码表达式、代码块。都是求出值,再写入响…...

超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能脚本error报错…...

vscode开启emmet语法
需要在setting.json中添加配置 首先进入设置,然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…...

07、vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。
目录 问题解决: 问题 vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。 在使用 VSCode 时,创建 Vue 项目报的错 创建不了 Vue 项目 解决: 因为在此系统上禁止运行该脚本࿰…...

利用移动互联、物联网、智能算法、地理信息系统、大数据分析等信息技术开发的智慧工地云平台源码
智慧工地是指利用移动互联、物联网、智能算法、地理信息系统、大数据挖掘分析等信息技术,提高项目现场的“人•机•料•法•环•安”等施工要素信息化管理水平,实现工程施工可视化智能管理,并逐步实现绿色生态建造。 技术架构:微…...
海康多相机同步取流保存图片
话不多说,直接上代码。代码里包含了多窗口显示图像和保存图片。 #"rtsp://admin:123456qq192.168.10.192/stream1" # rtsp://admin:Admin123192.168.100.103:554/Streaming/Channels/101 #rtsp://admin:Admin123192.168.100.103:554/cam/realmonitor?ch…...

win10 + vs2017 + cmake3.17编译OSG-3.4.1
参考教程:https://blog.csdn.net/bailang_zhizun/article/details/120992244 1. 下载与解压 2. 修改configure 1)Ungrouped Entries -- 》ACTUAL_3RDPARTY_DIR: 设置为: D:/Depend_3rd_party/OSG341/3rdParty 2) Ungrouped E…...
Excel VBA开发基本语句说明
前言 VBA(Visual Basic for Applications)是一种用于编写宏的编程语言,它广泛应用于Microsoft Office套件中的各种应用程序,如Excel、Word、Access和PowerPoint等。在这些应用程序中,VBA可用于自动化任务、定制功能、…...

应用在智能空调中的数字温度传感芯片
智能空调是具有自动调节功能的空调。智能空调系统能根据外界气候条件,按照预先设定的指标对温度、湿度、空气清洁度传感器所传来的信号进行分析、判断、及时自动打开制冷、加热、去湿及空气净化等功能的空调。适合放在卧室,客厅等地方。 在中央控制系统…...
Qt界面美化之Qt Style Sheets
Qt style sheet 简称QSS style sheet可以在代码中单独对某个控件使用,例如: labelLEDLIN new QLabel("",this); labelLEDLIN->setFixedSize(36,36); labelLEDLIN->setStyleSheet("background-color:red;border-radius:18px;colo…...

prometheus监控告警部署(k8s内部)
一、部署prometheus 先来说明一下需要用到的组件,需要使用pv、pvc存放prometheus的数据,使用pvc存放数据即使pod挂了删除重建也不会丢失数据,使用configmap挂载prometheus的配置文件和告警规则文件,使用service开放对外访问prometheus服务的端…...

数字孪生特高压电网三维可视化平台实现能源智能管理
电力是现代社会不可或缺的基础能源,而有效管理电力资源对于实现可持续发展至关重要。近年来,随着物联网、大数据、人工智能等技术的快速发展,电网领域的数字化转型已经成为一种趋势。而其中关键的一环便是电网三维数字孪生技术,它…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...