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

一种基于树莓派的轻量化的人体姿态评估方法及控制方法

2022-11-19 09:57:03 来源:中国专利 TAG:


1.本发明涉及人体姿态评估技术领域,尤其涉及一种基于树莓派的轻量化的人体姿态评估方法及控制方法。


背景技术:

2.随着机器学习与深度学习的发展,不断有新的模仿学习算法和人体姿态识别算法提出,现有算法或者模型虽然提高了对人体动作模仿地识别精度,但是算法复杂度高,需要不断地采集并处理大量的图像信息,进行巨大的数据运算并实时识别出人体姿态动作,这对处理器芯片的计算处理能力有了更大的要求;处理器芯片必然会带来机器人生产成本的上升,不利于人形机器人在各个领域的广泛推广和应用;
3.树莓派的体积小、价格低廉、性价比高、便携性好、可编程、可联网,且支持多种外设,用树莓派来作为机器人核心,如果同时进行姿态识别和对机器人的舵机进行控制,会造成识别帧率不高、实时性差,姿态识别效果差,从而造成机器人实时动作模仿效果不佳;
4.另外,由于卷积神经网络的发展,越来越多的人体姿态评估网络模型不断涌现,对于人体关节点的检测越来越精准,然而目前仍有很多的问题亟待解决,例如:针对实时性要求很高的检测场景,模型检测的实时性却较差。有的算法模型结构冗余,计算效率较低,占用设备资源较多,无法实现人体姿态评估的精准性和实时性之间的平衡。


技术实现要素:

5.针对现有算法的不足,本发明通过轻量化的人体姿态评估算法,实现人体姿态的准确识别,解决了现有算法网络结构冗余,计算效率低的问题;另外,通过socket技术实现树莓派与机器人摄像头、总线舵机和pc机之间的交互,使图像处理与控制相互独立,解决树莓派单机处理能力不足的问题。
6.本发明所采用的技术方案是:一种基于树莓派的轻量化的人体姿态评估方法,包括以下步骤:
7.步骤一、构建轻量化的人体姿态估(lightweight openpose)网络,对人体姿态图像进行识别,并绘制出人体骨骼框架;
8.进一步的,具体包括:
9.首先采用mobilenet主干网络提取人体姿态图片特征给stage模块;其次,构建lightweight openpose卷积,采用3个连续的1x1,3x3,3x3卷积,其中,3x3卷积的扩张卷积率分别为1和2;再其次,建立两级轻量化模块,轻量化模块包括lightweight openpose卷积、关键点置信图和关键点亲和力场模块,初级轻量化模块的输出作为次级轻量化模块的输入,通过对人体姿态的关键点和复杂的关键点进行两次检测,实现渐进优化。
10.进一步的,关键点置信图的计算公式为:
11.12.其中,公式(1)中为个体k产生的置信图,x
j,k
∈r2表示个体k关键点部位j的真实位置,σ控制峰值的传播;
13.网络预测的置信图的计算公式为:
[0014][0015]
通过最大操作将各个置信图聚合在一起。
[0016]
进一步的,关键点亲和力场用于描述不同关键点之间的亲和力,利用关键点亲和力场完成各个关键点与对象的划分。
[0017]
步骤二、根据人体骨骼框架,通过向量角度计算出各关节的角度;
[0018]
进一步的,向量角度计算公式为:
[0019][0020]
其中,把关节两端的点命名为a,b,xa是a点的x轴坐标,ya是a点的y轴坐标,xb是b点的x轴坐标,yb是b点的y轴坐标;
[0021]
关节角度计算的实现是基于二维平面,采用向量求解的方法进行关节角度的计算,该方法的计算速度和计算量都有优势,然后再把关节角度值转化为位置信息。
[0022]
步骤三、根据各关节的角度求出机器人舵机需要转动的位置信息,并采用pid控制舵机进行动作模仿;
[0023]
进一步的,舵机需要转动的位置的公式为:
[0024]
pos=(θ/240)
×
1000
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)。
[0025]
进一步的,基于树莓派的轻量化的人体姿态评估方法的控制方法,包括:
[0026]
将人体姿态图像信息通过socket传输给pc机,建立树莓派和pc机之间的socket通信;
[0027]
pc机通过轻量化的人体姿态估算法对人体姿态图像进行处理,并将处理的结果返回给树莓派,树莓派通过pid控制实现机器人的动作模仿。
[0028]
进一步的,pid控制具体包括:
[0029]
初始化pid的k
p
、ki、kd参数,在舵机运行时加入时间函数,计算连续两次舵机当前角度与目标角度差之间的变化误差,将变化时间与采样时间进行比较,若变化时间大于0,将变化误差乘以k
p
和kd,更新pid参数。
[0030]
本发明的有益效果:
[0031]
1、考虑到在动作模仿过程中实时性的重要,采用lightweight openpose人体姿态评估算法,相对于2阶的openpose,参数量只有15%,实时性较好;同时采用两级结构相同的轻量化模块,分别对简单的关键点和复杂的关键点进行检测,实现网络的渐进优化。
[0032]
2、考虑到机器人的运动控制方法要满足结构简单、易于部署在移动设备上、算法实时性高、具有较好鲁棒性等要求,采用pid控制方法对机器人的总线舵机进行控制,算法简单、鲁棒性好和可靠性高等特点,能够进行精准控制,减小机器人动作的误差,避免因为机器人动作过大而导致发生碰撞。
附图说明
[0033]
图1是本发明的lightweight openpose网络结构图;
[0034]
图2是本发明的控制方法流程图;
[0035]
图3是本发明的socket网络传输流程图;
[0036]
图4是本发明的手肘关节角度示意图。
具体实施方式
[0037]
下面结合附图和实施例对本发明作进一步说明,此图为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
[0038]
一种基于树莓派的轻量化的人体姿态评估方法包括以下步骤:
[0039]
步骤一、构建lightweight openpose网络,对人体姿态图像进行识别,并绘制出人体骨骼框架;
[0040]
lightweight openpose是由openpose模型朝着轻量化方向改进而来,图1为本发明的lightweight openpose网络结构图;
[0041]
首先采用mobilenet主干网络提取人体姿态图片特征给stage模块;其次,构建lightweight openpose卷积,采用3个连续的1x1,3x3,3x3卷积,其中,3x3卷积的扩张卷积率分别为1和2;再其次,建立两级轻量化模块,轻量化模块包括lightweight openpose卷积、关键点置信图和关键点亲和力场模块,初级轻量化模块的输出作为次级轻量化模块的输入,通过对人体姿态的简单关键点和复杂的关键点进行两次检测,实现渐进优化。
[0042]
关键点置信图和关键点亲和力场都会进行损失求解,所有损失求和得出整个网络的总损失;鉴于关键点之间相互有语义信息即关键点检测难易程度不一样,简单的关键点如眼睛,鼻子等视觉特征明显;复杂的关键点如随着衣着、首饰等的遮挡发生变化,因而利用初级轻量化模块检测相对简单的关键点,次级轻量化模块根据检测出的简单的关键点和复杂的关键点进行再次检测;
[0043]
进一步的,关键点置信图其理论计算公式如下:
[0044][0045][0046]
公式(1)中为个体k产生的置信图,x
j,k
∈r2表示个体k关键点部位j的真实位置,σ控制峰值的传播;公式(2)代表的是网络预测的置信图,通过最大操作将各个置信图聚合在一起。
[0047]
关键点置信图输出19个通道,其中1个通道作为背景,其余18个通道经过融合得到openpose的18个关节点信息;输出背景的与否与模型无关,输出背景具有两个作用,一是为了增加监督信息,有利于网络的学习,二是为了将背景作为下一个模块的输入,利于下一个模块获得更好的语义信息。
[0048]
进一步的,关键点亲和力场是openpose的核心,是使其区别于其他框架的最大特性,关键点亲和力场用于描述不同关键点之间的亲和力,openpose采用自下而上原理导致
检测出的关键点不会立即划分对象,利用关键点亲和力场来完成各个关键点与对象的划分,属于同一个对象不同关节关键点之间的亲和力越高,反之不同对象关节关键点之间的亲和力越低。
[0049]
本实施例使用的lightweight openpose模型将输入图像的分辨率调整为368,lightweight openpose模型是将openpose算法模型的5个网络细化阶段只保留了细化阶段1;openpose采用vgg19作为基础网络,而lightweight openpose选择使用mobilenet网络;因mobilenet网络模型小,适用于微端;但mobilenet很少使用步长较大的卷积核,导致其浅层和深层的表达能力较弱;lightweight openpose采用扩张卷积率为2的扩张卷积用以弥补缺陷;
[0050]
lightweight openpose将原先的7x7卷积,替换成3个连续的1,3,3卷积,这个做法在其他网络如vgg中有体现,由于3x3卷积得不到与原始7x7的卷积感受野,因此在最后一个3x3卷积中,lightweight openpose使用扩张卷积,达到了与openpose一样的感受野;
[0051]
步骤二、根据人体骨骼框架,通过向量角度计算出各关节的角度;
[0052]
利用lightweight openpose实现人体骨骼信息识别并利用图像处理库opencv绘制出骨骼框架后,计算各关节的角度;
[0053]
进一步的,采用向量角度求解的方法;以手肘为例如图4所示,点p、a、b为识别出的肘部,肩部,手部关键点,以p点为起点分别与a、b两点形成向量,通过公式(3)(4)计算出角度,并使其处于0~180
°
之间;
[0054][0055][0056]
胳膊存在特殊情况,需特殊考虑,计算出的肘部角度在0~180
°
之间,但存在手上伸与下垂两种情况,需加入条件以判断此类特殊情况;采用的方法如下:将大臂向量与小臂向量做加法运算得出对角线向量,通过判断对角线向量纵坐标的正负,从而进一步判断手臂方向;若为正,则手臂向上;反之,手臂乡下处于下垂状态。
[0057]
步骤三、根据各关节的角度求出机器人舵机需要转动的位置信息,并采用pid控制舵机进行动作模仿;
[0058]
计算出关节角度后,再依次求出机器人舵机需要转动的位置信息;机器人采用的总线舵机型号为lx-824hv高压总线舵机,相较于传统的7.4v舵机,11.1v高压舵机在电流使用上减少了60%以上,机器人的续航得到了巨大提升;同时支持堵转、过温保护;此舵机能够反馈温度、电压、位置信息可以形成一个闭环控制;舵机的控制角度范围广、控制难度低(参数0~1000对应角度0~240
°
);根据这个舵机的型号参数,利用公式(5)把关节角度值转换成舵机需要转动的位置信息;
[0059]
pos=(θ/240)
×
1000
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0060]
因为舵机安装位置不同,会影响初始位置,在计算时按实际情况做相应地加减;
[0061]
再次通过socket模块把计算出的数据信息传输给树莓派,然后进行动作模仿;
[0062]
进一步的,如图2,基于树莓派的轻量化的人体姿态评估方法的控制方法,包括:
[0063]
将人体姿态图像信息通过socket传输给pc机,建立树莓派和pc机之间的socket通信;
[0064]
pc机通过轻量化的人体姿态评估算法对人体姿态图像进行处理,并将处理的结果返回给树莓派,树莓派通过pid控制实现机器人的动作模仿。
[0065]
利用机器人摄像头采集人体动作图像,采用socket技术作为数据传输的方式,将实时图像传输给pc机,把lightweight openpose人体姿态评估算法部署在pc机上,实现人体骨骼框架的识别与描绘,再通过向量角度求解的方法计算出人体关节角度值;然后将角度值转换为机器人舵机所需要转动的位置信息,再次利用socket网络传输,将这些数据发送给机器人的主控树莓派,树莓派把数据转变为控制对应关节舵机动作的脉冲信号,最终实现机器人的动作模仿;
[0066]
采用树莓派4b作为机器人的主控,采用raspberry pi camera module v2作为摄像头;树莓派4b具备完整的linux系统,拥有多个gpio接口、usb接口,可连接多种外设,支持大规模数据计算、图形图像处理,具有完整的计算机处理功能;raspberry pi camera module v2是专门为树莓派定制的带高质量8百万像素索尼imx219传感器扩展板,拥有定焦镜头;把raspberry pi camera module v2摄像头与树莓派4b连接起来,并且安装固定在机器人的头部,确保能以最好视角拍摄人体的动作;
[0067]
树莓派的算力不高,如果直接在树莓派上进行人体姿态识别的话,很难做到实时模仿;在主控硬件处理效率不足的情况下,如果更换主控会造成机器人成本的上升,所以将人体姿态识别模型与角度计算运行在pc机中,若使用usb串口通信把计算得出的位置信息传输给树莓派的话,虽然在传输速率上可以满足,但机器人的行为动作会受到限制,所以采用socket网络传输;
[0068]
如图3为socket传输流程图,服务器端先初始化socket,然后与端口绑定,对端口进行监听,调用接收阻塞,等待客户端连接;此时客户端初始化socket,与连接服务器建立连接;客户端发送数据请求,服务器端接收请求并处理请求,后将回应数据发送给客户端,客户端读取数据,最后关闭连接;pc作为服务器端,树莓派作为客户端,树莓派与pc建立连接,树莓派不断将采集到的图像数据传输给pc机;在pc机上进行人体姿态识别和关节角度计算,并且把计算出的值转化为位置信息。
[0069]
把通过关节角度转化得出的位置信息通过socket传输给机器人的主控树莓派;树莓派和机器人处于同一局域网内,但此时将pc作为客户端,树莓派作为服务器端,pc机与树莓派建立连接不做关闭,pc机将不断改变的位置信息数据发送给树莓派,树莓派不断接收。
[0070]
进一步的,树莓派采用pid控制舵机进行对应的动作模仿,pid控制方法具有算法简单、鲁棒性好和可靠性高等特点,广泛应用于控制系统;pid全称比例、积分、微分控制,其公式如下公式(6):
[0071][0072]
其中,k
p
为比例增益,t
t
积分时间常数,td微分时间常数,e(t)给定值与测量值之差。
[0073]
在pid控制中,动态响应与比例作用成正比,因为系统本身具有惯性,如果控制输
出改变,实际值变化需要时间,但比例作用太强的话,会导致系统振荡,反而不稳定;因此参数大小应在多次调试后确定,能达到最快响应又无超调(或无大的超调)的比例参数为最佳参数;系统在这个最佳参数上能够提高稳态精度,提高系统响应速度;
[0074]
对于积分环节,控制器的输出与误差的积分成正比关系;积分主要用于消除静态误差,原理如下:对误差进行积分,使输出继续增大或减小,直至为零;积分作用由于积分时间常数t
t
,t
t
越大,积分作用越弱,反之则越强;同时积分快慢要与系统本身惯性相匹配,过强,则会导致系统振荡、积分超调等情况;比例、积分环节都是在误差产生后,用于消除误差的;而微分环节能够在偏差信号变大之前,在系统中引入一个有效的修正信号,加快系统动作速度,减少调节时间;控制中,控制器的输出与输入误差信号的微分成正比;其优点在于能够加快系统的响应速度,减小超调量,减少振荡,对动态过程有“预测”作用;
[0075]
本实施例中采用pid控制不单独或两种环节组合,在使用时对pid参数进行初始化即k
p
=0.2,ki=0.0,kd=0.0在舵机运行时加入时间函数,保存上一时间,利用现在时间减去上一时间得到变化时间,利用现在误差(舵机现在角度与目标角度的差)与上一误差相减得出变化误差,将变化时间与采样时间比较,若变化时间大于0,原有k
p
与现在误差相乘得到新的k
p
,同时现在误差与变化时间相乘得到ki;若变化时间大于0,则变化误差与变化时间相比得出kd;优点在于能够实时更新比例、积分、微分常数,保证各种情况下各个舵机能够平稳运行;经过测试,这个方法可以实现舵机平稳地转动;树莓派接收到从pc机传输过来的位置信息后,树莓派就可以采用pid方法控制舵机平稳转动到与人体动作相一致的位置,这个过程不断重复,从而实现机器人对人体的实时动作模仿。
[0076]
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
再多了解一些

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

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

相关文献