APP下载

基于行为识别的残疾人康复评测系统设计与实现

2022-07-18贺宗梅

长沙民政职业技术学院学报 2022年1期
关键词:关键点残疾人卷积

贺宗梅

(长沙民政职业技术学院,湖南 长沙 410004)

一、项目研究背景及现状

人体行为识别在近些年发展比较迅速,目前应用比较多的领域在视频监控和医疗保健行业,还有自动驾驶领域,而在残疾人康复领域目前应用很少。党的十九大报告明确提出“发展残疾人事业,加强残疾康复服务”。根据人口普查和全国残疾人抽样调查统计,目前我国残疾人将达到8500万之多。残疾人的康复通常需要专业的康复人员去协助,但是这种协助很多时候人工成本比较高,为了能够让残疾人自己可以进行规范的康复训练,因此把基于视频的人体行为识别技术应用到残疾人的康复中就具有很重要的现实意义和经济价值,同时也是对行为识别应用于残疾人康复领域做了一个有益的探索。

二、系统设计

通过对收集到的残疾人康复行为进行分析,按照高内聚低耦合的设计理念,对残疾人康复评测系统进行了模块划分,该系统的功能模块包含6 个模块,其中各模块的功能如下:

用户数据模块:该模块的功能主要为管理残疾人的基本信息,包括残疾人的姓名,身份证号,残疾情况描述等;保存残疾人朋友的康复计划,根据计划,生成康复任务;保存每次康复的效果数据,同时能够自动生成报表,对比每次康复的效果等。

图像预处理模块:该模块主要是对帧转换过来的图片进行预处理,因为图像都是来自视频,所以图像需要通过帧的格式来进行提取,然后转换成可以识别的图片,因此这个过程就包括图片灰度值、大小值、降噪等各种处理,确保输入的图片能够满足后续处理环节的需要。

关键点检测模块:在深度学习过程中,有人体骨骼标识的标识图。该模块对预处理过输入的图片进行关键点特征的提取,再匹配骨骼关键点,形成骨骼关键点的向量,为后续行为的姿态估计做准备。

姿态估计模块:根据形成的骨骼关键点向量建立向量矩阵,根据矩阵来估计残疾人朋友的康复姿态。

二次特征提取模块:对预处理过的图形进行二次特征提取,形成行为特征的矩阵。

康复评价及应用模块:根据生成的各种矩阵,包括:关键点预测矩阵、骨骼关键点向量矩阵和行为矩阵,利用行为神经网络模型进行行为识别。根据这些矩阵数据,对比标准行为数据得出本次动作的打分评价,最后形成训练效果数据存入数据库,用于后续的各种分析。

三、关键技术实现

(一)康复姿态识别的神经网络模型

根据神经网络原理,设计一款康复姿态识别的神经网络模型,如图1 所示。在神经网络架构图中标识了图形输入、核、步长、Padding等参数。

图1 神经网络模型架构

(二)神经网络模型实现

1.数据集准备

根据神经网络训练的需要,通过对现实和网络资源的整理收集,共收集到康复姿态识别神经网络训练集1937张图片,其中踢腿429张,下蹬有723张,站立有785张;测试集中踢腿有107张,下蹬有118张,站立有91张。每一种类别都放在不同的文件里并有标注。

2.搭建神经网络

按照神经网络架构图的设计思路,在装有python和pycharm 的实验环境下,利用tensorflow 完成康复姿态识别神经网络的搭建,其搭建的主要步骤如表1所示。

表1 神经网络模型实现步骤

2获取图片路径和标签3数据类型返回4第一层卷积层5第二层卷积层6第三层卷积层7第四层池化层8第五层全连接层9第六层全连接层定义read_traffic_light方法,读取每一张图片并把读取的像素矩阵放到images列表里,标签放到labels列表里,返回的数据是np.array类型的数据。把数据转换类型再返回,同时调用shuffle函数随机打乱顺序,从而完成数据构造。这样就完成了图片的像素矩阵并有了对应的标签。采用tf.Variable函数定义两个变量,变量1为权重,这个权重就是卷积核,该卷积核符合正态分布矩阵;变量2为偏置项,采用tf.truncated_normal函数生成,偏置项的shape必须与权重的深度相对应,参数:shape:一维的张量,也是输出的张量;mean:正态分布的均值;stddev:正态分布的标准差。把第一层卷积的输出作为第二层卷积层的输入,这一层的卷积核大小为3*3,深度为32,对应上层输出的深度,卷积的步长为2,padding为SAME。最后卷积的结果加上偏置项再进行RELU激活函数激活。filter_3=tf.Variable(tf.truncated_normal(shape=[3,3,48,64],mean=0,stddev=0.1))bias_3=tf.Variable(tf.constant(0.1,shape=[64]))conv_3=tf.nn.conv2d(leaky_relu_2,filter=filter_3,strides=[1,2,2,1],padding='SAME'fg_3=tf.nn.bias_add(conv_3,bias_3)relu_3=tf.nn.relu(fg_3)以第三层卷积层作为池化层的输入,过滤器尺寸为3*3,步长为2。这一层的输出为[None,2,2,64]的矩阵。添加dropout层使部分节点在训练时的输出置为0,防止过拟合,从而使得模型在测试数据上的效果更好。将数据矩阵平铺成一维向量。建一个符合正态分布的矩阵,shape的第一个为256,第二个参数为随机值。tf.matmul函数把构建的权重矩阵与平铺的一维矩阵相乘,再加上偏置项。设置shape为100,IMAGE_CLASSIFY 的值为3,后一层的输出深度为3;定义loss函数:采用tf.nn.sigmoid_cross_entropy_with_logits函数来计算预测值与真实值得交叉熵,tf.reduce_mean函数求平均值;优化loss:采用Adam算法优化loss,寻找全局最优点的优化算法,传入一个learning_rate学习率的参数,参数设定为0.001。

3.神经网络训练

为了让神经训练得比较智能,在训练过程中把数据分成一定的batch,当一个batch 训练完成后再获取下一个batch 进行训练,train_batches 是我们上面获取的图片数量, batch_size 是一个batch 的大小。train_batches 对batch_size 求整数除法,就是一共有多少个batch。在分批次的训练过程中,不断优化loss,神经网络每训练一次batch的数据会更新一次loss,所以它每更新一次我们就利用测试集测试一次,每迭代一次打印一次loss,最后调用save 保存训练模型,每迭代100 次保存一下模型。这样就完成了神经网络模型的训练。训练过程的运行结果如图2所示:

图2 运行过程

四、系统实现

(一)开发环境搭建

残疾人康复评测系统侧端工具采用摄像头,手机端或者电脑端采用可视化的开发工具,在展示端采用目前主流的移动开发技术实现。具体软件如下:

1.视频处理工具:ffmpeg‐20181115

2.集成开发环境:Microsoft Visual Studio Code、Anaconda3

3.界面设计工具:wxFromBuilder

4.编程语言环境:python3.6

(二)系统实现

用户登录系统后,点击开始训练,系统会自动启动端测设备,对残疾人朋友的康复进行视频拍摄,系统对采集到的视频通过神经网络模型进行分析并给出本次动作的打分,如图2 所示。同时保存到数据库,便于日后生成康复训练报告。

图3 康复评价图

五、结束语

本文对残疾人康复评测系统做了较好的实现,实现了数据采集、康复监测、康复评价等相关功能。在系统中引入了人体行为识别相关技术,设计了一个能够满足康复所需要的神经网络模型,并对它做了实现和训练,目前具备了较好的智能识别效果。该项目的实现为智能化康复系统研发做了较好的探索。但是,该系统只实现了腿部康复训练评测功能,要进一步应用到其他部位的康复,还需要不断地完善。

猜你喜欢

关键点残疾人卷积
聚焦金属关键点
肉兔育肥抓好七个关键点
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
我骄傲
方便残疾人用的橱柜Chopchop
医联体要把握三个关键点
为残疾人筑一个“中国梦”