当前位置: 首页 > article >正文

DL学习笔记:穿戴设备上的轻量级人体活动识别方法

Hello,大家好!这里是《Dream 的深度学习笔记》,本系列将聚焦三个学习方面:

  1. 论文解读:拆解经典论文与最新突破

  2. 技术实现:从模型搭建到实际部署

  3. 应用案例:涵盖图像识别、深度学习、人工智能等热门方向

让我们一起学习共同探索,欢迎关注本专栏,获取最新技术干货与行业动态!

本期论文:《A Human Activity Recognition Method Based on Lightweight Feature Extraction Combined With Pruned and Quantized CNN for Wearable Device》

一、引言:HAR和穿戴设备的“爱恨情仇”

人体活动识别(HAR)是穿戴设备里一项超级核心的技术,简单来说,就是让设备通过传感器数据判断你在干嘛,比如走路、跑步、坐着还是躺着。这项技术在健康监测、运动追踪、甚至老年人护理中都有大用处。随着智能手表和手环越来越普及,HAR的重要性不言而喻。

但问题来了,穿戴设备虽然小巧便携,却有个致命的短板:资源特别有限。电池容量小、计算能力弱、存储空间也少得可怜。传统的HAR方法要么依赖手动提取特征的机器学习算法(比如支持向量机SVM、决策树DT),要么直接上深度学习模型(比如CNN、RNN),结果呢?前者费时费力,后者直接把设备“榨干”,功耗高到续航都成问题。怎么在这么“苛刻”的条件下,既保证识别准,又不让设备“累趴下”,成了研究者们的头号难题。

这篇论文的作者就瞄准了这个痛点,提出了一种轻量级的HAR方法,核心思路是结合简单的特征提取和优化后的模型,既高效又省资源。读到这里,我忍不住想:这不就是技术和现实需求完美结合的例子吗?接下来,我就带大家一步步拆解这篇论文的亮点。

二、论文的核心创新:轻量级设计的三板斧

这篇论文的核心之处在于,它把HAR任务拆成了两步走,还用上了三种武器:轻量级特征提取、随机森林(RF)和剪枝量化后的CNN(PQ-CNN)。下面我详细聊聊这三部分的原理。

1. 统计特征提取:从数据里挖出“金子”

作者研究了几个常见的HAR数据集(比如UCI-HAR、WISDM、PAMAP),发现了一个简单却超级实用的规律:静态活动(坐着、站着)和动态活动(走路、跑步)在加速度计数据上的表现差别很大。具体来说,他们看的是加速度计x轴数据的标准差(STDEVX)。静态活动时,人几乎不动,STDEVX很小;动态活动时,身体晃来晃去,STDEVX就大得多。

基于这个发现,他们提出了一个超简单的分类方法:计算STDEVX,然后设定一个阈值(实验里是0.11)。如果STDEVX < 0.11,就判断为静态活动;反之,就是动态活动。实验证明,这个方法比SVM快5倍,比决策树快32.95倍,计算量小到几乎可以忽略不计。它没用什么花哨的算法,就靠一个标准差就把静态和动态活动分开了,简单到有点“不可思议”。

2. 随机森林(RF):静态活动的“精准小助手”

第一步分出静态和动态活动后,第二步是对具体活动进行分类。对于静态活动(比如坐着、站着、躺着),作者选了随机森林(RF)作为分类器。RF是个集成学习算法,通过多个决策树投票来决定结果,既准又不算太“重”。

他们在实验里优化了RF的超参数(比如树的数量、深度),结果很不错:在UCI数据集上,静态活动识别精度达到了90.8%;在WISDM数据集上,更是高达92.5%,比SVM和逻辑回归这些传统方法都强。而且,RF的计算复杂度不高,特别适合穿戴设备这种“小身板”。

RF的选择在静态活动这种相对简单的场景下,既保证了精度,又没给设备添太多负担。论文里还提到,可以把优化好的超参数存到设备的存储器里,用户还能根据场景切换参数。这种细节设计真的很贴心,技术味儿和人性化兼顾了。

3. 剪枝量化CNN(PQ-CNN):动态活动的“深度侦探”

对于动态活动(走路、跑步、跳跃),作者用的是卷积神经网络(CNN),因为CNN特别擅长从时间序列数据里挖出隐藏的模式。不过,标准的CNN模型太大、太费资源,直接用在穿戴设备上肯定不行。于是,他们对CNN做了“瘦身”处理,也就是剪枝(pruning)和量化(quantization),得到了PQ-CNN。

  • 剪枝:把模型里不重要的连接剪掉,减少参数量。

  • 量化:把浮点数参数变成整数,进一步压缩模型、加速计算。

效果怎么样呢?实验结果让我挺震撼的:

  • 在UCI数据集上,PQ-CNN精度只掉了0.43%,但模型大小从227.99KB缩到45.57KB,缩小了5倍!

  • 在WISDM数据集上,精度降了1.73%,模型大小同样缩了5倍。

看到这个结果,我真觉得深度学习的优化技术太牛了!PQ-CNN用这么小的代价换来了巨大的资源节省,几乎是为穿戴设备量身定制的。这让我开始好奇,类似的“瘦身”方法能不能用到其他场景?

三、实验结果:轻量化与性能的“双赢”

作者在UCI和WISDM数据集上测了这个方法的表现,还跟传统方法(SVM、CNN、LSTM+CNN)做了对比。结果很亮眼:

  • UCI数据集:F1分数0.9417,总模型大小645.8KB(RF 615KB + PQ-CNN 30.76KB)。

  • WISDM数据集:F1分数0.9438,总模型大小100.6KB(RF 55KB + PQ-CNN 45.57KB)。

指标UCI 数据集(平衡)WISDM 数据集(不平衡)
F1 分数0.94170.9438
模型总大小645.8KB100.6KB
处理时间(统计特征)1.32 秒1.32 秒

对比之下,传统CNN模型动不动就1.3MB以上,LSTM+CNN虽然小点,但计算量还是高得吓人。而这篇论文的方法,不仅精度跟最先进的模型差不多,资源占用却低得多,甚至能在STM32微控制器(内存1MB,频率80MHz)上跑起来。

四、总结

论文的创新不仅在于技术突破,更在于重新定义了 HAR 的设计理念:

  • 效率优先:在保证准确率的前提下,优先考虑计算和内存效率。毕竟,可穿戴设备的用户更关心续航和响应速度。

  • 单传感器的哲学:少即是多。通过优化算法,减少对硬件的依赖,这对普及低成本可穿戴设备至关重要。

它没有盲目追求更高的准确率,而是在效率和性能之间找到了黄金平衡点。用简单的统计方法替代复杂模型,用剪枝量化让 CNN “瘦身”,这些看似 “妥协” 的选择,实则是对可穿戴设备特性的深刻理解。

最后留个思考题:如果让你设计下一代智能手环,你会怎么平衡性能和功耗?欢迎在评论区脑暴你的创意,没准下个突破性论文就出自你的idea哦!咱们下期见~

今天的分享到这里就全部结束了,有任何问题欢迎在评论区提问,我们下期再见!

相关文章:

DL学习笔记:穿戴设备上的轻量级人体活动识别方法

Hello&#xff0c;大家好&#xff01;这里是《Dream 的深度学习笔记》,本系列将聚焦三个学习方面&#xff1a; 论文解读&#xff1a;拆解经典论文与最新突破 技术实现&#xff1a;从模型搭建到实际部署 应用案例&#xff1a;涵盖图像识别、深度学习、人工智能等热门方向 让…...

拓展知识三:编码学及密码学

编码和密码的区别 研究密码变化的客观规律&#xff0c;应用于编制密码以保守通信秘密的&#xff0c;称为编码学&#xff1b;应用于破译密码以获取通信情报的&#xff0c;称为破译学&#xff0c;总称密码学。 编码和密码是两个不同的概念&#xff0c;它们的区别如下&#xff1a;…...

windows安装配置FFmpeg教程

1.先访问官网&#xff1a;https://www.gyan.dev/ffmpeg/builds/ 2.选择安装包Windows builds from gyan.dev 3. 下滑找到release bulids部分&#xff0c;选择ffmpeg-7.0.2-essentials_build.zip 4. 然后解压将bin目录添加path系统变量&#xff1a;\ffmpeg-7.0.2-essentials_bui…...

Qt/C++项目积累:4.远程升级工具 - 4.1 项目设想

背景&#xff1a; 桌面程序一般都支持远程升级&#xff0c;也是比较常用的场景设计。如酷狗音乐的升级&#xff0c;会提供两个选项&#xff0c;自动帮助安装或是新版本提醒&#xff0c;由用户来决定是否升级&#xff0c;都属于远程升级的应用及策略。 看看经过这块的功能了解及…...

同旺科技USB to SPI 适配器 ---- 指令循环发送功能

所需设备&#xff1a; 内附链接 1、同旺科技USB to SPI 适配器 1、周期性的指令一次输入&#xff0c;即可以使用 “单次发送” 功能&#xff0c;也可以使用 “循环发送” 功能&#xff0c;大大减轻发送指令的编辑效率&#xff1b; 2、 “单次发送” 功能&#xff0c;“发送数据…...

用 Pinia 点燃 Vue 3 应用:状态管理革新之旅

一、状态管理的范式转移&#xff1a;从 Flux 到 Composition ### 1.1 Vuex 的辉煌与局限 - **核心架构**&#xff1a;基于Flux模式的state/mutations/actions三件套 - **痛点显现**&#xff1a; - 类型推导困难&#xff1a;TypeScript支持需复杂配置 - 模块嵌套陷阱&#…...

单表达式倒计时工具:datetime的极度优雅(Kimi)

一个简单表达式&#xff0c;也可以优雅自成工具。 笔记模板由python脚本于2025-03-22 20:25:49创建&#xff0c;本篇笔记适合任意喜欢学习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Pyth…...

Linux:基础IO---文件描述符

文章目录 1. 前言1.1 C语言文件知识回顾 2. 文件2.1 文件基础知识 3. 被打开的文件3.1 以C语言为主&#xff0c;先回忆一下C文件接口3.2 过渡到系统&#xff0c;认识文件系统调用3.3 访问文件的本质3.4 重定向&&缓冲区 序&#xff1a;在深入了解了进程的内容后&#xf…...

15:视图

1. 什么是视图&#xff1f; 视图是sql查询的虚拟表&#xff0c;他并不直接存储数据&#xff0c;而是基于单表/多表查询的结果创建的一张虚拟表&#xff0c;主要是为了提高查询速率、简化复杂查询。 视图的数据基于原始表&#xff0c;如果原始表中的数据发生了改变&#xff0c;…...

附——教6

审核较严格&#xff01;审核较严格&#xff01;审核较严格&#xff01; 完整内容参见&#xff1a; https://zhuanlan.zhihu.com/p/32050040665 注解&#xff1a; 1. 投机本质论&#xff1a;市场本质是投机&#xff0c;投资仅是表象&#xff1b; 2. 安全G点法则&#xff1a;精…...

使用 CA 证书进行签名的步骤

使用 CA 证书进行签名通常涉及以下步骤&#xff1a; 生成私钥和证书签名请求&#xff08;CSR&#xff09;&#xff1a;你需要生成一个私钥&#xff0c;并基于该私钥创建一个 CSR 文件。使用 CA 证书签名 CSR&#xff1a;使用 CA 的私钥对 CSR 进行签名&#xff0c;生成最终的证…...

LINUX基础 [二] - 进程概念

目录 前言 什么是进程 如何管理进程 描述进程 组织进程 如何查看进程 通过 ps 命令查看进程 通过 ls / proc 命令查看进程 通过系统调用 获取进程标示符 前言 在学习了【Linux系统编程】中的 ​ 操作系统 和 冯诺依曼体系结构 之后&#xff0c;我们已经对系统应该有…...

浏览器自动携带cookie注意事项

文章目录 浏览器自动携带与目标域相关的 cookie 是由 HTTP 协议规范和浏览器设计共同决定的一、Cookie 携带的基本规则同源策略下的自动携带跨域请求的受限携带一、服务器端配置二、客户端配置三、 常见错误及注意事项 二、Cookie 属性的筛选逻辑 三、浏览器携带cookie的准则1.…...

同旺科技USB to I2C 适配器 ---- 指令循环发送功能

所需设备&#xff1a; 内附链接 1、同旺科技USB to I2C 适配器 1、周期性的指令一次输入&#xff0c;即可以使用 “单次发送” 功能&#xff0c;也可以使用 “循环发送” 功能&#xff0c;大大减轻发送指令的编辑效率&#xff1b; 2、 “单次发送” 功能&#xff0c;“发送数据…...

算法及数据结构系列 - 滑动窗口

系列文章目录 算法及数据结构系列 - 二分查找 算法及数据结构系列 - BFS算法 算法及数据结构系列 - 动态规划 算法及数据结构系列 - 双指针 算法及数据结构系列 - 回溯算法 算法及数据结构系列 - 树 文章目录 滑动窗口框架思路经典题型76. 最小覆盖子串567. 字符串的排列438. …...

AI密码学

嗯&#xff0c;用户给了一个需要破译的密码文档&#xff1a;“Uif qjh jt po uif usff.”&#xff0c;提示是用字母往前推移1的凯撒密码。首先&#xff0c;我得确认自己是否正确理解提示。凯撒密码通常是将字母按照一定位移来替换&#xff0c;这里的提示是往前推1位&#xff0c…...

关于VSCode使用过程中的一些问题记录(持续更新)

1. VSCode更新拒绝访问 VSCode安装更新的时候出现&#xff1a; D:\Program Files\Microsoft VS Code\tools\inno_updater.exe 尝试在目标目录创建文件时发生一个错误&#xff1a;拒绝访问。 解决方法&#xff1a; 1. 禁止VSCode的自动检查更新&#xff0c;操作方法&#xff…...

重新复活的(手机端)一站式应用管理与下载平台

应用乐园&#xff08;安卓&#xff09; 应用乐园作者去年3月表示&#xff0c;由于精力问题&#xff0c;要停止维护奇妙搜索、应用乐园、奇妙影视这些软件了。 然而最近&#xff0c;令人意外的是&#xff0c;应用乐园竟然“复活”了&#xff01;更准确地说&#xff0c;它进行了…...

Vue3前端开发:组件化设计与状态管理

Vue3前端开发&#xff1a;组件化设计与状态管理 一、Vue3组件化设计 组件基本概念与特点 是一款流行的JavaScript框架&#xff0c;它支持组件化设计&#xff0c;这意味着我们可以将页面分解成多个独立的组件&#xff0c;每个组件负责一部分功能&#xff0c;通过组件的嵌套和复用…...

失物招领|校园失物招领系统|基于Springboot的校园失物招领系统设计与实现(源码+数据库+文档)

校园失物招领系统目录 目录 基于Springboot的校园失物招领系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、 管理员功能实现 (1) 失物招领管理 (2) 寻物启事管理 (3) 公告管理 (4) 公告类型管理 2、用户功能实现 (1) 失物招领 (2) 寻物启事 (3) 公告 …...

嵌入式硬件工程师从小白到入门-原理图(三)

原理图绘制从小白到入门&#xff1a;知识点速通与注意事项 一、原理图绘制基础概念 什么是原理图&#xff1f; 原理图&#xff08;Schematic&#xff09;是电子电路的图形化表示&#xff0c;展示元器件之间的电气连接关系&#xff0c;是硬件设计的蓝图。 核心元素 元器件符号&…...

Pear Admin Flask 开发问题

下载代码请复制以下命令到终端执行 git clone https://gitee.com/pear-admin/pear-admin-flask 于是我下载git 完成安装后&#xff1a; 安装 Git 后出现的页面是 “Git for Windows 的版本发布说明&#xff08;Release Notes&#xff09;”&#xff0c;通常会在安装完成后自动弹…...

Collectors.toMap / list 转 map

前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重复值&#xff0c;则会报错Duplicate key xxx, 解决方案 两个重复id中&#…...

1996-2023年各省公路里程数据(无缺失)

1996-2023年各省公路里程数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;公路里程&#xff08;万公里&#xff09; 4、范围&#xff1a;31省 5、指标解释&#xff1a;公路里程指报告期末…...

量化研究---可转债量化交易系统上线快速服务器

现在可转债交易系统使用的人多&#xff0c;服务器比较小&#xff0c;今天对服务器进行了升级&#xff0c;提供快速的数据支持&#xff0c;同时我也给了服务器的源代码&#xff0c;支持自定义服务器数据支持&#xff0c;不通过我服务器&#xff0c;可以挂在服务器上面24小时快速…...

用ArcGIS做一张符合环评要求的植被类型图

植被类型图是环境影响评价&#xff08;环评&#xff09;中的重要图件&#xff0c;需满足数据准确性、制图规范性和信息完整性等要求。本教程将基于ArcMap平台&#xff0c;从数据准备到成果输出&#xff0c;详细讲解如何制作符合环评技术规范的植被类型图。 ArcGIS遥感解译土地…...

Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]

集合 关系 介绍 Deque 是一个接口 LinkedList 是这个接口的实现类 题目 输入输出 滑动窗口 基于双端队列实现 Deque<Integer> deque new LinkedList<>(); 滑动窗口代码 洛谷 public static List<Integer> maxSlidingWindow(int[] nums, int k) {List&l…...

【商城实战(54)】解锁商城国际化密码:内容管理全攻略

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

AI代码编辑器:Cursor和Trae

Cursor 定义&#xff1a;Cursor 是一款基于AI的代码编辑器&#xff0c;它继承了VS Code的核心功能&#xff0c;并在此基础上增加了深度AI支持。它支持代码生成、优化、重构以及调试等功能&#xff0c;提供直观的Diff视图和自动补全功能&#xff0c;是一款功能强大的编程工具。…...

[学习笔记] VM虚拟机安装Ubuntu系统

前言 我现在装的Ubuntu总是死机&#xff0c;经常黑屏&#xff0c;所以我决定换个版本&#xff0c;顺便写一下笔记&#xff0c;给大家分享如何安装虚拟机 下载 这里我选择的是Ubuntu 22.04.5 LTS&#xff0c;下载链接&#xff1a;Ubuntu 22.04.5 LTS 如果访问不了网站的话&…...