姿态识别模块和视觉识别模块是此产品的和核心部分,本产品计算机视觉技术进行人体姿态信息的获取,并将获取到的人体姿态信息进行数据获取,统计出受伤人员的姿态、行为信息。同时将数据进行存储,由医务人员对数据进行分析,将标准姿态信息进行对比,得出伤、病人的康复情况,根据上一阶段信息,进行下一阶段的康复治疗。
1.2目标姿态识别设计
1.2.1软件选取
本产品采用非常广泛的计算机视觉库——OpenCv(如图1-1)。OpenCv不仅可用于图像的读取与显示,也可用于图像处理、分析、机器视觉方面。它可以运行在Linux、Windows、Android和Mac OS操作系统上,并且他也可以与Tensorflow、Pytorch进行深度学习方面的应用,也可与PyQt进行交互式页面的显示于读取,利用OpenCv可实现图像处理和计算机视觉方面的很多通用算法,在人工智能方面产生较大的影响。
图1-1 Opencv标志图
1.2.2 目标检测
本产品采用YOLOV5目标检测算,在进行目标检测前首先需要进行训练数据集,利用YOLOV5深度学习框架,进行训练模型。首先将数据集分成训练集(train)和测试集(test),进行神经网络结构的搭建,搭建好输入层、全连接层、输出层,创建模型实例,然后进行模型训练,将模型训练为100轮,持续追踪时间和损失,每5轮输出一次当前状态,最终将损失曲线图(如图1-2)输出,同时输出模型model。
图1-2损失曲线图
将模型导入主程序中,利用OpenCv进行读取图像,将图像进行灰度化、阈值分割等处理,将图像中存在人员进行检测出来,并进行标注,如图3-3所示:
图1-3目标检测图
1.2.3 Openpose人体姿态识别
OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。OpenPose相比较其他深度学习框架在姿态训练这方面,有着速度快、损失函数较低、训练率高等特点,如图1-4所示:
图1-4 OpenPose训练效果
在进行目标检测的基础上,进行姿态识别首先需要利用Opencv对输入图像进行读取,进行图像处理 ,利用卷积网络进行特征提取,利用Bipartite Matching(二分匹配,如图1-5)求出Part Association将同一个人的关节点连接起来。
图1-5二分匹配
利用OpenCV进行读取一张图象,经过卷积网络提取特征,然后得到一组特征图,将特征图与模型进行匹配,得出图像中人员的各个关节点,最终合成一个人的骨架。
图1-6姿态识别
1.3关键算法解析
1.3.1 YOLOV5目标检测算法
YOLOV5算法是与计算机视觉和图像处理相关的计算机技术,用于在一张图片中识别物体的种类,并标出物体所在位置。YOLOV5算法结构(如图1-7)主要包括输入端、基准网络、Neck网络、Head输出层。主要通过一下几个步骤进行实现:
1.首先要进行Mosaic数据增强,将图片进行随机缩放、裁剪、排布、旋转等方式进行拼接
2.预设边框先大致在可能位置标出目标,在预设边框上进行调整
3.利用Focus对图片进行邻近下采样,同时将W、H信息一起几种到通道上,利用5×5的卷积进行特征提取
4.利用特征金字塔,通过简单的网络连接改变,增加检测多样性
5.将预测边框与实际边框进行对比,得到损失函数。
6.利用Head输出端完成对目标检测结果的输出。
图1-7 YOLOV5结构图
1.3.2 Caffe深度学习计算框架
Caffe的模型和优化都是以文本形势给出,同时给出了模型定义、训练的权重,可进行海量数据的计算,因此用来进行姿态识别方面的运算。结构图如图一所示,Caffe主要由五个组件(如图1-8)构成Blob,Solver,Net,Layer,Proto。Solver负责深度网络的训练,每个Solver中包含一个训练网络对象和一个测试网络对象。每个网络则由若干个Layer构成。每个Layer的输入和输出Feature map表示为Input Blob和Output Blob。
Blob是一个不定维的矩阵,在Caffe中一般用来表示一个拉直的四维矩阵
Proto在Caffe中用于网络模型的结构定义、存储和读取。
图1-8 Caffe结构图
1.4交互式页面设计
1.4.1软件采用
本交互式页面主要采用PyQt5、Qt Designer制作的GUI可交互页面。Qt Designer程序实现界面开发的案例。包括使用Qt Designer实现程序Gui开发、使用pyuic5将.ui转换.py程序、信号与槽的配置以及实现、使用pycharm转换成可执行程序的完成过程。同时可在pycharm中通过代码进行调试,相比较其他方面,较为容易操作。
1.4.2页面介绍
此页面主要利用Label、Push Button以及信号和槽等控件和功能制作而成。通过Push Button各个功能操作按钮的实现,利用Label实现窗口的展示,可通过不同窗口观察人员的当前状态。同时可在页面上进行启动、数据查看、报警提示、紧急操作、姿态识别等功能的实现,系统的工作页面(1-10)如下图所示:
图1-10工作页面
3.5系统展示网页
用户通过GUI页面可进行账号进行登陆,登陆页面采用html文件。因为html文件可被多种浏览器识别和读取,例如谷歌、360浏览器等。通过html网页结构,将受伤人员受伤信息和康复训练信息传递给受伤人员。同时页面有下一周期的康复训练计划,和前几周的康复训练情况,对受伤人员了解自身信息较为方便。
1.5.1注册页面
用户可通过GUI页面登陆账号按钮进行登陆,若有账号可根据账号进行登陆,若无账号,则点击注册账号,进行账号注册,注册账号界面1-11如下图所示:
图1-11用户注册界面
1.5.1登陆页面
已有账号的用户,可直接输入账号进行登陆,登陆页面如图1-12所示:
图1-12登陆页面
若账号、密码输入错误会进行提示 ,同时可根据注册时的邮箱等方式进行找回密码。
3.5.2信息页面
受伤人员信息页面(如图1-13)包括康复训练时间、病人信息、受伤程度、康复阶段以及其他的受伤人员的基本信息都可进行显示,方便受伤人员查看自身信息,同时页面内还提供周期训练计划查看等信息。
图1-13 信息显示界面
需要源码可留言