一种基于养老机器人平台的摔倒动作检测方法与流程

文档序号:11729742阅读:338来源:国知局

本发明涉及一种动作的识别,属于图像识别与人机交互技术领域,具体的说,是指一种基于养老机器人平台的摔倒动作检测方法。



背景技术:

随着科技进步和医疗水平的提高,世界人口人均寿命不断延长,而生育率却持续走低,人口老龄化已经成为一个全球性问题。据民政部门数据显示,截至2015年底,中国60岁以上的老人已经超过2亿,且正以每年3%以上的速度快速增长,中国社会人口老龄化已经步入快速发展阶段。目前,应对养老问题已上升为国家战略,“智慧养老”成为国家重点鼓励的养老产业之一,通过智能养老机器人照顾老年人成为未来的发展趋势。人的摔倒动作检测是智能养老机器人的一个核心技术。据统计,我国每年有4000万老人发生不同程度的摔倒,摔倒严重威胁着老年人的身体健康,已成为60岁以上老人伤害死亡的头号杀手。养老机器人通过摔倒检测算法实时评估老人的状态,对摔倒的老人及时干预并向家人和急救中心求助。目前市场上基于机器人平台的摔倒动作检测方法主要分为两类:基于传感器的摔倒检测方法和基于视觉的摔倒检测算法。

基于传感器的摔倒检测方法一般需要被看护者在不同部位穿戴加速度感应器、陀螺仪等器件,通过这些可穿戴的传感器检测人体的运动和姿态信息,并以此为依据来判断人是否摔倒。虽然可穿戴设备可以较准确地采集到人的姿态和运动信息,但是这类方法要求老年人时刻在特定位置穿戴一些传感器,这对于行动不便的老年人会造成一定的记忆和行动负担。

基于视觉的摔倒动作检测方法不需要对老年人施加任何约束,具有成本低、非接触式的特点,受到了越来越多的关注。根据所用摄像机的不同,基于视觉的摔倒动作检测方法可以分为两类:基于三维(rgb-d)视频数据的摔倒检测方法和基于二维(rgb)视频数据的摔倒检测方法。第一类方法使用kinect等深度摄像机来获取rgb-d视频数据,或利用多摄像机对场景进行三维重建来获取人的深度信息。然而,目前市场上的深度相机价格较高、体积较大,普适性不好;利用多摄像机进行三维重建的方法对摄像机的位置要求严格,需要进行精确的摄像机标定和多摄像机同步,并且算法复杂、实时性较差,不适用于移动机器人平台。另一类方法利用单一摄像头获取场景的视频数据,通过无运动检测、人体形状变化分析等技术来判断场景中是否有人摔倒。无运动检测方法认为人在摔倒后会长时间静止在地面上,如果在视频中检测到人在一段时间内处于静止,即认为他摔倒了。显然,这种强制假设与真实情况有较大出入,检测准确率较低。分析人体形状变化的方法根据由站立到摔倒过程中人体的形状变化提取特征,并用分类器评估是否有人摔倒。为了获取准确的人体形状,这类方法需要额外的人体检测或跟踪方法来提取包含目标人体的边界框,摔倒检测的效果严重依赖于人体检测算法和目标跟踪算法的准确性。



技术实现要素:

步骤1、训练阶段,根据一些有标注的视频训练模型。

步骤1.1、收集一组包含摔倒动作的视频和一组包含其它动作(如走路、跳舞等)的视频。对于包含摔倒动作的视频,在每一帧图像中标注摔倒动作发生的位置,即:用一个矩形窗口将摔倒的人框起来,记录矩形窗口的左上角位置和右下角位置。在实际场景中,人与摄像机的距离是未知的,人在视频画面中所占的比例是不确定的,因此我们定义了多种尺度的窗口,并选择最适合的尺度的窗口来标注摔倒动作在图像帧中的位置。

步骤1.2、假设定义了n种尺度的窗口,并为每一种尺度的窗口训练相应的svm分类器。对于第i个尺度si={wi,hi},其中wi表示窗口的宽度,hi表示窗口的高度,wi和hi的单位是像素,下面介绍如何训练针对该尺度窗口的二分类线性svm分类器。首先,收集包含摔倒动作的窗口集合(正样本)和不包含摔倒动作的窗口集合(负样本)。为了收集正样本,从摔倒动作训练视频的每帧图像中提取已标注的摔倒动作窗口,如果该窗口的尺度是si,则将其加入到正样本集。为了收集负样本,从不包含摔倒动作的训练视频的图像帧中随机采样尺度为si的窗口,并将其加入负样本集;这些窗口可能捕捉了人的其它动作,也可能仅包含无关的背景内容。然后,在每个正样本和负样本中提取方向梯度直方图(histogramoforientedgradient,hog)特征和光流(opticalflow)特征。方向梯度直方图刻画了表观和结构信息,光流特征捕获了运动信息,静态的表观信息和动态的运动信息能够从不同的角度对视频中人的摔倒动作进行描述。最后,用正类样本和负样本的特征及相应的类别标签训练二分类线性svm分类器。对于一个新的样本x,svm分类器对它的打分为f(x)=ω·x+b,通过训练,可以得到模型的参数{ω;b}。

步骤1.3、统计训练视频中不同尺度窗口之间的转移概率。首先,统计所有训练视频中前一帧图像标注的摔倒动作窗口尺度为si={wi,hi}且后一帧图像标注的摔倒动作窗口尺度为sj={wj,hj}的频次aij,得到不同尺度窗口之间转移的频次矩阵它的第i行、第j列元素为aij。对频次矩阵a的每一行做归一化,得到不同尺度窗口之间转移的频率矩阵它的第i行、第j列元素为pij,满足条件∑j=1:npij=1。

步骤2、对于一个新的视频,模型能够自动检测多个人的摔倒动作,输出视频中是否有人摔倒、有几个摔倒动作以及每个摔倒动作在图像帧中的位置。

步骤2.1、在每帧图像中稠密采样一些中心点,在每个中心点周围采样n种尺度的窗口,在窗口中提取方向梯度直方图特征和光流特征。将每个窗口的特征向量输入到相应尺度的线性svm分类器中,得到窗口的打分。

步骤2.2、利用动态规划算法提取视频中包含摔倒动作的窗口序列。

输入:所有采样窗口的svm打分{m(u,t,j)},其中(u,t,i)代表一个窗口,u=(x,y)表示窗口的中心点坐标,t表示图像帧的序号,j∈{1,2,...,n}表示窗口的尺度;

不同尺度窗口之间转移的频率矩阵

输出:视频中包含的摔倒动作个数q,以及每个摔倒动作在图像帧中的位置,即包含摔倒动作的窗口序列集合这里υq表示一个窗口序列,lt表示第t帧中的一个窗口,tstart表示窗口序列的起始帧号,tend表示窗口序列的终止帧号。

变量说明:s(u,t,j)是以窗口(u,t,j)为结束的最优路径的得分;

s*是整个视频所有可能路径中最优路径的得分;

l*是整个视频所有可能路径中最优路径的最后一个窗口;

p(u,t,j)是以窗口(u,t,j)为结束的最优路径所包含的第t-1帧中的窗口;

d是稠密采样中心点的步长,一帧图像中相邻两个窗口的中心点相差d个像素;

t是视频的总帧数;

δ是包含不同摔倒动作的窗口之间的最大重叠率。

(1)算法初始化,令摔倒动作的个数置为0:q=0。

(2)对于第一帧图像中的所有窗口(u,1,j),令p(u,1,j)=null,如果m(u,1,j)>0,令s(u,1,j)=m(u,1,j);如果m(u,1,j)<0,令s(u,1,j)=-∞。设置s*=0,l*=null,t=2。

(3)遍历第t帧图像中的任意一个窗口(u,t,j),

如果它的svm打分为负(m(u,t,j)<0),令s(u,t,j)=maxv∈l(u),i(s(v,t-1,i)+m(u,t,j)),这里l(u)表示到u距离小于等于的中心点集合。如果s(u,t,j)>0,(v0,i0)←argmaxv∈l(u),i(s(v,t-1,i)+m(u,t,j)),p(u,t,j)=(v0,t-1,i0);如果s(u,t,j)<0,s(u,t,j)=-∞,p(u,t,j)=null。

如果它的svm打分为正(m(u,t,j)≥0),令s(u,t,j)=maxv∈l(u),i(s(v,t-1,i)+m(u,t,j)×pij),这里l(u)表示到u距离小于等于的中心点集合。如果s(u,t,j)>0,(v0,i0)←argmaxv∈l(u),i(s(v,t-1,i)+m(u,t,j)×pij),p(u,t,j)=(v0,t-1,i0);如果s(u,t,j)<0,s(u,t,j)=m(u,t,j),p(u,t,j)=null。如果s(u,t,j)>s*,令s*=s(u,t,j),l*=(u,t,j)。

(4)如果t<t,令t=t+1,重复第(3)步;否则,进入第(5)步。

(5)如果s*=0,那么视频中没有检测到摔倒动作,进入第(9)步。如果s*>0,视频中存在摔倒动作;最优路径的最后一个窗口是从后向前依次递推可以得到最优路径包含的所有窗口。令t=t*-1,q=q+1,进入第(6)步。

(6)如果p(lt)≠null,那么最优路径在第t-1帧中的窗口为:lt-1=p(lt),令t=t-1,重复第(6)步;否则,进入第(7)步。

(7)令tstart=t,得到包含一个摔倒动作的窗口序列

(8)将与中窗口的重叠率大于δ的所有窗口的打分置为-∞,重复第(2)步,搜索下一个包含摔倒动作的窗口序列。

(9)返回摔倒动作个数q和包含摔倒动作的窗口序列集合{υq}q=1:q,算法结束。

本发明提出了一种养老机器人平台下的摔倒动作检测算法,与现有的基于单目视觉的摔倒动作检测方法相比,我们提出的方法不需要预先采用人体检测或跟踪算法来提取包含目标人体的边界,能够直接从单摄像机获取的视频中检测出有没有摔倒动作、有几个摔倒动作以及摔倒动作发生的位置。另外,与现有的动作检测方法不同,我们的算法考虑了摔倒动作中人体形状变化的特点,设置了多个尺度的图像窗口,并采用马尔科夫模型来表达多个尺度窗口之间的转移概率,建模了视频中相邻图像帧之间的局部上下文信息,因而可以取得更好的摔倒动作检测结果。

附图说明

图1为本发明基于养老机器人平台的摔倒动作检测方法;

具体实施方式:

下面进一步详细说明本专利的具体实施方式:

步骤1、采集一些正例图像窗口和负例图像窗口用于模型训练。

(1)在一个大约4米见方的房间的四面墙上架设四个摄像头,每个摄像头离地高度大约1.2米。摄像头从4个不同的角度拍摄了10个人的摔倒动作和其他动作(如走路,跳舞等),每个视频中包含一个人的动作。

(2)定义了9种尺度的窗口{si=(wi,hi)}i=1:9,其中wi表示窗口的宽度,hi表示窗口的高度。对于包含摔倒动作的视频,在每一帧图像中标注是否有摔倒动作以及摔倒动作发生的位置,从9种尺度的窗口中选择一个最合适的将发生摔倒动作的人框起来,记录矩形窗口的左上角位置和右下角位置。

(3)在每个尺度下收集大约300~1000张正例图像窗口。从摔倒动作视频中提取已标注的摔倒动作窗口,如果该窗口的尺度与当前尺度一致,则将其加入到正样本集。

(4)在每个尺度下收集负例图像窗口,数量大约为相应正例图像窗口的1.2~1.5倍。从不包含摔倒动作的视频中随机采样相应尺度的窗口,并将其加入负样本集。约30%的负例图像窗口捕捉了人的其它动作,约70%的负例图像窗口是包含无关内容的背景窗口。

步骤a2、在正例图像窗口和负例图像窗口中提取方向梯度直方图特征。

(1)为了降低特征维度、加快运算速度,在保持宽高比基本不变的条件下对每个尺度的图像窗口进行压缩,压缩后窗口的宽度和高度均为8个像素的倍数。

(2)对压缩后的图像窗口进行灰度化,将其转换为灰度图像。采用gamma校正法对图像进行颜色空间的归一化,来调整图像的对比度、降低光照变化造成的影响、抑制噪声干扰。

(3)计算图像中每个像素的梯度大小和方向。

(4)将每个图像窗口划分成许多8*8像素的单元格,将梯度方向(0-360°)划分为9个区间,统计每个单元格在不同梯度方向上的梯度直方图,每个单元格得到一个9维的描述符向量;

(5)将每2*2个单元格组成一个块,一个块内所有单元格的特征描述符串联起来构成这个块的hog特征向量。

(6)将图像窗口内的所有块的hog特征向量串联起来,得到该图像窗口的hog特征向量。

步骤a3、在正例图像窗口和负例图像窗口中提取光流特征。

(1)对于一个图像窗口,在原始视频中下一帧图像的相同位置提取相同大小的窗口,利用lucas-kanade算法计算窗口中每个像素点的光流。

(2)光流场的水平方向数据组成水平光流场fx,垂直方向数据组成垂直光流场fy,用半波校正将其分解为四个非负通道:

(3)对四个通道的数据进行高斯滤波和归一化,得到非负且稀疏的四通道并将四通道的数据连接起来构成描述窗口运动信息的光流特征向量。

步骤a4、对于每个尺度的窗口,用相应的正例图像窗口集合和负例图像窗口集合训练一个二分类线性svm分类器。9种尺度的窗口所对应的svm模型的参数为{ωi;bi}i=1:9。

步骤a5、统计不同尺度窗口之间的转移概率。

(1)统计所有训练视频中前一帧图像标注的摔倒动作窗口尺度为si且后一帧图像标注的摔倒动作窗口尺度为sj的频次aij,得到不同尺度窗口之间转移的频次矩阵它的第i行、第j列元素为aij。

(2)对频次矩阵a的每一行根据以下公式做归一化:

得到不同尺度窗口之间转移的频率矩阵它的第i行、第j列元素为pij,满足条件∑j=1:npij=1。

步骤b1、对于一个新的视频,在每帧图像中稠密采样一组中心点,在每个中心点周围提取9种尺度的图像窗口。

步骤b2、提取新视频的所有图像窗口的hog特征表示,具体方案见步骤a2中(1)-(6)步。

步骤b3、将每个窗口的特征表示输入到相应尺度的svm分类器中。用x(u,t,j)表示图像窗口(u,t,j)的hog特征向量,u=(x,y)表示窗口的中心点坐标,t表示图像帧的序号,窗口尺度是sj,根据下式计算相应svm分类器对它的打分:

m(u,t,j)=ωj·x(u,t,j)+bj。

步骤b4、利用我们提出的动态规划算法检测视频中是否包含摔倒动作、有几个摔倒动作,并提取视频中包含摔倒动作的窗口序列,对一个或多个摔倒动作进行空间和时间定位。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1