于佳圆,张 雷,张凯博
(北京建筑大学 电气与信息工程学院,北京 100044)E-mail:yujiayuan1010@163.com
随着计算机性能的不断提高以及深度学习,人工智能等技术的快速蓬勃发展,机器人开始进入家庭,为人类提供各种各样的服务.为了使机器人能够在家居环境中与人类自然共居、和谐共处,机器人需要以人类可接受的方式运行和工作,特别是要避免与人类的冲突和碰撞.保证人的绝对安全是服务机器人进入人类生活空间,并能得到广泛应用的基本前提[1-3].
Christian Vogel等[4]将投影仪放置在机器人工作区域上方,在机器人周围形成光栅,光栅的某一区域产生变化就认为有人进入该区域,机器人对人进行避让,保证人机安全,但机器人移动过程中可能会出现其他物体遮挡光栅,导致该方法鲁棒性较低.Weiquan Ye等[5]利用安装在机器人本体上的OptiTrack相机和Kinect相机实现人体捕捉和追踪,但目前OptiTrack相机造价高昂,机器人成本过高,不利于推广.Mengmeng Wang等[6]利用单目相机和超声波传感器实现实时机器人三维人体跟踪和避让系统,但由于单目相机安装在机器人的前部,其他方向会存在视觉盲区.
总的来说,目前大多数移动机器人仅依赖自身传感器来实现人体检测和避让,但在实际应用中,这会导致机器人存在一部分检测盲区,为了解决这个问题,通常人们会在检测盲区加装传感器,但这无疑会增加机器人的生产成本.而且在多数情况下,同一空间中会存在多个机器人,在这种情况下,将传感器安装在空间中而不是机器人身上可以大大降低总体成本,是更加合理的选择[7].
针对现存方法存在的诸多不足,本文研究智能空间中,基于全局视觉的机器人自主避让控制系统,通过全局视觉对人和机器人进行检测、定位和追踪.提出基于深度图像和人体骨骼模型的人体检测方法和改进KCF算法的人体追踪方法,以及一种基于颜色标记特征的机器人检测和定位方法.系统通过设置合适的人机安全距离[8,9],并根据检测到的人机相对位置和运动轨迹,实时控制机器人的运动,以实现机器人对人的避让.
本文提出的机器人自主避让控制系统结构如图1所示.该系统主要由视觉检测系统(包括深度相机Kinect和PC机)、室内全方位移动机器人、服务器和无线网络构成.
图1 人机避让控制系统示意图
视觉检测系统通过Kinect相机实时采集环境图像,对人体和机器人的位置进行实时三维定位和轨迹追踪.根据人体和机器人的相对位置以及二者的运动状态,视觉检测系统得出相应的机器人避让控制策略,并通过无线网将控制策略数据传输给服务器.服务器接收这些数据并利用无线网络将控制指令实时发送给机器人,同时将数据存储到数据库中.机器人收到指令并执行相应的运动,从而实现对人的避让.
人体检测对于图像和视频的语义理解,视频监控,辅助驾驶系统等有重要的研究意义和应用价值.近年来,图像和视频中的人体检测是计算机视觉和机器学习领域的热门研究话题.目前对于图像和视频中的人体检测,主要有三种方法[10]:基于DPM算法的方法主要通过对人体轮廓进行建模,根据轮廓特征对人体进行检测;基于统计学习的方法通过提取特征训练分类器模型,特征主要有 Hear特征[11]、HOG特征[12,13]等;基于深度学习的方法通过训练深度神经网络(如CNN)实现人体检测.
由于人机共居环境的复杂性和多变性,目前还没有一种可普遍适用的成熟算法能够完全解决这种环境下的人体检测和定位问题.上述方法都是基于2D的图像和视频进行人体检测,不能对人体位置进行三维空间中的定位.近几年,飞行时间相机(Time-of-Flight cameras)和其他深度传感器的出现为推动该领域的发展创造了新的机遇[14,15].本文使用的深度相机为Microsoft Kinect v2,Kinect SDK中包含了一种使用大量标记数据训练的骨骼估计模型,可以进行实时骨骼追踪.因此,本文提出一种基于全局视觉的方法实现人体检测和定位,
为了提高系统的实时性,减少图像处理过程中的计算量,首先对深度图像进行预处理,深度图像中的每个像素都包含自身的深度信息,将深度小于一定的阈值的像素视为感兴趣区域(ROI),即可能存在人体的区域,将这些像素提取出来.然后采用关节点模型与得到的可能包含人体的区域进行匹配,获取图像中人体各个关节点的位置.具体过程如下:
首先,提取包含人体对象的深度数据帧,对于深度图像中的指定像素x,计算它的特征:
(1)
得到人体关节点的位置信息后,需要通过坐标变换将其映射到彩色图像中,为了确定深度相机和彩色相机之间的关系,将深度相机的相机中心设置为原点.
CDepth=KDepth[RDepth|tDepth]=KDepth[I|0]
(2)
其中I是单位矩阵,0是空向量,KDepth是深度相机的校准矩阵,彩色相机的校准矩阵为KRGB,彩色相机相对于深度相机产生的旋转为RRGB,产生的变换为tRGB.
CRGB=KRGB[RRGB|tRGB]
(3)
深度图像中坐标为xh的点x,可以通过原点投影为世界坐标系中的一条直线L.
(4)
通过深度图像中点x的ix值,可以得到该点在直线上的相应位置.
(5)
然后,就可以将世界坐标系中坐标为Xh的点X,投影到彩色摄像机上.
xRGB=CRGBXh
(6)
通过上述坐标变换,可以得到深度图中检测出的人体在彩色图中的对应位置.如图2所示,图2(a)为原始彩色图像,图2(b)为原始深度图像,图2(c)为将关节点映射到彩色图像中的结果,图2(d)为最终的人体检测结果.
图2 人体检测结果
已知人体关节点的位置和深度信息,就可以得到人体在三维空间内的位置.由于人体在运动过程中,其脊柱中心点的位置变化幅度较小,所以以脊柱中心点为人体代表点,把该点在环境中的位置记为人体在环境中的位置.
通过上述方法检测和定位到人体目标后,接下来需要对不断运动的人体目标进行实时追踪.传统的目标追踪方法,如光流法、meanshift算法、粒子滤波算法等已经比较成熟,在很多领域都获得了广泛的应用.但由于人机共居环境比较复杂,环境中的人体运动状态是随机的,并且很难预测,上述方法的追踪效果将会受到很大影响.近年来,深度学习在计算机视觉领域的成功,使得用于视觉跟踪的深层架构成为一种趋势.但是,这些基于深度学习的跟踪器具有相同的缺陷,即实时性能差且具有高复杂性[16,17],不适用于本文的应用场景.
KCF 核相关滤波算法是由Henriques等人在2014年所提出[18],是对2012年提出的CSK核循环结构检测跟踪算法[19]的改进,使用多通道的梯度方向直方图(HOG)特征代替原来的单通道灰度特征,并利用核岭回归,使得计算复杂度大大降低,大幅提升了相关滤波跟踪的准确度.KCF算法相比于传统目标跟踪算法,拥有更高的准确性,相比于深度学习方法,拥有更高的实时性,本文基于KCF算法对运动人体目标进行实时追踪.
典型的相关滤波过程如图3所示,首先,在输入视频第t帧中的目标位置Pt周围进行采样和特征提取,训练一个可以计算响应的分类器.然后,在第t+1帧,在前一帧的目标位置Pt周围进行采样,用训练好的分类器计算每个样本的响应.最后,将响应最大的样本位置作为当前帧(第t+1帧)的目标位置Pt+1.
图3 相关滤波原理
1)核相关滤波
通常,相关滤波器w的目的是找到一个函数f(z)=wTz,使得在相同大小的高斯函数标签y上的具有M×N个像素点的图像块z上采样样本的平方误差最小,即:
(7)
其中,i∈{0,1,…,M-1}×{0,1,…,N-1},λ是一个非负正则化参数.由于训练不仅需要正例,还需要负例,因此相关滤波器通常采用循环移位的方法来近似采样窗口的位移.
使用核方法,可以将非线性回归转换为线性回归,目标函数可以写成w=∑iαiφ(xi),这样所需优化的变量就从w变成了α.将目标函数替换为核函数,得到了新的训练函数.
(8)
其中,k(z,xi)表示训练样本xi与测试样本z之间的核函数,文献[20]给出了岭回归的核化版本的解决方案:α=(K+λI)-1y,由于矩阵K和矩阵I都是循环矩阵,得益于循环矩阵的特性,可以通过离散傅里叶变换(DFT)将其对角化.
(9)
其中,F和F-1分别表示离散傅里叶变换以及它的逆变换.
在视频的第一帧中对分类器进行训练之后,通过计算如下的响应,在下一帧中对相同大小的图像块z进行位置估计.
f(z)=F-1(F(a)⊙F(k(z,x)))
(10)
其中,⊙表示元素乘积,选择使得f(z)获得最大值的位置作为当前帧的目标位置.
2)循环矩阵
为了提取更多的训练样本,克服传统随机采样存在的采样重复等缺点,KCF算法使用循环矩阵对图像进行密集采样,循环矩阵C(x)如式(11)所示:
(11)
可以看出,循环矩阵中的每一行元素都是由上一行元素向右平移一位得到,这样可以保证每个循环矩阵都可以对角化,且进过傅里叶变换后都是对角矩阵,矩阵C(x)的傅里叶变化矩阵F为:
(12)
可以看出F是一个对称酉矩阵,则循环矩阵C(x)可对角化表示为:
(13)
对比传统的随机采样,利用循环矩阵进行密集采样可以提取更多的训练样本,能够提取目标的全部信息,这对目标跟踪过程的实现是至关重要的.
3)目标检测与分类器更新
在KCF目标追踪的过程中,首先读取视频的第一帧图像,图像中包含所需追踪的目标位置,用密集采样的方法提取目标以及背景的HOG特征,将其作为初始样本对分类器进行初始化.然后读取下一帧图像,从上一帧图像中的目标位置提取图像块,单个候选图像块z应的分类器响应为:
(14)
其中,ai为分类器在第i帧的参数,xi为第i帧的目标模板,将候选图像块z与上一帧更新的目标模板xi-1进行循环移位,生成循环矩阵,得到:
Kz=C(kxi-1z)
(15)
其中,kxi-1z为候选图像块z与目标模板xi-1的核相关,得到z循环移位后的输出为:
f(z)=(Kz)Ta
(16)
找到使式(16)取得最大响应值的位置,即得到当前帧的目标位置x′.
y=F-1(F(kxi-1z)F(a))
(17)
最后,将检测到当前帧的目标位置做循环移位,对分类器和目标模板进行更新:
xi=(1-β)xi-1+x′ai=(1-β)ai-1+ax′
(18)
其中β是更新系数,xi-1为上一帧的目标模板,ai-1为上一帧的分类器的系数.通过对分类器系数和目标模板的不断更新,实现视频序列的实时目标追踪.
KCF算法的一个明显优势是在保证追踪精度和准确性的同时,能达到很快的追踪速度,但当运动目标被完全遮挡时,会导致追踪目标丢失,无法继续追踪.为了弥补KCF算法在目标被遮挡情况下会导致追踪失败的不足,本文将检测模块加入到目标追踪的过程中,当追踪目标丢失时,启动检测模块,以保证及时重新找到目标并继续追踪,流程如图4所示.
图4 改进KCF算法流程图
检测模块滤波器Rd的训练模板选择,对于目标丢失时重新检测的成功与否至关重要,如果仅用初始帧来训练滤波器,在追踪过程中,随着目标的外观不断发生改变,滤波器的性能将不断降低.因此,本文设计一个能量函数对每一帧进行评估,当目标出现遮挡时,能量函数的值会减小.而当目标外观出现改变时,能量函数的值会增大.将能量函数与相关响应综合考虑,来评判每一帧的质量.在追踪过程中,我们可以将目标被遮挡的帧忽略掉,不更新追踪模块的滤波器Rt,避免由于遮挡导致的漂移.同时,不断用质量更高的帧对检测模块的滤波器Rd进行持续更新,提高检测模块的鲁棒性.
具体过程如下,对于给定的一帧图像,跟踪滤波器Rt和检测滤波器Rt的相关响应最大值分别为:
βt=max(ft(z))
(19)
βd=max(fd(z))
(20)
设定阈值Tγ,如果追踪模块和检测模块的滤波器相关响应均大于该阈值,即βt>Tγ&&βd>Tγ,那么我们认为该帧图像质量达到要求,用公式(18)更新检测滤波器Rd,通过对帧的能量评估更新追踪滤波器,能量函数定义为:
E=2R+G
(21)
其中R表示检测滤波器Rd的相关响应,G表示R的梯度.应用该能量函数,可以使得追踪目标有遮挡的帧得到低能量值,如果当前帧的能量值E大于设定阈值Tη,即E>Tη,用公式(18)更新追踪滤波器.
通过上述方法的改进,追踪滤波器更新时会忽略掉大部分存在目标遮挡的帧.但当出现目标运动过快等情况时,还是会导致追踪失败,此时就需要启动检测模块.在追踪过程中,当检测滤波器的相关响应值βd小于设定阈值Ts时,我们认为此时发生跟踪丢失,立即启动检测模块.由于连续两帧中,目标的位置以及外观形态不会出现非常大的变化,因此,为了节约计算成本,不在整张图片上对目标进行重新检测,而是使用追踪丢失前一帧的分类器,对目标位置周围的8个图像块进行滑动窗口搜索,直到重新检测到目标.
与人体检测过程中人体运动不确定性强的特征不同,一般情况下,人机共居环境中机器人的运动状态是经过人为设定的,是可控的,而且机器人的数量是一定的,因此机器人在图像中的状态相对稳定.本文同样采用基于全局视觉的方法对机器人进行检测和定位.由于基于颜色特征的检测方法对于目标位置变化的影响有较强的适应性,且对形变、噪声等影响具有很好的鲁棒性.因此,本文采用基于目标颜色特征的方法对机器人进行检测和定位.
首先,利用全局相机Kinect采集的RGB图像进行机器人检测.RGB颜色空间由红(Red)、绿(Green)、蓝(Blue)三原色组成,具有简单直观、处理方便等优点,目前被广泛应用于图像处理领域.但是RGB颜色空间很容易受到光照的影响,导致图像颜色失真,检测失败.由于人机共居的光照是不断变化的,在RGB空间中无法对颜色特征进行准确检测,因此有必要进行颜色空间的转换.
将RGB颜色空间转换到HSV颜色空间进行处理,因为HSV颜色空间对于光照变化和阴影的影响具有很好的鲁棒性,适用于基于颜色进行目标检测的任务,
接下来,设置合适的颜色阈值,对图像进行颜色分割.保留图像中符合颜色阈值的像素点,并将所有不符合的像素点都去除,得到包含颜色标记的位置信息的二值图像,如图5所示.图5(a)为原始图像,图5(b)为经过颜色分割后得到的二值图像,对二值图像进行形态学变换,消除干扰像素点,只保留目标区域,最终结果如图5(c)所示.
图5 颜色分割结果
检测到机器人在彩色图像中的位置后,需要得到深度信息,从而实现机器人的定位.对经过颜色分割后的二值图像进行边缘检测,边缘检测的核心是采用编码的方式确定图像中存在的边界.找到边界后,绘制矩形框来表示检测到的机器人,将矩形框中心的像素坐标记为(xrec,yrec).利用Kinect彩色图像坐标和深度图像坐标的转换方法,将该像素坐标转换到深度空间中,得到对应深度图像上的深度信息,从而得到机器人在空间中的三维坐标(x,y,z).
得到人和机器人在环境中的实时位置后,接下来要判断机器人此时是否应该对人进行避让,如何避让.如图6所示,视觉检测系统检测到人体和机器人(图6(a)),并得到了位置信息,图6(b)为空间内人和机器人的位置图,人机距离可由两点之间的距离公式计算得到.
图6 视觉系统的检测和定位结果
设定符合人类心理需求的,合适的人机安全距离,对于保证人机共居环境中人的安全性和舒适度是非常必要的[20].在工业生产中,为了防止正在运行的设备、表面尖锐的生产工具等危险物品对人体健康及生命安全造成伤害,规定两者之间必须保持一定的安全距离.而在人机共居环境中,人机安全距离的设定更应该考虑人的心理需求.本文根据机器人与人的位置、距离、各自的运动状态来设定当前的安全距离,当二者间距离小于安全距离时,向机器人发送相应的避让指令,实现实时准确的避让控制.
为了验证本文设计的机器人自主避让控制系统,通过实验对其中采用的方法和整个系统的有效性,实时性和准确性进行验证.
由于人机共居环境中,人体的运动具有随机性,不同时刻的人体正面平面与摄像头平面之间的角度是不同的,如正面,背面,侧面等不断变化,这会给人体检测和定位造成很大影响.为了验证本文提出的人体检测和定位方法的有效性,在实验室环境中,设计如下实验:空间中的人体按照“口”字型轨迹持续运动,这样全局摄像头就可以捕捉到人体的不同侧面.实验结果如图7所示,上面的四张图片为人体检测结果,下面对应的四张图片为对应的位置轨迹.可以看出,无论人体与摄像头的角度如何变化,检测系统都能对人体进行准确检测和定位,验证了人体检测和定位方法的有效性.
图7 人体检测和定位实验结果
在同一场景下,将本文提出的人体检测方法与基于HOG特征的方法、高斯背景建模法、以及基于Haar-like特征方法这三种人体检测方法进行检测时间的对比,记录每种方法处理每一帧图像所需的时间.实验结果如图8所示,从左到右依次为高斯背景建模法、基于Haar-like特征方法、基于HOG特征的方法以及本文提出的方法进行人体检测时,单帧所消耗的时间.
图8 检测方法对比实验结果
由实验结果可以看出,本文提出的人体检测方法每帧消耗的时间均少于其他几种算法,这是由于基于Kinect深度图像的人体骨骼提取实时性较高,且在人体运动缓慢或静止状态也能快速检测.
为了验证本文提出的人体追踪方法的实时性和准确性,在实验室环境中,设计如下实验:环境中有两个人体目标,一人静止不动,另一个人在后方不断走动,实验对后面的人进行实时追踪,视觉系统的追踪实验结果如图9所示,为了便于观察实验结果,整个过程将前面的人用矩形框框选出来.可以看到,在图9(a)中,前面的人对后面的人有部分遮挡,依然可以成功追踪.在图9(b)中,前面的人完全遮挡住后面的人,追踪目标丢失.在图9(c)中,后面的人重新出现,追踪方法及时找到丢失的追踪目标,并继续追踪,证明了追踪方法的有效性.
图9 人体追踪实验结果
将本文提出的人体追踪方法与Camshift算法、MIL算法以及CSRT算法进行实时性和准确性对比,实验结果如图10所示,其中从左到右依次为Camshift算法、本文算法、MIL算法以及CSRT算法进行人体追踪时,单帧消耗的时间.
图10 追踪算法消耗时间对比
追踪算法的成功率对比如表1所示,由实验结果可以看出,本文提出的改进KCF算法以及Camshift算法在目标追踪过程中消耗的时间较少,且改进KCF的方法在保证高实时性的同时,可以实现最高的追踪成功率.这是由于传统的KCF算法实时性很高,改进的方法仅在目标出现遮挡时启动检测模块,可以在追踪目标被遮挡的情况下快速进行重新检测,找到丢失目标,同时保证整个系统的高实时性.
表1 追踪算法准确度对比
在实验室环境中,控制移动机器人按照“口”字型轨迹运动,视觉系统对机器人进行实时检测和定位.实验结果如图11所示,上面的四张图为机器人的检测结果,下面四张图为相应的位置轨迹.可以看出,无论机器人对相机的朝向如何变化,视觉系统都能实时准确检测和定位,验证了本文提出的机器人检测与定位方法的有效性.
图11 机器人检测和定位实验结果
为了测试整个避让控制系统的性能,设计如下实验:机器人和人同时在室内环境中,设置人机安全距离为0.5米,在不同光照条件:白天的自然光照和夜晚的灯光照明,人体朝向全局相机的不同角度:正面朝向、左侧面朝向、右侧面朝向和背面朝向这八种情况下进行机器人避让控制实验.
图12所示为夜晚灯光照明条件下,人体右侧朝向全局相机的实验场景以及人机距离的变化.可以看到,当人机距离小于一定值时,机器人开始运动,人机距离增大.这是因为系统检测到人机距离小于安全距离,向机器人发出向右避让的指令,机器人收到指令后向右移动.
图12 机器人避让实验
每种情况下进行十次实验,记录机器人避让的平均反应时间,即检测人机距离为0.5米的时刻与机器人执行避让指令的时间差,实验结果如表2所示.
表2 机器人避让控制实验结果
由实验结果可以看出,无论光照以及人体对于全局相机的朝向如何变化,机器人均能在检测到人机距离达到设定值后的300ms内,执行避让指令,实现对人的避让.实验结果验证了整个机器人避让控制系统的实时性和有效性.
本文构建了一套完整的基于全局视觉的机器人避让控制系统,提出高实时性高准确性的人体检测与定位方法和改进KCF的人体追踪方法,以及一种基于颜色特征的室内全方位移动机器人检测和定位方法,实现了人机共居环境中,机器人对人的自主避让控制.经过一系列的实验,验证了整个系统的准确性和实时性.