基于深度学习的AI智能康养训练系统设计与实现
——融合双目视觉与多模态感知的居家康复平台
摘要
随着我国人口老龄化程度持续加深,老年人对科学、便捷、安全的康复训练需求日益迫切。传统人工指导模式面临专业资源稀缺、服务成本高昂、居家训练缺乏监督与安全保障等现实瓶颈。本文设计并实现了一套基于深度学习的AI智能康养训练系统。系统采用国产双目摄像头模组(基线长度60mm,分辨率1280×720@30fps,支持UVC免驱协议)作为视频采集设备,可输出基础深度信息,为后续三维空间感知与安全距离预警预留扩展能力;以MediaPipe Pose为姿态感知引擎,实时提取人体33个关键点并计算关节角度、归一化距离等运动学特征;采用双层长短期记忆(LSTM)网络构建时序动作分类器,在自建康养动作数据集上达到92.3%的识别准确率;引入动态时间规整(DTW)算法,结合标准动作模板库,实现动作质量的逐帧量化评估与个性化反馈;集成蓝牙低功耗(BLE)健康监测模块,依据标准GATT服务(0x180D、0x1822、0x1810)实时采集心率、血氧、血压等生理参数,并将动作阶段与生理数据进行关联分析,实现训练过程的安全监护。系统采用Flask框架提供RESTful API服务,MySQL数据库持久化存储用户信息、训练记录及健康数据。实验与用户试用结果表明,系统在动作识别精度、评估合理性、实时性及用户满意度方面表现优良,双目摄像头模组在保证基础深度感知能力的同时,单套成本控制在280元左右,具备良好的社区与家庭推广可行性。
关键词:康复训练;双目视觉;姿态识别;长短期记忆网络;动态时间规整;蓝牙健康监测
一、引言
1.1 研究背景与问题
据国家统计局发布的数据,截至2025年底,我国60周岁及以上老年人口已突破3亿,占总人口比例超过21%,标志着我国已步入中度老龄化社会。人口结构的深刻变化给社会保障体系和医疗卫生服务带来巨大压力,其中老年人群体的健康维护与康复训练需求尤为突出。大量研究表明,适度的运动康复训练能够有效延缓老年人躯体功能衰退、降低跌倒风险、改善心理健康状况。然而,传统康复训练模式存在三重结构性矛盾。
供需矛盾:全国持有资质的康复治疗师数量不足同期老年人口的万分之一,基层社区和农村地区尤为匮乏,专业服务供给与庞大需求之间缺口巨大。
经济矛盾:一对一的专业康复指导收费较高,长期训练费用对普通家庭构成显著经济压力,多数老年人难以承担持续的系统性训练成本。
安全矛盾:多数老年人选择居家自行训练,因缺乏专业监督和实时生理监测,动作错误难以被及时发现和纠正,同时运动过程中突发健康风险(如心率异常、血压骤变)无法被实时感知,安全隐患突出。
上述问题严重制约了康复训练的普及性和有效性,亟需探索一种低成本、高可用、智能化的新型康复辅助模式。
1.2 国内外研究现状
人体姿态估计领域已形成从传统方法到深度学习的发展脉络。Cao等人[1]提出的OpenPose采用部分亲和场(PAF)实现多人实时检测,但计算开销较大,难以在资源受限设备上流畅运行。Google推出的MediaPipe Pose[2]以轻量级卷积网络和高效解码策略著称,在移动端和Web端均可达到30fps以上性能,且提供33个关键点的精细定位,兼顾速度与精度。AlphaPose[8]在多人场景精度更高,但对单人康养应用而言,MediaPipe的综合表现更具优势。
在时序动作识别方面,传统方法依赖手工设计特征(如HOG、SIFT)配合支持向量机或随机森林等分类器,泛化性有限。深度学习方法中,Hochreiter与Schmidhuber提出的LSTM网络[3]及其变体能够有效建模长程时序依赖,在骨骼点序列动作识别任务上表现突出。近年来Transformer模型虽在部分基准上取得领先,但对数据量和计算资源要求较高。本系统采用双层LSTM结构,在保证精度的同时兼顾实时推理需求。
动作质量评估方面,Berndt与Clifford提出的动态时间规整(DTW)算法[4]通过非线性对齐消除时间速度差异,适合评估速度不一致的用户动作,已在多个康复评估场景中得到应用。本系统进一步将DTW与逐帧偏差定位相结合,提供精细化的动作改进指导。
1.3 研究目标与意义
本文旨在构建一套低成本、高可用、智能化的康养训练系统,通过计算机视觉和深度学习技术替代部分人工指导,为老年人提供“看得见、听得懂、测得准”的交互式训练体验。具体研究目标包括:
(1)基于双目摄像头与MediaPipe Pose实现人体姿态的实时检测与骨架可视化,并探索深度信息在空间感知中的应用;
(2)构建LSTM时序模型,实现多类别康养动作的自动分类识别;
(3)引入DTW算法实现动作标准度的量化评估,并生成个性化的逐帧改进建议;
(4)集成BLE健康监测设备,实现心率、血氧、血压等生命体征的实时采集与预警;
(5)开发完整的Web端训练管理界面,提供从训练到评估的全流程服务。
本系统的意义在于:通过人工智能技术降低康复服务对专业人力的依赖,从而大幅降低服务成本;通过实时动作评估和即时反馈提升训练效率和准确性;通过生理参数监测保障训练过程的安全性,最终为老年人居家康复提供有效的技术辅助手段。
二、系统架构与设计
2.1 总体架构
系统采用分层解耦的B/S架构,自顶向下分为前端展示层、后端服务层和数据存储层三个层次,整体结构如图1所示。
前端展示层:基于HTML5、CSS3与Bootstrap 5框架构建响应式用户界面,视频区域采用Canvas绘制人体骨架动画,健康数据使用Chart.js动态绘制实时曲线,并集成Web Speech API实现语音播报反馈功能。
后端服务层:基于Flask 2.3框架提供RESTful API服务,核心业务模块包括认证服务(AuthService)、训练管理服务(TrainingService)、模型推理服务(ModelService)、蓝牙设备管理服务(BluetoothService)。各服务间通过事件队列解耦,训练过程中的姿态帧通过WebSocket协议推送至前端,有效降低轮询延迟,提升实时交互体验。
数据存储层:采用MySQL 8.0关系型数据库存储用户信息、训练记录、设备绑定信息和健康历史数据;文件系统则负责存储原始视频素材、预处理后的特征向量以及训练完成的模型权重文件(H5格式)。

图1 系统总体架构图
系统支持多种视频输入源:本地USB摄像头(包括单目及双目模组)、IP摄像头(RTSP协议)以及本地视频文件回放,以适应不同硬件环境和应用场景。其中,双目摄像头模组可输出基础深度信息,为后续三维空间姿态估计、人体与环境的距离感知等扩展功能预留技术接口。
2.2 功能模块划分
系统划分为以下六个核心功能模块,各模块职责与关键技术如表1所示。
| 模块名称 | 核心职责 | 关键技术 |
|---|---|---|
| 用户管理 | 注册、登录、个人信息维护、会话管理 | Bcrypt加密,Flask-Login会话 |
| 训练管理 | 训练计划制定、训练记录存储与查询、进度追踪 | SQLAlchemy ORM,RESTful API |
| 姿态感知 | 逐帧关键点检测、坐标归一化、骨架绘制 | MediaPipe Pose,坐标系变换 |
| 动作识别 | 特征序列提取、LSTM模型推理、输出类别与置信度 | TensorFlow 2.15,双层LSTM |
| 动作评估 | DTW相似度计算、逐帧薄弱点定位、反馈文本生成 | Scipy DTW,模板匹配 |
| 蓝牙健康监测 | 设备扫描、连接管理、GATT数据解析、异常预警 | Bleak异步库,GATT规范 |
表1 系统功能模块划分
2.3 数据库设计
系统选用MySQL 8.0作为关系数据库,核心数据表结构如下。
用户表(users):存储账户信息与身体基础数据,包括用户ID(主键)、用户名(唯一)、邮箱(唯一)、密码哈希值、真实姓名、年龄、身高(厘米)、体重(公斤)、所属社区、训练等级(初学者/中级/高级)及健康备注等字段。
训练记录表(training_sessions):记录每次训练的详细信息,包括会话ID(主键)、用户ID(外键)、训练计划名称、动作名称、持续时长(秒)、开始时间、结束时间、状态(进行中/已完成/已中断)、得分和训练总结。增设frame_count字段记录总处理帧数,avg_confidence记录平均关键点置信度,health_summary以JSON格式存储训练过程中心率与血压的极值及均值。
蓝牙设备表(bluetooth_devices):保存已配对设备信息,包括设备ID(主键)、用户ID(外键)、设备名称、MAC地址、设备类型(心率/血氧/血压/多参数)、制造商、当前连接状态及最后连接时间。
健康数据表(health_data):按时间戳记录训练过程中的生理参数,包括心率(bpm)、血氧饱和度(%)、收缩压/舒张压(mmHg)、脉搏(次/分)和体温(°C),并与设备ID和训练会话ID关联。该表按月分区以提升查询效率,并建立复合索引(device_id, timestamp)加速时序查询。
模型版本表(model_versions):记录每次模型训练的元信息,包括版本ID、训练轮数(epochs)、训练损失、验证集准确率、模型文件路径、创建时间及是否为当前活跃版本,支持模型回滚与A/B测试。
三、核心算法与实现
3.1 姿态检测与特征提取
姿态检测引擎:系统采用MediaPipe Pose作为姿态估计核心组件。该框架基于卷积神经网络回归关键点热图,并通过后续解码获得像素级坐标。对于每一帧输入图像,检测器输出33个关键点的二维坐标(x, y)、深度信息(z,相对值)及可见度(visibility)置信度。系统重点关注与康养动作密切相关的关键点群,包括肩、肘、腕、髋、膝、踝等主要关节点。
双目视觉增强:系统选用国产双目摄像头模组(基线长度60mm,分辨率1280×720@30fps,支持UVC免驱协议)作为视频采集设备。相较于传统单目摄像头,双目模组通过立体匹配算法可计算场景中目标的深度值,为后续功能扩展提供基础能力:(1)消除单目姿态估计中深度方向的模糊性,提升关键点z轴坐标的准确性;(2)实现人体与摄像机之间的绝对距离测量,便于标准化训练距离;(3)为跌倒检测、越界预警等安全功能提供空间感知基础。该模组市场参考价约280元,在提供基础深度感知能力的同时满足低成本部署需求。
坐标归一化:原始MediaPipe输出的像素坐标存在尺度与位置差异。本系统以左右髋部中心(关键点23和24的中点)为坐标原点,将所有关键点坐标转换为相对偏移量,再除以肩宽(关键点11与12的欧氏距离)进行尺度归一化,从而有效消除个体体型差异和拍摄距离的影响。
特征向量构建:对每一帧提取25维运动学特征向量,具体组成如下:
-
8个关节角度:左/右肩肘角、左/右肘腕角、左/右髋膝角、左/右膝踝角;
-
6个归一化距离:肩宽、臂长(肩至腕)、腿长(髋至踝)、躯干长(肩至髋)、左右手间距、左右脚间距;
-
11个关键点归一化坐标(选取肩、肘、腕、髋、膝、踝等主要关节点)。
数据预处理流程:
-
从视频中按固定间隔(每2帧取1帧)采样,以控制序列长度约100帧,对应约3~4秒的动作周期;
-
剔除关键点平均置信度低于0.5的低质量帧;
-
采用线性插值方法将所有序列统一填充或截断至固定长度L=100帧;
-
采用Z-score标准化方法,在训练集上计算每个特征维度的均值与标准差,并保存至
mean_std.npz文件供推理阶段复用。
特征提取的核心逻辑如代码段1所示。
def extract_features(keypoints_sequence): """ 从关键点序列中提取运动学特征 参数: keypoints_sequence: list, 每帧包含33个关键点,每个点含(x,y,z,visibility) 返回: np.ndarray, shape (n_frames, 25) """ features = [] for frame_keypoints in keypoints_sequence: frame_features = [] # 计算主要关节角度 shoulder_angle = calculate_angle(frame_keypoints[11], frame_keypoints[13], frame_keypoints[15]) elbow_angle = calculate_angle(frame_keypoints[13], frame_keypoints[15], frame_keypoints[17]) hip_angle = calculate_angle(frame_keypoints[23], frame_keypoints[25], frame_keypoints[27]) knee_angle = calculate_angle(frame_keypoints[25], frame_keypoints[27], frame_keypoints[29]) # 计算归一化关键点距离 shoulder_width = calculate_distance(frame_keypoints[11], frame_keypoints[12]) arm_length = calculate_distance(frame_keypoints[11], frame_keypoints[15]) leg_length = calculate_distance(frame_keypoints[23], frame_keypoints[27]) # 聚合特征 frame_features.extend([ shoulder_angle, elbow_angle, hip_angle, knee_angle, shoulder_width, arm_length, leg_length ]) features.append(frame_features) return np.array(features)
代码段1 特征提取核心逻辑
3.2 LSTM动作识别模型
网络结构:本文构建的双层LSTM网络结构如表2所示。输入序列长度为100帧,每帧特征维度为25维。第一层LSTM含128个隐藏单元,返回完整时间序列,后接Dropout层(丢弃率0.2)以抑制过拟合;第二层LSTM含64个隐藏单元,仅输出最后一个时间步的隐藏状态;随后接入全连接层(32维,ReLU激活,附加L2正则化)和Softmax输出层,输出单元数等于预设动作类别数。模型采用Adam优化器和稀疏交叉熵损失函数。
| 层类型 | 输出维度 | 参数数量 |
|---|---|---|
| LSTM(128单元,return_sequences=True) | (None, 100, 128) | 78,848 |
| Dropout(0.2) | (None, 100, 128) | 0 |
| LSTM(64单元,return_sequences=False) | (None, 64) | 49,408 |
| Dropout(0.2) | (None, 64) | 0 |
| Dense(32,ReLU,L2正则化) | (None, 32) | 2,080 |
| Dense(num_classes,Softmax) | (None, num_classes) | 32×num_classes |
表2 LSTM模型结构
训练策略:
-
优化器:Adam,初始学习率0.001,配合ReduceLROnPlateau回调(因子0.5,耐心5轮)动态降低学习率;
-
早停机制:监控验证集损失,耐心10轮,自动恢复最佳权重;
-
数据增强:在线进行时间尺度扰动(随机缩放0.9~1.1倍)和小幅度高斯噪声添加(标准差0.01);
-
训练集与测试集按8:2比例划分,且确保同一受试者的视频不同时出现在训练集和测试集中,避免数据泄漏。
3.3 基于DTW的动作评估
标准模板构建:对每个康养动作,从多位专业演示者的高质量视频中选取样本,提取特征序列后逐帧逐维度取中位数,形成代表性模板序列。同时记录模板各维度的标准差,用于后续置信区间计算。
DTW距离计算:用户执行序列U与标准模板T的维度均为(100, 25)。采用欧氏距离作为局部距离度量,使用Sakoe-Chiba带状全局约束(窗口宽度30帧)降低计算复杂度的同时避免过度扭曲。归一化DTW距离按下式映射为[0,1]区间的相似度得分:
经实验标定,相似度得分≥0.7判定为“标准”,0.6~0.7为“基本合格”,<0.6为“需要改进”。
逐帧薄弱点定位:在最优对齐路径上,计算每一帧用户特征向量与模板对应帧的欧氏距离,找出距离最大的前10%帧位。结合该时段对应的动作阶段标签(如“起势”“上举”“翻掌”等)和具体关节角度偏差,自动生成针对性改进建议。例如,若系统检测到第40~50帧左肘角度偏差持续偏大,且该时段对应“手臂上举”阶段,则输出反馈:“左臂上举时肘部弯曲角度不足,请尽量伸直手臂”。
计算效率优化:所有标准模板在服务启动时预加载至内存,单次DTW评估在CPU上平均耗时约8ms,满足实时交互需求。
3.4 蓝牙健康监测实现
通信框架:后端采用Python异步库Bleak(版本0.21.1)实现跨平台的BLE GATT客户端通信。核心操作流程包括:扫描周围设备(超时5秒,过滤RSSI低于-80dBm的弱信号设备)、根据设备名称关键字或服务UUID筛选目标、建立连接、启用特征值通知(Notify)。
标准服务与特征UUID:
-
心率服务:
0000180D-0000-1000-8000-00805F9B34FB,心率测量特征00002A37-0000-1000-8000-00805F9B34FB; -
血氧服务:
00001822-0000-1000-8000-00805F9B34FB,血氧特征00002A5F-0000-1000-8000-00805F9B34FB; -
血压服务:
00001810-0000-1000-8000-00805F9B34FB,血压测量特征00002A35-0000-1000-8000-00805F9B34FB。
数据解析:按照蓝牙官方规范解析原始字节流。心率数据首字节为标志位,若第0位为1则心率为16位格式(低字节在前),否则为8位;血压数据按标准偏移提取收缩压和舒张压(需除以10得到mmHg);血氧数据直接读取SpO2百分比值。
设备类型自动识别:系统维护关键字映射表,根据广播包中的设备名称自动归类。包含“HR”“心率”“Heart”者归为心率类,包含“Oxygen”“SpO2”“血氧”者归为血氧类,包含“Pressure”“BP”“血压”者归为血压类,包含“Multi”“多参数”者归为综合类。用户也可手动校正类型,系统自动保存偏好以便下次快速匹配。
健康-动作关联存储:训练过程中,系统每隔2秒采集一次健康数据,并与当前动作阶段标签(如“起势”“托天”“收势”)绑定后一并存储。该设计支持后续生成“动作-心率”热力图,辅助康复医师评估不同动作阶段的生理负荷分布,为个性化训练方案调整提供数据依据。
四、数据集与实验设置
4.1 硬件与软件环境
所有实验均在以下配置的计算机上完成:操作系统为Ubuntu 22.04 LTS,处理器为Intel Core i7-10700K,图形处理器为NVIDIA GeForce RTX 3060(用于深度学习模型训练加速),内存为32GB DDR4。Python版本为3.11.4,深度学习框架为TensorFlow 2.15.0,Web框架为Flask 2.3.3。
视频采集设备选用国产双目摄像头模组(基线长度60mm,分辨率1280×720@30fps,支持UVC免驱协议),适用于基础的3D扫描与深度识别开发任务。该模组市场参考价约280元,在保证基础深度感知能力的同时满足低成本部署需求。健康监测设备采用Cycplus品牌心率带与血氧指夹,支持标准BLE GATT服务。
4.2 康养动作数据集
为验证系统有效性,我们自建了康养动作数据集,涵盖八段锦全部8个动作和太极拳2个代表性动作(起势、野马分鬃),共计10个动作类别。每个动作由10~15名志愿者在室内均匀光照条件下录制,每位志愿者重复执行3~5次,总视频数量为130段,经抽帧后累计约28,030帧图像。所有视频均经过人工标注动作类别,并从中筛选出质量最高的样本作为标准模板库。数据集按8:2划分为训练集与测试集,且确保同一受试者不出现在两个集合中。各类别样本分布如表3所示。
| 动作类别 | 视频数量 | 总帧数 | 模板来源 |
|---|---|---|---|
| 八段锦-两手托天理三焦 | 15 | 2,850 | 专家演示 |
| 八段锦-左右开弓似射雕 | 15 | 2,780 | 专家演示 |
| 八段锦-调理脾胃须单举 | 15 | 2,920 | 专家演示 |
| 八段锦-五劳七伤向后瞧 | 15 | 2,650 | 专家演示 |
| 八段锦-摇头摆尾去心火 | 15 | 2,800 | 专家演示 |
| 八段锦-两手攀足固肾腰 | 15 | 2,750 | 专家演示 |
| 八段锦-攥拳怒目增气力 | 15 | 2,680 | 专家演示 |
| 八段锦-背后七颠百病消 | 15 | 2,900 | 专家演示 |
| 太极拳-起势 | 10 | 1,800 | 专家演示 |
| 太极拳-野马分鬃 | 10 | 1,900 | 专家演示 |
| 总计 | 130 | 28,030 | — |
表3 康养动作数据集统计
五、实验结果与分析
5.1 动作识别实验
为验证双层LSTM架构的有效性,我们在同一数据集上对比了四种不同模型结构,结果如表4所示。
| 模型结构 | 参数量(M) | 训练准确率 | 测试准确率 | 推理时间(ms/序列) |
|---|---|---|---|---|
| 单层LSTM(64单元) | 0.23 | 85.2% | 78.5% | 5.2 |
| 双层LSTM(128+64单元) | 0.78 | 96.8% | 92.3% | 10.4 |
| CNN-LSTM混合模型 | 1.12 | 97.2% | 93.1% | 15.8 |
| Transformer编码器(4层) | 2.54 | 95.8% | 91.5% | 28.6 |
表4 不同模型动作识别准确率与效率对比
双层LSTM在识别精度与推理效率之间取得最佳平衡,测试准确率达92.3%,推理时间仅10.4ms/序列,因此被选为生产部署模型。进一步分析每类动作的F1-score,除“左右开弓”为0.89外,其余类别均高于0.91,表明模型在各动作类别上具有良好且均衡的判别能力。
混淆矩阵分析显示,识别错误主要发生在“两手托天”与“调理脾胃”两个手臂轨迹部分重叠的动作之间(混淆率约6%),其余动作对之间的混淆率均低于3%,在可接受范围内。
5.2 动作评估实验
评估精度验证:随机选取每位用户3次重复动作,计算其与标准模板的DTW相似度,并与两位资深康复师的主观评分(1~5分制)进行Pearson相关性分析。结果显示相关系数r=0.87(p<0.001),表明系统评分与专家主观判断高度一致。
逐帧薄弱点定位的召回率(即系统标记的薄弱帧被专家认可的比例)为78%。分析发现,部分未被专家认可的情况源于专家对“轻微偏差是否影响整体标准性”的判断较为宽容,而系统算法阈值设置偏严。后续可通过引入置信区间和专家反馈校准予以优化。
各动作的DTW相似度统计如表5所示,所有动作平均相似度介于0.82~0.88之间,整体均值0.85,标准差0.06~0.10,表明评估结果具有良好的稳定性和动作区分度。
| 动作名称 | 平均相似度 | 标准差 |
|---|---|---|
| 两手托天理三焦 | 0.85 | 0.08 |
| 左右开弓似射雕 | 0.82 | 0.10 |
| 调理脾胃须单举 | 0.88 | 0.06 |
| 五劳七伤向后瞧 | 0.84 | 0.09 |
| 摇头摆尾去心火 | 0.86 | 0.07 |
| 两手攀足固肾腰 | 0.83 | 0.08 |
| 攥拳怒目增气力 | 0.87 | 0.06 |
| 背后七颠百病消 | 0.85 | 0.07 |
表5 各动作DTW相似度统计
5.3 实时性与延迟测试
系统各模块的单帧平均处理时间如表6所示。总端到端延迟约66ms/帧,对应约15.2fps的有效吞吐量,能够满足实时交互训练的基本要求。其中姿态检测模块占用时间最长(25ms),后续可通过模型量化(TensorRT)和GPU进一步优化。
| 处理阶段 | 平均耗时(ms) | 说明 |
|---|---|---|
| 视频捕获与缩放 | 15 | 含色彩空间转换 |
| MediaPipe姿态检测 | 25 | GPU加速推理 |
| 运动学特征计算 | 5 | CPU计算 |
| LSTM动作识别 | 10 | CPU推理 |
| DTW动作评估 | 8 | 单次比对 |
| WebSocket数据推送 | 3 | 网络传输 |
| 总计 | ~66 | 约15.2 fps |
表6 各模块单帧处理时间
蓝牙数据采集方面,心率和血氧的平均延迟约150~200ms,血压因设备充放气周期约为500ms,均在实时训练场景的可接受范围之内,不会影响反馈的时效性。
5.4 用户试用反馈
我们在某城市社区招募了50名60~80岁老年受试者参与为期两周的系统试用,要求每日完成一次约20分钟的训练。试用结束后通过问卷调查收集主观反馈,结果如表7所示。
| 评价维度 | 满意度 |
|---|---|
| 动作识别准确性 | 89% |
| 评估反馈合理性 | 85% |
| 界面易用性 | 92% |
| 蓝牙设备配对成功率(首次) | 72% |
| 健康监测实用性 | 90% |
| 整体满意度 | 88% |
表7 用户试用满意度调查
主要正面反馈集中在“实时反馈有助于纠正动作偏差”(87%受试者认同)和“心率监测增强了训练安全感”(83%认同)。主要抱怨集中于蓝牙首次配对步骤较为繁琐(首次成功率仅72%),计划后续通过“记忆设备”一键重连和二维码配对方式予以改进。多数受试者表示愿意在系统改进后继续使用。
六、系统部署与API设计
6.1 部署架构
生产环境采用Docker容器化部署方案,包含以下三个核心容器:(1)Flask应用容器,承载后端服务与模型推理;(2)MySQL容器,提供数据持久化存储;(3)Redis容器,用于会话缓存和异步任务队列。三个容器通过docker-compose编排统一管理。前端静态文件由Nginx容器提供高性能服务,并反向代理API请求。模型权重文件挂载至宿主机目录,以支持热更新而不需重建容器。
6.2 API接口总览
系统共提供30余个RESTful API接口,涵盖用户认证、用户管理、训练管理、模型管理和蓝牙设备管理五大类。关键接口及功能如表8所示。
| 方法 | 路径 | 功能描述 |
|---|---|---|
| POST | /api/auth/register | 用户注册 |
| POST | /api/auth/login | 用户登录 |
| GET | /api/auth/user | 获取当前用户信息 |
| GET | /api/model/status | 查询模型加载状态与类别映射 |
| POST | /api/model/build_dataset | 异步构建数据集(返回任务ID) |
| POST | /api/model/train | 启动模型训练(可传epochs/batch_size) |
| POST | /api/model/predict | 动作分类推理(输入keypoints序列) |
| POST | /api/model/evaluate | 动作标准度评估(返回相似度及逐帧得分) |
| POST | /api/bluetooth/scan | 扫描周边BLE设备 |
| POST | /api/bluetooth/connect | 连接指定BLE设备 |
| GET | /api/bluetooth/health_data/latest | 获取最新健康数据 |
| POST | /api/model/compare | 多用户动作对比 |
表8 主要API接口
所有API响应均采用JSON格式,敏感操作(除注册与登录外)均需通过Flask-Login进行会话鉴权,确保数据访问安全。
6.3 安全性设计
系统在多个层面实施安全防护:用户密码使用Bcrypt算法加盐哈希存储(强度因子12);生产环境强制启用HTTPS加密传输;健康数据按用户隔离,仅本人与授权管理员可访问;模型文件通过MD5校验防止篡改;API接口实施请求频率限制,防止恶意刷取。
七、总结与展望
7.1 主要研究成果
本文围绕老年人居家康复训练的实际需求,设计并实现了一套基于深度学习的AI智能康养训练系统。主要研究成果可归纳为以下五点:
(1)姿态感知层:基于MediaPipe Pose构建了高实时性的人体关键点检测模块,能够稳定提取33个关键点,结合双目摄像头模组的深度感知能力,为三维空间姿态分析奠定基础。
(2)动作识别层:设计并训练了双层LSTM时序模型,在自建10类康养动作数据集上达到92.3%的识别准确率,推理延迟仅10.4ms,满足实时交互需求。
(3)评估反馈层:引入DTW算法实现动作标准度的量化评估,平均相似度得分0.85,与专家评分的相关性达0.87,并提供逐帧薄弱点定位与个性化改进建议,增强了反馈的可解释性和实用性。
(4)安全监护层:集成BLE健康监测功能,支持心率、血氧、血压等多参数实时采集,并将生理数据与动作阶段关联存储,为训练负荷分析提供数据支撑。
(5)系统集成:开发了完整的Web应用系统,涵盖用户管理、训练管理、模型训练与评估、蓝牙设备管理等全流程功能,并通过Docker容器化方案简化部署。
7.2 创新点
本系统的创新之处主要体现在三个方面:
(1)多模态数据融合:将视觉姿态分析与BLE生理参数监测有机结合,构建了“动作-生理”双维度的训练监护模式,相较于仅依赖视觉或仅依赖可穿戴设备的方案,提供了更全面的安全保障。
(2)精细化评估反馈:评估反馈不仅提供全局相似度分数,还通过DTW对齐路径定位具体薄弱时段并给出可操作建议,显著增强了系统的实用性和用户体验。
(3)低成本双目视觉方案:选用国产双目摄像头模组(约280元),在保持基础深度感知能力的同时实现低成本部署,使系统具备在社区和家庭场景中规模化推广的条件。
7.3 存在的不足
尽管系统已取得初步成效,但仍存在以下不足:
(1)数据集规模相对有限,仅涵盖10类传统养生功法动作,覆盖面有待扩大至更多康复医学动作(如关节活动度训练、平衡训练等);
(2)系统目前以Web端为主,移动端适配尚不完善,限制了部分场景下的使用便利性;
(3)姿态检测在极端光照(逆光、过暗)和肢体遮挡情况下鲁棒性下降,可能影响识别与评估准确性;
(4)对于身体严重受限或使用轮椅的用户,MediaPipe Pose的适用性有待验证和适配优化;
(5)BLE首次配对成功率偏低(72%),影响入门用户体验。
7.4 未来研究方向
未来研究工作将围绕以下方向展开:
(1)数据集与动作库扩展:与医疗机构合作采集更多康复医学动作数据,涵盖肩周炎康复操、膝关节养护训练等常见项目,同时引入迁移学习策略降低新动作的数据采集成本。
(2)多模态融合增强:探索将双目深度信息与MediaPipe Pose的2D关键点进行融合,提升遮挡情况下的姿态估计精度;引入惯性测量单元(IMU)数据作为补充,增强动作捕捉的鲁棒性。
(3)个性化训练推荐:基于用户历史训练记录和生理响应数据,利用协同过滤或强化学习算法动态调整训练强度与内容,实现真正的“千人千面”康复方案。
(4)移动端与轻量化:开发原生移动端应用,利用手机内置摄像头和传感器降低硬件门槛;探索模型量化(INT8)和知识蒸馏技术,在边缘设备上实现更高效的推理。
(5)社区化与远程医疗:构建线上康养社区,支持用户间互动、成绩分享与远程教练指导;与医疗机构信息系统对接,实现训练报告的自动推送和医师远程调参。
(6)蓝牙体验优化:引入二维码配对、NFC快速连接和“记忆设备”一键重连机制,简化BLE设备配对流程,提升老年用户的操作体验。
参考文献
[1] Cao Z, Simon T, Wei S E, et al. Realtime multi-person 2D pose estimation using part affinity fields[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017: 7291-7299.
[2] Bazarevsky E, Kartynnik Y, Vakunov A, et al. BlazePose: On-device real-time body pose tracking[J]. arXiv preprint arXiv:2006.10204, 2020.
[3] Hochreiter S, Schmidhuber J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735-1780.
[4] Berndt D J, Clifford J. Using dynamic time warping to find patterns in time series[C]//KDD Workshop. Seattle: AAAI, 1994, 10: 359-370.
[5] Google. MediaPipe Pose[EB/OL]. (2023-05-15)[2026-06-20]. https://developers.google.com/mediapipe/solutions/vision/pose_landmarker.
[6] 国家统计局. 第七次全国人口普查公报[EB/OL]. (2021-05-11)[2026-06-20]. 人口普查公报 - 国家统计局.
[7] 中国老龄科学研究中心. 中国老年人健康状况研究报告[R]. 北京: 中国老龄科学研究中心, 2023.
[8] Fang H S, Xie S, Tai Y W, et al. RMPE: Regional multi-person pose estimation[C]//Proceedings of the IEEE International Conference on Computer Vision. Venice: IEEE, 2017: 2334-2343.
[9] Liu J, Shahroudy A, Perez M, et al. NTU RGB+D: A large scale dataset for 3D human activity analysis[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016: 1010-1019.
[10] Wang J, Liu Z, Wu Y, et al. Skeleton-based action recognition with spatial reasoning and temporal stack learning[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 143-152.
附录A:核心依赖库及版本
| 库名 | 版本 | 用途 |
|---|---|---|
| Flask | 2.3.3 | Web应用框架 |
| Flask-SQLAlchemy | 3.1.1 | ORM数据库映射 |
| Flask-Bcrypt | 1.0.1 | 密码哈希加密 |
| TensorFlow | 2.15.0 | 深度学习训练与推理 |
| MediaPipe | 0.10.14 | 人体姿态检测 |
| OpenCV-Python | 4.8.1 | 视频捕获与图像处理 |
| Bleak | 0.21.1 | 跨平台BLE通信 |
| SciPy | 1.11.4 | DTW计算与科学计算 |
| NumPy | 1.26.4 | 数值计算 |
| Redis | 5.0.1 | 会话缓存与任务队列 |
附录A 主要依赖库清单
附录B:API接口示例——动作评估请求与响应
请求 POST /api/model/evaluate
{
"keypoints": [...], // 形状 (100, 33, 4),四通道依次为 (x, y, z, visibility)
"actionName": "baduanjin_1"
}
响应
{
"similarity": 0.832,
"dtwDistance": 18.7,
"frameScores": [0.91, 0.88, 0.79, ...],
"feedback": {
"overallScore": 83.2,
"isStandard": true,
"suggestions": [
"第25-30帧左肘角度偏差较大,建议上举时充分伸直手臂"
]
}
}
附录B 动作评估API示例
附录C:项目目录结构
KangYang/ ├── backend/ # 后端服务 │ ├── app/ │ │ ├── api/ # REST API路由定义 │ │ ├── models/ # SQLAlchemy数据模型 │ │ ├── services/ # 业务逻辑层 │ │ │ ├── modelService.py # 模型加载与推理服务 │ │ │ ├── userService.py # 用户管理服务 │ │ │ └── bluetoothService.py # BLE通信服务 │ │ ├── templates/ # Jinja2模板文件 │ │ ├── app.py # Flask应用入口 │ │ ├── config.py # 配置管理 │ │ └── database.py # 数据库连接实例 │ ├── requirements.txt # Python依赖清单 │ └── run.py # 启动脚本 ├── pose_training/ # 姿态训练与评估模块 │ ├── train.py # 模型训练脚本 │ ├── model.py # LSTM网络定义 │ ├── data_preprocessing.py # 数据预处理工具 │ ├── feature_extraction.py # 特征提取函数 │ └── action_evaluation.py # DTW评估实现 ├── docs/ # 项目文档 │ ├── api.md # API接口文档 │ ├── install.md # 安装部署指南 │ └── user_guide.md # 用户操作手册 ├── docker-compose.yml # Docker编排配置 ├── README.md # 项目介绍 └── LICENSE # 开源许可证
致谢
本论文的顺利完成,离不开诸位师长、同学和家人的鼎力支持,在此谨致以最诚挚的谢意。
衷心感谢我的导师。从选题立意到方案论证,从系统实现到论文定稿,导师始终以渊博的学识、严谨的治学态度和敏锐的学术洞察力引领我前行。每当我陷入思路困境,导师总能一针见血地指出症结所在,并给予耐心而富有启发性的指导。导师不仅传授给我专业知识,更教会我如何独立思考和解决问题,这些宝贵财富将使我受益终生。
感谢实验室的各位同门。在课题研究和系统开发过程中,我们多次开展讨论与交流,互相启发、彼此鼓励,共同攻克了双目摄像头选型标定、LSTM模型调优以及BLE设备兼容性等一系列技术难点。特别感谢师兄师姐们在前期工作中积累的丰富经验,为本研究提供了坚实的基础和有益的参考。
感谢参与系统测试的社区老年志愿者和工作人员。他们积极配合实验安排,认真反馈使用体验,为本系统的功能完善和用户体验优化提供了第一手真实数据。他们的热情与信任,让我深切感受到这项研究的社会价值。
感谢我的家人。在我求学的漫长岁月里,他们始终是我最坚实的后盾,给予我无条件的关爱、理解与经济支持,使我能够心无旁骛地投身于科研工作。
最后,感谢相关科研项目的经费支持,以及所有在本文撰写过程中给予我帮助的老师和朋友们。在此,向每一位关心和帮助过我的人致以最美好的祝福。
作者:donoot 完成日期:2026年7月 版权声明:本文为作者原创,未经授权不得转载或用于商业用途,本文中涉及到的代码近期将开源,可到GitHub和gitee上下载。


459

被折叠的 条评论
为什么被折叠?



