一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于视觉感知的人体四肢角度检测方法及系统与流程

2023-02-04 11:58:36 来源:中国专利 TAG:


1.本发明属于计算机视觉技术领域,尤其涉及一种基于视觉感知的人体四肢角度检测方法及系统。


背景技术:

2.人体四肢角度识别是人体行为识别的一个基本问题,准确的人体四肢角度检测能够应用于感知交互应用程序的开发,仅借助摄像头就可以实现肢体交互感知。通常情况下用于人体四肢检测的方法包括借助专用体感设备、借助可穿戴运动传感器进行肢体角度分析以及基于计算机视觉方法的光学图像分析等。
3.发明人发现,借助专用体感设备的肢体检测方法需要使用额外的体感专用设备并配合对应平台的软件开发工具包(software development kit,sdk)进行软件开发,如微软的kinect体感检测设备,该设备早期用于xbox 360上的体感游戏,然而因为操作系统限制,难以在windows、linux和android等操作系统进行二次开发,虽然后续支持windows平台上的开发解决方案,但是仍然无法满足目前对于linux、android等操作系统的开发解决方案,使得人体四肢角度检测的体感交互方案的发展受限,因此,借助专用体感设备成本高昂,并且由于开发解决方案操作系统的限制,无法满足移动终端四肢角度实时检测的需求。借助可穿戴运动传感器进行肢体角度分析方法能够比较准确的识别人体肢体角度,并满足体感交互场景的需求,但是基于可穿戴设备的检测方法仍然存在三个关键缺陷:首先运动传感器的肢体角度检测方案需要进行设备佩戴,一套设备包含4~6个运动传感器,佩戴的过程比较繁琐,需要匹配传感器对应的肢体并开启各自的开关;其次,运动传感器方案存在续航问题,一般续航2~3小时后需要进行充电,这种方案的续航限制导致该方案无法大规模普及。基于计算机视觉的光学图像分析方法是一种造价比较低廉的人体四肢角度检测方案,硬件设备只需要光学摄像头进行视频数据的采集,通过计算机视觉的检测算法进行人体关键点检测,当然该方法对于算法的准确率与效率要求较高,通过边缘计算的方式实现深度神经网络并保证准确识别四肢角度完成实时互动要求仍然是一项有挑战性的工作,目前的基于计算机视觉的肢体检测方法往往在pc端实现,或者在移动端采用专有加速芯片运行。


技术实现要素:

4.本发明为了解决上述问题,提出了一种基于视觉感知的人体四肢角度检测方法及系统,本发明基于光学图像通过轻量卷积神经网络进行肢体关键点检测并通过关键点后处理实现四肢角度识别的实时检测,能够实现移动端cpu的神经网络实时推理,并且经过四肢角度检测的后处理方法后,能够直接输出计算得到上臂抬起的欧拉角度、腿抬起的欧拉角度,以及手相对于身体中心的偏移欧拉角度,同时包含人体在光学图像画面中的相对位置以及人体双手抓握物品时双手位置与人体头部以及头部与地面垂直直线的欧拉角;最后,实现了两个体感交互场景,并验证了本发明中方法的准确性与实时性。
5.为了实现上述目的,本发明是通过如下的技术方案来实现:
6.第一方面,本发明提供了一种基于视觉感知的人体四肢角度检测方法,包括:
7.获取人体的图像信息;
8.依据获取的图像信息,以及预设的姿态检测模型,得到肢体特征点;采用自低向顶的检测方式,检测各个关键点然后拼接为人体整体关键点,同时通过关键点回归的范围进行加权,只得到最靠近中心的人体关键点;
9.根据得到的肢体特征点,在考虑关键点的置信度情况下,计算得到上臂抬起的欧拉角度、腿抬起的欧拉角度,以及手相对于身体中心的偏移欧拉角度,同时计算人体相对于图像一侧的相对位置。
10.进一步的,通过图像采集设备获取图像信息,在c 层面直接加载接入所述图像采集设备。
11.进一步的,获取图像的最大边尺寸,将最大边归一化到预设值像素点;根据归一化比例,计算归一化后图像的宽度和高度;根据计算的尺寸,对图像短边进行填充。
12.进一步的,输入神经网络的数据按照均值方差进行归一化,将图像像素值减均值然后除方差;提取中心热力图特征、关键点回归坐标、关键点热力图特征和偏移量回归坐标;中心热力图乘以一个位置权重矩阵,求出最大值点的坐标作为中心点;
13.从关键点回归坐标的多个通道对应坐标位置取出多个值,然后加上中心点坐标,得到粗略的关键点位置;对于每一个粗略的关键点坐标,再生成一个以粗略的关键点坐标为中心的权重矩阵,构造好一个粗略关键点坐标最小、周边递增的权重矩阵后,再加上一个常数,然后把热力图回归结果除以权重矩阵,得到精细化的关键点坐标。
14.进一步的,当满足肩关节置信度与肘关节置信度的和小于第一预设值时,上臂抬起的欧拉角度为0;否则:
15.当肩关节置所在纵坐标位置高于或等于肘关节所在纵坐标位置时,计算肩关节与肘关节在横坐标上位置差和肩关节与肘关节在纵坐标上位置差的比值,对比值求反正切得到上臂抬起的欧拉角度;否则,计算肩关节与肘关节在横坐标上位置差和肩关节与肘关节在纵坐标上位置差的比值,对比值求反正切后再加上90度得到上臂抬起的欧拉角度。
16.进一步的,当满足胯关节置信度与膝关节置信度的和小于第二预设值时,腿抬起的欧拉角度为0;否则:
17.当胯关节置所在纵坐标位置高于或等于膝关节所在纵坐标位置时,计算胯关节与膝关节在横坐标上位置差和胯关节与膝关节在纵坐标上位置差的比值,对比值求反正切得到腿抬起的欧拉角度;否则,计算胯关节与膝关节在横坐标上位置差和胯关节与膝关节在纵坐标上位置差的比值,对比值求反正切后再加上90度得到腿抬起的欧拉角度。
18.进一步的,当满足两个腕关节置信度的和小于第三预设值时,手相对于身体中心的偏移欧拉角度为0,否则:
19.当双手腕中心点横坐标小于双肩中心点横坐标时,计算双手腕中心点与双肩中心点在横坐标上位置差和双手腕中心点与双肩中心点在纵坐标上位置差的比值,对比值求反正切后的负值为双手相对于身体中心的偏移欧拉角度;否则,计算双手腕中心点与双肩中心点在横坐标上位置差和双手腕中心点与双肩中心点在纵坐标上位置差的比值,对比值求反正切得到双手相对于身体中心的偏移欧拉角度;
20.人体相对于图像一侧的相对位置等于双肩中心点横坐标和图像宽度的比值。
21.第二方面,本发明还提供了一种基于视觉感知的人体四肢角度检测系统,包括:
22.数据采集模块,被配置为:获取人体的图像信息;
23.特征点获取模块,被配置为:依据获取的图像信息,以及预设的姿态检测模型,得到肢体特征点;采用自低向顶的检测方式,检测各个关键点然后拼接为人体整体关键点,同时通过关键点回归的范围进行加权,只得到最靠近中心的人体关键点;
24.欧拉角计算模块,被配置为:根据得到的肢体特征点,在考虑关键点的置信度情况下,计算得到上臂抬起的欧拉角度、腿抬起的欧拉角度,以及手相对于身体中心的偏移欧拉角度,同时计算人体相对于图像一侧的相对位置。
25.第三方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现了第一方面所述的基于视觉感知的人体四肢角度检测方法的步骤。
26.第四方面,本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现了第一方面所述的基于视觉感知的人体四肢角度检测方法的步骤。
27.与现有技术相比,本发明的有益效果为:
28.本发明基于光学图像通过姿态检测模型以自低向顶的检测方式进行肢体关键点检测,并通过关键点实现四肢角度识别的实时检测,能够直接计算得到上臂肘关节和肩关节等位置的欧拉角,以及能够直接计算得到下肢膝关节、胯关节与垂直地面直线的欧拉角,同时包含人体在光学图像画面中的相对位置以及人体双手抓握物品时双手位置与人体头部以及头部与地面垂直直线的欧拉角;最后,实现了两个体感交互场景,并验证了本发明中方法的准确性与实时性;本发明只需要通过图像采集设备获取图像,避免了对可穿戴运动传感器及运动传感器的使用。
附图说明
29.构成本实施例的一部分的说明书附图用来提供对本实施例的进一步理解,本实施例的示意性实施例及其说明用于解释本实施例,并不构成对本实施例的不当限定。
30.图1为本发明实施例1的肢体关键点检测网络结构;
31.图2为本发明实施例1的肢体检测coco关键点;
32.图3为本发明实施例1的肢体冲突场景流程图;
33.图4为本发明实施例1的敏捷移动场景流程图;
34.其中,0、鼻子;1、左眼;2、右眼;3、左耳;4、右耳;5、左肩;6、右肩;7、左肘;8、右肘;9、左腕;10、右腕;11、左胯;12、右胯;13、左膝;14、右膝;15、左踝;16、右踝。
具体实施方式
35.下面结合附图与实施例对本发明作进一步说明。
36.应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
37.实施例1:
38.本实施例提供了一种基于视觉感知的人体四肢角度检测方法,包括:
39.获取人体的图像信息;可以通过图像采集设备获取图像信息,在c 层面直接加载接入所述图像采集设备,图像采集设备可以选的为安卓系统摄像头或者其它摄像设备;
40.依据获取的图像信息,以及预设的姿态检测模型,得到肢体特征点;采用自低向顶的检测方式,检测各个关键点然后拼接为人体整体关键点,同时通过关键点回归的范围进行加权,只得到最靠近中心的人体关键点;
41.根据得到的肢体特征点,在考虑关键点的置信度情况下,计算得到上臂抬起的欧拉角度、腿抬起的欧拉角度,以及手相对于身体中心的偏移欧拉角度,同时计算人体相对于图像一侧的相对位置。
42.具体的,本实施例解决了在安卓终端设备进行肢体角度检测的需求,无需使用专用体感设备也不存在专用体感设备对于运行时操作系统的环境要求。解决了传感器等依赖佩戴多个运动传感器设备采集数据并分析的繁琐程序。仅需摄像头采集的光学视频信息即可进行肢体关键点的预测以及四肢角度的检测。解决了深度学习模型未能在保证精确度前提下轻便移植到边缘端及终端的问题。本实施例所提出的方法较简洁,在保证精确度前提下模型权重大小仅4.7mb,解决了模型移植到边缘端的速度和占用内存问题。解决了体感交互中四肢角度检测的实际应用需求,通过编写后处理方法实现从肢体关键点到四肢角度识别、人体在画面中位置的识别以及双手握物时在身体的相对位置。解决了算法应用过程中常用的主动调用算法时效率低下问题,实现了jni的回调接口调用,实现c 实现的算法中直接调用java回调方法实现显示解决的高效实时返回。具体的,本实施例的具体内容可以包括c 层安卓系统摄像头加载、肢体检测模型推理、四肢角度检测后处理和算法回调实时检测四部分,具体为:
43.c 层安卓系统摄像头加载,在c 层面直接加载接入安卓设备的usb摄像头,方便直接在c 层使用opencv读取与处理图像cvmat数据。传统的做法是使用使用安卓java接口读取bitmap图像数据并做处理,然后传递图像数据调用算法接口,传统方法图像数据在内存中存在两部分,并且由java到c 传递图像数据过程造成算法效率降低。本实施例中的方法一方面节省图像数据占用的内存,另一方面直接在c 层的数据读取与处理提升了运行效率,本实施例中的方法支持在c 层直接执行算法过程中在图像绘制内容并展示。
44.首先获取摄像头设备,通过调用安卓系统api实例化安卓相机管理器,通过管理器获取相机列表,从相机列表中选择一个相机id,通过相机设备管理器打开相机,实例化相机设备实例。
45.获取相机设备后,需要不断发送请求,以得到图像信息。发送请求的过程分为以下几个步骤内容:创建信息请求实例;不断发送信息请求实例并接收返回的响应数据;建立会话将信息请求实例与图像读取器建立关联;通过图像读取器接收图像数据,图像读取器实例化时指定读取图像的宽度、高度、图像类型和最大图像存储数量;预览图像,图像读取器在预览阶段,作为数据源,用于数据转换,将图像在画布上展示。
46.肢体检测模型推理,可以使用ncnn推理工具部署肢体检测模型提取肢体特征点;可以采用movenet模型作为姿态检测模型,movenet模型是一种速度快、准确率高的姿态检测模型,可检测人体的17个关键点,能够以50 fps的速度在笔记本电脑和手机上运行。movenet模型使用了mobilenetv2 fpn作为backbone,输出四个header,最后经过后处理输
出一个最靠近图片中心的人的关键点。可采用自低向顶的检测方式,检测各个关键点然后拼接为人体整体关键点,同时通过关键点回归的范围进行加权,只输出最靠近中心的一个人的关键点。网络各阶段之间使用跳跃连接以实现高、低级特征之间的平衡。姿态检测模型的数据流经过backbone、header以及后处理三部分;其中从图像数据到header输出的结构如图1所示。
47.图像数据的尺寸可以设置为(b,h,w,3),分别对应送入神经网络的批次大小、图像高度、图像宽度和图像通道数,图像数据经过由mobilenetv2结构与fpn结构组成的骨干网络获得深层特征,由于骨干网络存在残差块,使得该特征同时具有深层特征与浅层特征的信息。特征数据经过4个header结构,该由多个卷积层组成,最后输出各自维度的特征图。四个header分别为中心热力图、关键点回归、关键点热力图、偏移量回归。其中中心header的输出维度为(b,1,h,w),b对应送入网络的神经网络批次大小,在预测阶段取值为1;1代表当前图像上所有人的中心点的heatmap,因为只有一个,所以通道为1;h,w对应特征图的宽度与高度,在本实施例中输入图像大小为192*192,神经网络经过4次下采样,因此h与w的取值都为48。关键点回归header的输出维度是(b,2k,h,w),b,w,h与上述一致;2k代表k个关键点,坐标用(x,y)表示有2k个数据。热力图header的输出维度为(b,k,h,w),其中k为关键点数量,在本实施例中取值为17对应17个点的热力图。偏移量header的输出维度是(b,2k,h,w),其中2k代表k个关键点的坐标,与上述回归header的输出一致,其含义是含义是模型降采样特征图可能存在量化误差,比如192分辨率下x=0和x=3映射到48分辨率的特征图时坐标都变为了0,本header输出误差偏移量。
48.具体的,ncnn推理实施过程为:
49.图像预处理,movenet神经网络目标输入尺寸规定为(size
target
,size
target
),而摄像头读取的图像尺寸为1920*1200,为了将图像输入到神经网络,首先需要图像尺寸的预处理操作。获取图像的最大边尺寸,将最大边归一化到192像素点,计算归一化比例公式:
[0050][0051]
其中,scale为缩放比例。
[0052]
获得归一化比例以后,变换后的图像宽度计算公式:
[0053][0054]
变换后的高度计算公式为:
[0055][0056]
根据图像变换后的尺寸,对图像进行resize操作,其图像大小为(w

,h

),该图像无法满足神经网络输入尺寸(size
target
,size
target
)的需求,因此需要对图像短边进行填充操作,计算填充尺寸的计算公式如下:
[0057]
[0058]
获取短边填充尺寸后,图像短边进行pad/2尺寸的零填充,填充后的图像尺寸符合movenet神经网络输入尺寸要求。
[0059]
初始化神经网络推理器,首先构建ncnn推理引擎的net实例,配置神经网络占用的cpu计算资源、配置线程数量。最后加载神经网络权重文件,权重文件包括param模型网络结构文件以及bin参数文件。
[0060]
图像归一化,输入神经网络的数据需要按照均值方差进行归一化,将图像像素值减均值然后除方差。
[0061]
图像推理,将前述归一化后的图像输入到卷积神经网络input节点,ncnn推理引擎自动执行推理过程,从网络结构中提取中心热力图特征、关键点回归坐标、关键点热力图特征以及偏移量回归坐标。
[0062]
header输出特征的后处理,首先对于热力图特征和中心热力图特征,需要求一个sigmoid,主要是保证取值范围,因为后续步骤要乘位置权重。对于中心热力图,我们乘以一个位置权重矩阵,维度大小为48x48,其数值是一个中心点高亮的高斯核。对于我们检测出所有的可能的中心点,通过乘以这样一个中心位置加权矩阵,可以提高靠近中心的人物权重,有助于最终检测一个最靠近图像中心的人体。乘以权重后,通过argmax操作求出最大值点的坐标,这就是最终检测目标的中心点。从关键点回归坐标的多个通道对应坐标位置取出多个值,然后加上中心点坐标,得到粗略的关键点位置,比如拿到这个坐标就可以从关键点回归坐标的2k个通道对应坐标位置取出2k个值,然后加上中心点坐标,这就得到粗略的关键点位置。它的实际作用是,对于每一个粗略的关键点坐标,再生成一个以这个坐标点为中心的权重矩阵。构造好一个粗略关键点坐标最小、周边递增的权重矩阵后,再加上一个常数防止除0,然后就把热力图回归结果除以这个权重矩阵,再分别通过k个通道求argmax,得到精细化的关键点坐标。最后再根据坐标点去偏移量回归坐标中对应坐标位置取出偏移的值加上即可得到最终输出,其置信度为关键点热力图经过sigmoid后的取值。
[0063]
四肢角度检测后处理:经过神经网络推理以及header数据后处理后,可以获得肢体关键点以及关键点对应的置信度,本实施例中检测的肢体关键点可以采用coco数据格式;为了满足体感交互场景需求,本实施例实现了左手臂抬起欧拉角识别、右手臂抬起欧拉角识别、左腿抬起欧拉角识别、右腿抬起欧拉角识别、人体在图像中的相对位置以及双手抓握物品时双手坐标与身体的相对位置。肢体关键点位置、标号以及肢体检测角度如图2所示,coco肢体数据格式共有17个关键点,分别对对应鼻子0、左眼1、右眼2、左耳3、右耳4、左肩5、右肩6、左肘7、右肘8、左腕9、右腕10、左胯11、右胯12、左膝13、右膝14、左踝15和右踝16。
[0064]
当满足肩关节置信度与肘关节置信度的和小于第一预设值0.6时,上臂抬起的欧拉角度为0;否则:当肩关节置所在纵坐标位置高于或等于肘关节所在纵坐标位置时,计算肩关节与肘关节在横坐标上位置差和肩关节与肘关节在纵坐标上位置差的比值,对比值求反正切得到上臂抬起的欧拉角度;否则,计算肩关节与肘关节在横坐标上位置差和肩关节与肘关节在纵坐标上位置差的比值,对比值求反正切后再加上90度得到上臂抬起的欧拉角度;具体为:
[0065]
因为在实际的检测中,并非所有的肢体关键点都可以被检测到,因此在计算角度时需要考虑关键点的置信度,排除因虚假关键点导致的角度识别错误的问题。具体的计算
过程可以参照公式,左手臂抬起欧拉角度计算公式,当满足公式score5 score7《0.6时,取左臂抬起欧拉角度为0,因为左手肘与左肩膀检测置信度score过低,否则按照以下公式计算左手臂抬起的欧拉角度:
[0066][0067]
类似的,当满足公式score6 score8《0.6时,取右臂抬起欧拉角度为0,因为右手肘与右肩膀检测置信度过低,否则按照以下公式计算由手臂抬起的欧拉角度:
[0068][0069]
当满足胯关节置信度与膝关节置信度的和小于第二预设值1时,腿抬起的欧拉角度为0;否则:当胯关节置所在纵坐标位置高于或等于膝关节所在纵坐标位置时,计算胯关节与膝关节在横坐标上位置差和胯关节与膝关节在纵坐标上位置差的比值,对比值求反正切得到腿抬起的欧拉角度;否则,计算胯关节与膝关节在横坐标上位置差和胯关节与膝关节在纵坐标上位置差的比值,对比值求反正切后再加上90度得到腿抬起的欧拉角度;具体为:
[0070]
对于左腿抬起欧拉角度计算,当满足公式score
11
score
13
《1时,取左腿抬起欧拉角度为0,因为左跨与左膝盖检测置信度过低,否则按照以下公式计算左腿抬起的欧拉角度:
[0071][0072]
对于右腿抬起欧拉角度计算,当满足公式score
12
score
14
《1时,取右腿抬起欧拉角度为0,因为右跨与右膝盖检测置信度过低,否则按照以下公式计算右腿抬起的欧拉角度:
[0073][0074]
当满足两个腕关节置信度的和小于第三预设值0.6时,手相对于身体中心的偏移欧拉角度为0,否则:当双手腕中心点横坐标小于双肩中心点横坐标时,计算双手腕中心点与双肩中心点在横坐标上位置差和双手腕中心点与双肩中心点在纵坐标上位置差的比值,
对比值求反正切后的负值为双手相对于身体中心的偏移欧拉角度;否则,计算双手腕中心点与双肩中心点在横坐标上位置差和双手腕中心点与双肩中心点在纵坐标上位置差的比值,对比值求反正切得到双手相对于身体中心的偏移欧拉角度;具体的:
[0075]
对于双手抓握物品时相对于身体位置的计算方法仍然可以使用欧拉角表示,计算双肩中心点坐标记为(x
shoulder
,y
ehoulder
),同时计算双手腕中心点坐标(x
wrist
,y
wrist
),通过双手腕中心点坐标与双肩中心点坐标以及垂直地面的直线的欧拉角表达双手偏离身体的程度。双肩中心点坐标的计算公式为:
[0076][0077]
双手中心点坐标的计算公式为:
[0078][0079]
双手相对于身体中心的偏移角度,当满足公式score9 score
10
《0.6时,取偏移欧拉角度为0,因为左腕与右腕检测置信度过低,否则按照以下公式计算双手偏离的欧拉角度:
[0080][0081]
计算结果的欧拉角度代表双手持物时相对于身体中心的偏离程度,当双手位于身体中心左侧时该夹角为负值、当双手位于身体右侧时该夹角为正值。
[0082]
计算身体在画面中的相对位置,当满足公式score5 score6《1时,取身体在画面中的位置比例为0,即表示未检测到人体,因为左肩与右肩检测置信度过低,否则按照以下公式计算人体相对于画面左侧的相对位置:
[0083][0084]
其中w为图像宽度,计算结果取值范围为[0,1],对应画面的最左侧与最右侧。
[0085]
算法回调实时检测:在安卓操作系统中嵌入c 算法有助于提升算法逻辑的运行效率,传统的算法调用方式是java层组织参数传递给jni接口调取算法并返回结果,本实施例中涉及计算机视觉的算法,因为视频数据不断传入,调用算法的频次很高,因此通过java主动调用的方式需要经过以下流程:相机读取视频javaapi-处理bitmap文件-传递bitmap到jni算法接口、在c 层将bitmap图像转换为cvmat类型-调用检测逻辑获取肢体角度检测结果-将处理后的cvmat图像转换为bitmap-通过jni返回检测结果与处理后的图像。通过该方式有两个缺陷,首先java需要反复调用算法接口才能保证有实时画面输出,这种算法调用方式对于处理视频数据并不友好;其次使用主动调用的方式导致数据处理路线变长,图像数据通过两次jni传递,既影响运行效率又占用运行内存。
[0086]
本实施例提出使用算法jni回调的方式实现自动实时调用,jni中不再传递图像数据,图像读取以及算法调用都在c 中进行。具体的技术方案如下:
[0087]
在java层构建回调接口类,接口类内定义算法调用方法,该方法传参内容为检测结果的数组。
[0088]
编写设置回调的jni方法,传递回调接口的实例对象,后续通过在java中重写算法调用接口即可以获取算法检测结果。
[0089]
在c 中编写设置回调jni的native逻辑,为了保证回调方法能够在c 中跨线程调用,需要定义全局的jobject引用以及算法调用方法的jmethodid引用。在设置回调jni方法中为全局jobject引用幅值,然后通过jobject获取回调接口类,再从回调接口类中读取算法调用方法的jmethodid。具有全局jobject引用以及算法调用方法的jmethodid引用即可在c 调用java方法。
[0090]
编写jni调用的初始化方法,建立全局的java虚拟机jvm引用,在初始化方法中为全局jvm赋值。
[0091]
编写算法调用方法的c 逻辑,首先排除异常,验证jvm、jobject以及jmethodid是否为空,当三者不为空说明已经成功设置回调,此时算法调用方法进行c 数值类型到java数值类型的转化与传递,完成算法逻辑的jni调用。
[0092]
在算法运行了逻辑中加入算法调用方法,当算法逻辑运行调用算法的检测结果能够实时反馈给java,java层不需要进行主动调用,仅重写算法调用方法即可对检测结果进行处理。
[0093]
本实施例提出的基于视觉感知的人体四肢角度检测方法可以准确识别人体肢体关键点,并且能够直接返回能够直接输出上臂肘关节-肩关节-腰部三个点的欧拉角以及下肢膝关节-胯关节与垂直地面直线的欧拉角,同时包含人体在光学图像画面中的相对位置以及人体双手抓握物品时双手位置与人体头部以及头部与地面垂直直线的欧拉角。该方法的运行效率极高,在安卓手机处理器上能够达到30fps的视频处理效率,满足实时感知交互的需求。
[0094]
可选的,通过肢体关键点检测以及相关的后处理操作,能够通过计算机视觉方案实时获取人体四肢角度以及人体在画面中的位置,因此本实施例以具体两个场景阐述算法的应用场景。
[0095]
第一个应用场景,可以用于多动症儿童训练的肢体冲突训练场景的体感交互;交互场景内容为一个虚拟卡通形象,当训练场景开始时,该形象会开始随机的做操动作,做操的内容为抬起左右手臂随机抬起45度、90度、135度,以及左右腿随机抬起。当卡通角色抬起对应肢体后等待参与训练的人员模仿动作,当动作模仿达标后继续进入下一个动作,直到交互训练场景结束,统计参与儿童肢体模仿的速度以及肢体模仿的正确率。该训练场景依据go/nogo范式(go/nogo paradigm)设计,该场景是研究反应停止能力的一种常用范式。此任务通常是随机交替呈现两个不同的字母或图案,要求被试对其中的某个刺激作反应(所谓的go反应),而对另一个刺激不反应(所谓的no go反应)。对no go刺激的错误反应通常被认为是反应停止困难的一项指标。其特点是:排除了刺激概率对erp的影响,由于没有大小概率之分,大大节省了实验的时间。
[0096]
交互训练场景交互依赖四肢角度检测方法,其基本逻辑见肢体冲突训练场景流程图。通过场景实现,本实施例能够在交互场景中达到30fps的检测速度,能够实现实时交互。
[0097]
第一个应用场景,可以用于用于多动症儿童训练的敏捷移动训练场景的体感交互;交互场景内容为一个虚拟卡通形象手持筐子接住掉落的水果,当训练场景开始时,屏幕上方会随机掉落水果,该形象需要左右移动使用手中的筐子接住水果,当卡通形象成功接
住水果记为成功,反之若水果掉落到地面则记为失败,训练结果的评分将受影响,另外,除了掉落水果以外,还会掉落炸弹道具,卡通形象需要躲避炸弹,若躲避失败则进行分数惩罚,导致训练的评分降低。该训练场景依据心理学实验中的停止信号任务(stop signal task,sst),这是是用来测量认知控制能力强弱的一种范式,主要测验方法是出现代表go信号的刺激做出要求的反应,出现stop信号的刺激则不做出反应。
[0098]
交互训练场景交互依赖人体在画面中的位置检测方法以及双手在身体的相对位置,其基本逻辑见敏捷移动训练场景流程图。通过场景实现,能够在交互场景中达到30fps的检测速度,能够实现实时交互。
[0099]
实施例2:
[0100]
本实施例提供了一种基于视觉感知的人体四肢角度检测系统,包括:
[0101]
数据采集模块,被配置为:获取人体的图像信息;
[0102]
特征点获取模块,被配置为:依据获取的图像信息,以及预设的姿态检测模型,得到肢体特征点;采用自低向顶的检测方式,检测各个关键点然后拼接为人体整体关键点,同时通过关键点回归的范围进行加权,只得到最靠近中心的人体关键点;
[0103]
欧拉角计算模块,被配置为:根据得到的肢体特征点,在考虑关键点的置信度情况下,计算得到上臂抬起的欧拉角度、腿抬起的欧拉角度,以及手相对于身体中心的偏移欧拉角度,同时计算人体相对于图像一侧的相对位置。
[0104]
所述系统的工作方法与实施例1的基于视觉感知的人体四肢角度检测方法相同,这里不再赘述。
[0105]
实施例3:
[0106]
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现了实施例1所述的基于视觉感知的人体四肢角度检测方法的步骤。
[0107]
实施例4:
[0108]
本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现了实施例1所述的基于视觉感知的人体四肢角度检测方法的步骤。
[0109]
以上所述仅为本实施例的优选实施例而已,并不用于限制本实施例,对于本领域的技术人员来说,本实施例可以有各种更改和变化。凡在本实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本实施例的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献