掌桥专利:专业的专利平台
掌桥专利
首页

一种基于卷积神经网络检测青少年坐姿行为的方法

文献发布时间:2023-06-19 16:09:34



技术领域

本发明涉及图像处理与计算机视觉技术领域,具体涉及一种基于卷积神经网络检测青少年坐姿行为的方法。

背景技术

随着我国青少年近视率的上升,社会上涌现出了一些用于检测青少年坐姿的检测系统。目前的坐姿检测系统包括非智能化坐姿检测系统和智能化坐姿检测系统。

非智能化坐姿检测系统一般为通过穿戴设备来强制矫正坐姿,这种强制行为对于养成良好坐姿习惯的进度缓慢,出现贴身穿戴的不舒适感、离开设备的不适应等问题,且长期佩戴这种穿戴设备对身体有一定损伤。同时,普通的物理调姿器(穿戴设备)会束缚住孩子的行为,导致孩子对其产生厌倦情绪,家长不在的时候孩子容易偷懒。

智能化坐姿检测系统主要通过实时获取图像信息,偏头角度、用眼距离,结合蓝牙等技术进行通信,传输距离较短,需要监护人在附近,所起到的实用性较弱;反馈结果主要由安卓APP、网页端给用户端呈现,但用户端获取信息程序复杂、系统成本较高。

针对于青少年坐姿提醒系统,现在市面上少有能够量产且低成本、低复杂度的相关产品,而且相关坐姿提醒系统论文、专利的运用大多以骨骼点检测、目标检测、卷积神经相结合作为坐姿检测的核心部分,虽然识别精度较高,但对于硬件设备的性能要求、系统的成本也随之提高,所以目前很少能在市面上找到完整的、已付诸实际运用场景的坐姿检测系统,更多的是运用特殊材料制成的特定形状的设备,通过设备形状从物理上来强制改善坐姿。

如何提供一个低成本、远距离的智能检测方法,实时检测青少年坐姿问题,并获取不良坐姿信息,从而记录、反馈、提醒,避免离开设备不适应性、养成自我纠正坐姿的习惯,是智能检测所面临的问题。

发明内容

本发明提供一种基于卷积神经网络检测青少年坐姿行为的方法,采用卷积神经网络yolov5算法,并将识别检测到的数据汇总计算最终呈现在微信小程序端,监护人和用户可以随时通过小程序远程查看一定时间内的坐姿数据和提醒记录,摆脱了蓝牙技术距离的束缚。

本发明通过下述技术方案实现:

一种基于卷积神经网络检测青少年坐姿行为的方法,包括:

S1、收集各种场景下的人物的坐姿图片作为第一坐姿数据集;

S2、使用标注软件对所述第一坐姿数据集中的坐姿图片进行类别标注,所述类别包括正确坐姿和错误坐姿;

S3、对所述第一坐姿数据集中的坐姿图片进行图片增强处理得到第二坐姿数据集;

S4、基于Yolov5s模型构建卷积神经网络,在预测框的筛选部分采用soft-NMS算法代替原有的Yolov5s模型的NMS算法;

S5、将所述第二坐姿数据集输入至设置了超参数的YOLOv5模型进行迭代训练,当训练结果的准确度与精确度达到要求时即可停止迭代训练,得到训练好的Yolov5s模型;

S6、将训练好的Yolov5s模型部署到Jetson Nano嵌入式开发板上并利用TensorRT加速推理;

S7、通过jetson nano嵌入式开发板连接的摄像头获取捕捉到的帧画面,并将采集到的帧画面输入至训练好的Yolov5s模型进行比对,若判断坐姿正确,则继续监测,若在一段时间内连续检测到人物错误坐姿,则将错误信息传输至微信小程序端进行数据分析展示,同时进行声光提醒。

作为优化,所述各种场景包括正在上课的课堂上以及在学校或者在家做作业时。

作为优化,S2中的标注软件为labelImg软件。

作为优化,所述错误坐姿包括弯腰驼背、跷二郎腿、搭腿、盘腿以及身体前倾。

作为优化,S3中,对图片做增强处理主要包括对图片进行翻转、旋转、平移、随机缩放、随机裁剪、随机排布、颜色操作。

作为优化,S4中,所述soft-NMS算法为在NMS算法的基础上采用连续的高斯置信度降低策略得到:

其中,Si为置信度,M为当前最大置信度的边界框,b为待处理的边界框。

作为优化,S5的具体步骤包括:

S5.1、将标注后的所述第二坐姿数据集的xml文件转换成yolo_txt文件,即将每个xml文件标注提取的box信息保存为txt格式;

S5.2、通过脚本将txt格式的所述第二坐姿数据集以8:1:1的比例随机划分为训练集、验证集和测试集并生成label标签;

S5.3、配置数据集文件,用于存放划分后的所述训练集和验证集的数据;

S5.4、根据第二坐姿数据集,通过聚类得出新的先验框;

S5.5、修改yolov5s模型的配置文件yolov5s.yaml,将类别数nc改为2,将原有的先验框改为S5.4生成的新的先验框;

S5.6、设置yolov5s模型的一般参数和超参数,将训练集和测试集输入至所述yolov5s模型以对所述yolov5s模型进行训练,并通过验证集对训练后的所述yolov5s模型进行验证;

S5.7、根据所述yolov5s模型训练结束时输出的查准率、查全率和以损失函数值围成的曲线作为评价指标,若评价指标大于规定的阈值,则停止训练,同时,所述yolov5s模型生成.pt权重模型文件,否则,重复S5.6。

作为优化,所述yolov5s模型的一般参数包括权重、数据集配置、迭代次数、一次训练所选取的样本数、图片尺寸;所述超参数包括初始学习率、循环学习率、学习率动量、权重衰减系数、预热学习、预热学习率动量、预热学习率、iou损失系数、分类损失系数、分类BCELoss中正样本的权重、有无物体损失的系数、有无物体BCELoss中正样本的权重、iou训练时的阈值、先验框的长宽、每个输出层的先验框数量。

作为优化,S6的具体步骤为:

S6.1、通过github克隆TensorRTx项目,以将S5.7生成的.pt权重模型文件转换为.wts文件,同时,在Jetson Nano嵌入式开发板上克隆TensorRTx项目,使用TensorRT项目将.wts文件转为.engine文件;

S6.2、在Jetson Nano嵌入式开发板下载并安装DeepStream,修改nvdsparsebbox_Yolo.cpp文件中的类型和数量,然后保存在Jetson Nano嵌入式开发板连接的存储器内并编译。

作为优化,S7中,在一段时间内连续检测到人物错误坐姿,则将错误信息传输至微信小程序端进行数据分析展示,同时进行声光提醒的具体步骤为:

S7.1、将每次的检测开启时间、检测结束时间、当次错误坐姿的开始时间、当次错误坐姿的结束时间以及时长记录到存储器的本地文件中;

S7.2、将文件上传到微信小程序端进行数据分析展示,同时,判定进行声光报警提醒;

S7.3、若人物纠正坐姿,则继续进行正常的视频采集,否则,通过无线网络传输至监护人的微信小程序端以远程告知监护人。

本发明与现有技术相比,具有如下的优点和有益效果:

通过本发明的方法,监护人可随时随地通过微信小程序观看青少年坐姿情况和历史坐姿记录情况,同时,使用jetson nano嵌入式系统方便安装调试,成本低,能较好可实时检测被监测对象坐姿,本地记录处理,信息通过无线网络进行传输克服距离障碍,且jetsonnano嵌入式系统能与微信小程序结合,可使监护人实时观测。

附图说明

为了更清楚地说明本发明示例性实施方式的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。在附图中:

图1为本发明所述的一种基于卷积神经网络检测青少年坐姿行为的方法的方法流程图;

图2为以损失函数值和查准率查全率围成的曲线作为评价指标的示意图;

图3为训练结束后各指标的示意图;

图4为图片增强的流程图;

图5为与Jetson Nano嵌入式开发板连接的元器件的连接示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

实施例

一种基于卷积神经网络检测青少年坐姿行为的方法,包括:

S1、收集各种场景下的人物的坐姿图片作为第一坐姿数据集;所述各种场景包括正在上课的课堂上以及在学校或者在家做作业时,而人物对象则为不同年龄段、不同着装的人。

S2、使用labelImg软件对所述第一坐姿数据集中的坐姿图片进行类别标注,所述类别包括正确坐姿(标注值:good)和错误坐姿(标注值:bad);错误坐姿包括但不限于弯腰驼背、跷二郎腿、搭腿、盘腿以及身体前倾。

在使用软件标注时,是根据主观判断坐姿的正确与否,将人体坐姿整体框下来,生成含有照片文件名、文件位置、框取位置坐标、分类种类(正确坐姿,错误坐姿)等信息的xml文件。

S3、对所述第一坐姿数据集中的坐姿图片进行图片增强处理得到第二坐姿数据集以丰富第一坐姿数据集,减少被检测对象所在位置,场景光强度、色调等因素对识别效果的影响;增强处理主要包括对图片进行翻转、旋转、平移、随机缩放、随机裁剪、随机排布、颜色操作。

数据增强的系数有:色调,饱和度,亮度,旋转角度,平移,图像缩进,图像剪切,透明度,上下翻转的概率,左右翻转的概率,图像拼接的概率,图像混叠的概率。

接下来,对图片的某些增强处理实现代码进行介绍、

翻转包括水平翻转、垂直翻转和对角线翻转,具体代码如下:

旋转代码:

对图像做一定角度的旋转操作,代码如下:

缩放比例代码:

随机选取图像的一部分,然后将其缩放到原图像尺度。

平移变换代码:

图像整体平移一段距离

颜色变换代码:

图片进行增强处理的过程如图4所示,为现有技术,这里就不再赘述了。

S4、基于Yolov5s模型构建卷积神经网络,在预测框的筛选部分采用soft-NMS算法代替原有的Yolov5s模型的NMS算法,使图片存在有遮挡的情况下让检测结果更加精准。

目标检测中NMS(Non-Maximum Suppression)的基本思想是:利用得分高的边框抑制得分低且重叠度(IoU)高的边框.但基本的NMS虽然简单有效,可在某些特殊要求场景下,存在以下缺陷:

1、简单地过滤掉得分低且重叠度高的边框可能会导致漏检问题,比如密集和拥挤情况下,容易漏检,降低召回率;

2、NMS阈值无法确定:如果阈值较低,则很容易将本属于两个物体的预测框抑制掉一个,造成漏检,而阈值过高,很可能会在两个物体之间多了一个错误预测框,造成误检;

3、将得分作为衡量标准:某些情况下,得分高的边框不一定位置更准,此衡量标准待考虑;

4、执行速度:NMS的实现存在较多循环判断步骤,擅长并行化处理的GPU执行效率不高。

因此,采用soft-NMS算法代替原有的Yolov5s模型的NMS算法,具体的soft-NMS算法为在NMS算法的基础上采用连续的高斯置信度降低策略得到一种合理的得分衰减方法,具体的策略公式如下:

其中,Si为置信度,M为当前最大置信度的边界框,b为待处理的边界框。

采用这种得分衰减方法,对于某些得分很高的边框来说,即使在NMS阶段被降分,在后续的计算中,还有可能被作为正确的检测框机会.理论上可以有效提升物体检测的精度和召回率,通过使用soft-NMS代替yolov5中所使用的加权nms在此应用场景下达到更高的精准率。

S5、将所述第二坐姿数据集输入至设置了超参数的YOLOv5模型进行迭代训练,当训练结果的准确度与精确度达到要求时即可停止迭代训练,得到训练好的Yolov5s模型。

具体的训练过程如下:

S5.1、将标注后的第二坐姿数据集的xml文件转换成yolo_txt文件,即将每个xml文件标注提取的box信息保存为txt格式;文件每一行为一个目标的信息,包括class,x_center,y_center,width,height格式,例如:0 0.5942708333333333 0.49908088235294120.48854166666666665 0.9981617647058824;

S5.2、通过脚本将txt格式的所述第二坐姿数据集以8:1:1的比例随机划分为训练集、验证集和测试集并生成label标签,以用于S5.6的训练中;

S5.3、配置数据集文件,用于存放划分后的所述训练集和验证集的数据(例如训练集的数据和验证集的数据分别为记录在train.txt和val.txt文档中);数据集文件通常为xxx.yaml文件,数据集文件的名称可以自定义命名。

例如:

train:/home/trainingai/zyang/yolov5/paper_data/train.txt

val:/home/trainingai/zyang/yolov5/paper_data/cal.txt

#number of classes

nc:2

#class names

Names:[‘a’,‘b’]

S5.4、根据第二坐姿数据集,通过聚类得出新的先验框(anchors);

重新计算符合第二坐姿数据集的先验框,是利用kmean聚类算法实现的,其算法流程如下:

1.从第二坐姿数据集中随机选取K个点作为初始聚类的中心,中心点为C={c

2.针对第二坐姿数据集中每个样本xi,计算它们到各个聚类中心点的距离,到哪个聚类中心点的距离最小,就将其划分到对应聚类中心的类中;

3.针对每个类别i,重新计算该类别的聚类中心

4.重复第2步和第3步,直到聚类中心的位置不再发生变化,当然,也可以设置迭代次数来完成聚类。

S5.5、修改yolov5s模型的配置文件yolov5s.yaml,将类别数nc改为2,将原有的先验框改为S5.4生成的新的先验框;

代码如下:

S5.6、设置yolov5s.yaml模型的一般参数和超参数,将训练集和测试集输入至所述yolov5s.yaml模型以对所述yolov5s.yaml模型进行训练,并通过验证集对训练后的所述yolov5s.yaml模型进行验证。

所述yolov5s.yaml模型的一般参数包括权重(weights)、数据集配置(data)、迭代次数(epochs)、一次训练所选取的样本数(batch-size)、图片尺寸(imgsz);所述超参数包括学习率、损失系数。

S5.7、根据所述yolov5s.yaml模型训练结束时输出的查准率、查全率和以损失函数值围成的曲线作为评价指标,若评价指标大于规定的阈值,则停止训练,同时,所述yolov5s.yaml模型生成.pt权重模型文件,否则,重复S5.6。

每完成一次迭代次数的训练,会输出查准率和查全率,以损失函数值和查准率查全率围成的曲线作为评价指标,当precision(查准率)、recall(查全率)>0.95,mAP_0.5>0.95,mAP_0.5:0.95>0.85即可停止训练生成.pt权重模型文件,生成的曲线如图3和4。

S6、将训练好的Yolov5s模型部署到Jetson Nano嵌入式开发板上并利用TensorRT加速推理。

具体过程为:

S6.1、在电脑上通过github克隆TensorRTx项目,以将S5.7生成的.pt权重模型文件转换为.wts文件,同时,在Jetson Nano嵌入式开发板上克隆TensorRTx项目,使用TensorRT项目将.wts文件转为.engine文件;

S6.2、在Jetson Nano嵌入式开发板下载并安装DeepStream,修改nvdsparsebbox_Yolo.cpp文件中的类型和数量,然后保存在Jetson Nano嵌入式开发板连接的存储器内并编译。

nvdsparsebbox_Yolo.cpp通过github克隆Yolov5-in-Deepstream-5.0项目,进入文件夹Yolov5-in-Deepstream-5.0/Deepstream 5.0/nvdsinfer_custom_impl_Yolo/目录下即可找到nvdsparsebbox_Yolo.cpp文件。在此文件中将static const int NUM_CLASSES_YOLO的值改为2即可(含义就是这个yolo模型只识别两个类别(此处两个类别是正确坐姿和错误坐姿))。

这样,在使用训练好的yolov5s.yaml模型进行推理时,TensorRT对网络结构进行了重构,推理框架统一化,方便部署。

S7、通过jetson nano嵌入式开发板连接的摄像头获取捕捉到的帧画面,并将采集到的帧画面输入至训练好的Yolov5s模型进行比对,若判断坐姿正确,则继续监测,若在一段时间内连续检测到人物错误坐姿,则将错误信息传输至微信小程序端进行数据分析展示,同时进行声光提醒(连接在Jetson Nano嵌入式开发板上的扬声器可播放相关音频)。

具体过程为:

S7.1、将每次的检测开启时间、检测结束时间、当次错误坐姿的开始时间、当次错误坐姿的结束时间以及时长记录到存储器的本地文件中;

S7.2、将文件上传到微信小程序端进行数据分析展示,同时,判定进行声光报警提醒;

S7.3、若人物纠正坐姿,则继续进行正常的视频采集,否则,通过无线网络传输至监护人的微信小程序端以远程告知监护人。

检测时,会将警告次数、时间等数据进行汇总同步到微信小程序端,同时检测画面也可同步在微信小程序端实时展示;检测完毕后会将检测时长、警告次数等信息以短信的方式发送到监护人的手机上。

与Jetson Nano嵌入式开发板连接的各电子器件如图5所示。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120114728959