于 翔,周 波
(东南大学 自动化学院,江苏 南京 210096)
过去,机器人主要应用于将人类从工业现场中的简单重复劳动中解放出来,随着经济的发展和人工智能领域的快速推进,人们对于机器人的需要不再局限于工业中的应用,开始希望机器人能够在人们的日常生活提供帮助,像清洁机器人、服务机器人、物流机器人等移动机器人逐渐火爆起来。
在日常生活中,移动机器人避免不了要跟人“打交道”,这就要求移动机器人必须有分辨主人位置的能力,具有检测环境中人类的能力,移动机器人才能实现更好的人机交互。移动机器人在室内应用时,有时需要对主人进行跟踪,而受制于传感器的位置限制,机器人往往只能“看到”人的后背下半身,因此在室内人体跟踪的背景下,需要对人体的腿部、背部进行检测。而由于室内人体跟踪相比室外检测和跟踪难度较低,且用于室内跟踪的机器人携带的计算资源一般不会太好,因此,室内移动机器人也一般不会搭载较为贵重的三维激光雷达传感器,主要以二维激光雷达传感器和RGB-D相机为主。
现有的室内人体跟踪技术大多基于单独的相机或者二维激光雷达传感器。
传统的视觉人体跟踪[1]基于HOG(Histogram of Oriented Gradient,方向梯度直方图)特征和SVM(Support Vector Machines,支持向量机)或者其他一些机器学习的人工特征和分类器进行人体检测,这种方法无法取得很高的精度。基于深度学习的视觉人体检测可以采用行人检测领域的相关技术,行人检测领域的研究不止能够检测到正面的人体,其他朝向的人体(如侧面、背面)也能够取得较好的检测效果,使用行人检测领域的相关技术进行室内人体检测往往绰绰有余,但一些室内场景经常存在光照严重不足的状况,这可能会导致性能大幅缩水。行人检测算法可划分为二阶段检测框架和单阶段检测框架,两阶段检测方法生成大量的窗口,对窗口中的图像进行检测和分类;一阶段检测方法将输入图像进行分格化,每个格子固定预设一个锚点,将图像中的物体分配到不同的格子之后再进行检测和分类。Fast RCNN[2]、Faster RCNN[3]、Mask RCNN[4]是两阶段检测方法的代表,YOLO[5]、SSD[6]、RetinaNet[7]算法则是单阶段检测方法的代表。
传统的二维激光雷达的人体跟踪同样使用机器学习的方式检测环境中的人腿,Arras等人[8]提出使用Adaboost分类器进行单一人腿的检测,并使用腿部信息判断人的运动状态。Aguirre等人[9]使用支持向量机学习环境中不同模式(动态/静态)的人腿。近年来,Guerrero-Higueras等人[10]提出将二维激光雷达采集的环境点云转化为占用图,并以生物医学中经常应用的U-Net[11]检测占用图中成对出现的人腿,这种方法通过将二维点云转化为图像,由此可以使用深度学习的卷积神经网络进行人腿检测,这类似于三维点云的俯视图操作,将三维点云转化为俯视图再使用图像卷积神经网络对俯视图进行特征提取,本质上是一种模态之间的相互转化。点云人体跟踪方法缺乏对于环境中类似人腿物体的鲁棒性,极易把室内细小的桌子腿、椅子腿检测为人腿。
由于单模态的方法在室内人体跟踪应用时各自存在一些问题,多模态融合来提高室内跟踪的鲁棒性就成为了一种自然而然的想法,利用两种模态的检测结果进行决策方面的融合有望取得更好的效果。
因此,为增加室内人体跟踪的鲁棒性,该文提出了一种二维激光雷达点云和相机图像融合的室内人体跟踪方法。使用目标检测领域表现出色的YOLO v3网络[12]检测相机中出现的行人,利用Adaboost分类器对分段二维点云进行训练和分类来检测二维点云中的人腿,结合视觉和点云的检测位置最终判定人的位置,并基于EKF[13]进行人体跟踪。
提出的基于多模态融合的室内人体跟踪框架可以分为以下四个部分:二维点云聚类、分段点云分类、视觉人体检测和多模态融合的KCF跟踪,整体流程如图1所示。
二维点云聚类:由于完整的二维点云数据难以通过机器学习或深度学习直接分辨其中每个点所属的类别,因此,需要将原始二维点云分割为数个易于分类的点云段。根据激光雷达传感器的扫描线角度和扫描点距离传感器的距离进行二维点云的聚类,将原始点云分割成数个小点云段。
分段点云分类:二维激光雷达采集到的二维点云中点数较少,不适合使用类似PointNet的三维点云处理网络进行训练。鉴于此,该文依然沿用了传统的机器学习方法,使用Adaboost分类器对点云段的几何和统计特征进行训练,将点云段分类为人腿和非人腿。
视觉人体检测:深度学习流行之后,行人检测领域取得了极大突破,使用经典的YOLO v3网络进行视觉人体检测,输出图像坐标系中的人体边界框,完成视觉图像的行人定位。
多模态融合的EKF跟踪:根据点云的分类结果将人腿点云段投影到二维图像坐标系。基于概率数据关联对点云人腿段和视觉人体检测框进行匹配,并基于EKF(Extended Kalman Filter,扩展卡尔曼滤波器)进行跟踪,实现后融合的多模态人体跟踪。
图1 多模态融合的室内人体跟踪整体流程
为了能够在二维点云中检测出人腿,需要将激光雷达扫描到的数据点分割成不同的段。激光扫描一周发射270条射线,最大得到270个点的有序点云,假设原点云P中的点由极坐标表示,即p=(φ,r),其中r和φ分别表示扫描点距离激光雷达的距离和角度值。根据邻近点的跳变距离,将原始点云分割为不同的段,如果相邻两点之间的距离小于某阈值,则视其与上个点同属于一个点集,如果距离大于某阈值,则后点属于一个新的点集;遍历整个原始点云后,剔除一些数据点数过少的分段使i≥3,最后形成多个可提取特征的点云段Si(i=1,2,…,N),二维点云P={S1,S2,…,SN}。
构建Si的8种特征[14]的弱分类器用于之后的训练过程,10种特征代表点云段的几何属性和统计特性:
(1)点的数目。
n=len(Si)
(1)
(2)标准差。
(2)
(3)平均偏差。
(3)
(4)
(4)点云段宽度。
d1,n=‖x1-xn‖
(5)
其中,1和n分别表示点云段的开始点和末尾点,该宽度衡量了点云段开始点和结束点之间的欧氏距离。
(5)边界长度。
(6)
其中,dj,j-1=‖xj-xj-1‖表示点云段中相邻两点之间的欧氏距离,边界长度是所有相邻点距离的总和。
(6)边界标准差。
(7)
(7)平均曲率:假设点云段Si的三个相邻点为xa,xb和xc,dab,dbc和dac分别表示相邻两点之间的距离,A表示三角形xaxbxc的面积,则xb处的曲率可表示为:
(8)
A可由海伦公式得出:
(9)
其中,p=(dA+dB+dC)/2。则平均曲率为:
(10)
(8)平均角度变化:记相邻两点之间的连线的角度变化值为:
(11)
则平均角度变化:
(12)
对点云分割得到的点云段训练集进行人工标注,正样本(人腿)标签为+1,负样本(非人腿)标签为-1;将训练集样本输入至Adaboost最终得到强分类器用以对点云段进行分类。
YOLO是一种单阶段的目标检测架构,在目标检测领域取得了极大的成就。因此,选择较为新颖的YOLO v3网络进行行人检测。网络结构上,YOLO v3使用DarkNet53[15]作为主干网络,整合了残差思想和特征金字塔思想,DarkNet53的网络结构如图2所示。
图2 DarkNet53网络结构
网络的输入图像被裁剪成416×416×3的RGB图像,在Darknet53骨架网络中,输入首先经过一个卷积层,其后跟随着Batch Norm(批正则化)和Leaky ReLU激活函数,随后经过数个残差块,输出三个维度的特征图。三个维度的特征图再经过卷积操作,得到8×8×255,16×16×255和32×32×255三个维度上的输出特征图。不同维度的特征图对应的感受野不同,负责检测不同尺寸的目标,小尺寸的8×8×255特征图用于检测大尺寸的目标,大尺寸的32×32×255特征图用于检查较小的目标。
YOLO v3使用聚类算法,每张输出特征图生成3个先验框,先验框的大小如表1所示。
表1 特征图对应的不同尺度先验框
有了先验框和输出特征图之后,就可以对先验框进行解码,判断类别和置信度,得到真正的检测框。
最终,对于每个输入图像,整个YOLO v3可以解码出8×8×3+16×16×3+32×32×3=4 032个矩形框以及对应的类别和置信度。
为了提高室内人体检测的准确性和鲁棒性,该文从二维点云中检测到人腿点云段,从视觉图像中获得人体边界框后,对两种传感器获得的结果进行融合处理。
首先,将人腿点云段投影到图像上,原始二维点云基于激光雷达坐标系,通过激光雷达和相机的位置关系先将二维点云转换至相机坐标系,再从相机坐标系转换到图像坐标系。激光雷达和相机的联合标定过程由ROS开源的Autoware Calibration Tookit完成,通过选取相同一点在点云和图像中的位置来自动计算激光雷达坐标系到图像坐标系的变换矩阵。
点云段和人体边界框统一到图像坐标系下,就可以对室内人体的位置进行数据关联。为了评估点云段和人体边界框的关联性,即多大程度上二者为同一人,使用概率数据关联方法来评估两种模态目标之间的关联性。
假设能够包含图像人腿点的最小矩形框为RLi,视觉传感器检测到的人体边界框为RCj,i和j分别表示人腿点矩形区域和人体矩形区域的序号。则RLi与RCj的交并比可以衡量人腿和人体属于同一人的概率:
(13)
其中,S表示各区域的面积,人体和人腿矩形框的重叠区域占总区域比重越大,说明二者的关联性越高,属于同一人的概率越大;人体和人腿的重叠区域占总区域比重越小,说明二者关联性越小,倾向于属于不同的人或者某种模态的数据出现假阳性。图像中检测到的人体边界框遍历所有被分类为人体的点云段,其概率PIOU最大且超过一定阈值的即为同一人。
结合多模态信息检测出人体后,需要对被检测的目标进行状态估计。假设被检测人体的状态量:
X=(x,y,z,vx,vy,vz)
(14)
其中,x,y,z分别表示某时刻目标人体在x,y,z轴的坐标,vx,vy,vz表示此时机器人在三个轴的速度。则t时刻扩展卡尔曼滤波的预测方程为:
(15)
其中,f(•)代表非线性函数,At和Wt为过程协方差矩阵,Qt-1为上一时刻的噪声协方差矩阵。t时刻EKF的修正方程为:
(16)
其中,h表示状态量与观测量之间的非线性关系,Ht和Vt为h的雅可比矩阵,Rt为观测噪声协方差矩阵。
如果得到融合人体目标之后没有EKF的预测值与之对应,则初始化一个新的目标ID,根据此人的状态生产新的预测值,继续进行迭代匹配。如果EKF预测的目标在一定时间内得不到与之对应的人体目标,则删除此人的ID。
为验证上述多模态人体跟踪系统的有效性,基于ROS系统使用python语言搭建了以上多模态融合的室内人体跟踪系统,通过ROS节点之间的发布和接收消息完成传感器数据的传输。该系统的机器人平台选择Turtlebot2移动机器人,Turtlebot2是ROS官方打造的软硬件科研平台,计算平台使用ThinkPad E580,搭载处理器Intel Core i7-8550 CPU@1.80 GHz,显卡为AMD Radeon RX 550 4G,安装Ubuntu 16.04和ROS Kinetic Kame。二维激光雷达选择日本北洋(Hokuyo)公司的URG-04LX-UG001传感器,视觉传感器使用Kinect V2,平台如图3(a)所示。
图3 实验平台及实验场景
为了测试多模态融合室内跟踪方法的效果,分别在嘈杂的实验室环境、晦暗但安静的走廊环境采集共400帧点云和图像数据并进行标注,实验环境如图3(b)、(c)所示。
对图像数据,在图中标注出人所在的边界框,实验时使用SSD、YOLO v3、YOLO v4和文中算法输入数据进行人体检测,评估指标为平均检测精度(mean Average Precision,mAP)和检测框与真值框之间的平均交并比(Intersection over Union,IoU),实验对比结果如表2所示。
表2 四种算法在自建数据集中的mAP(平均检测精度)及IoU(交并比)比较
从表2可以看出,所提多模态融合室内人体检测方法在与其他视觉行人检测方法对比时取得了最优效果,由于室内环境的光照往往会发生忽明忽暗的变化,不像室外环境一样近似平行光,图像人体检测总会出现一段时间检测不到的现象,此时就需要点云模态进行补充。
对点云数据,首先对整体点云进行分割,分割后标注出各个分段属于人腿还是非人腿。实验时分别使用单独的Adaboost人腿检测器和多模态融合的人腿检测器对人腿段进行分类,最后统计所有点的平均分类准确度,结果如表3所示。
表3 两种算法在自建数据集中的平均准确率比较
由表3可以看出,推理人体位置时引入了多模态决策后,实验室环境和走廊环境的检测平均准确率均有所提高,证明了多模态融合决策的有效性和可行性。室内点云人腿检测由于数据量较小,使用机器学习训练的分类器准确率不会很高,因此,图像模态可以为其提供补充。
图4 实验室环境的人体检测结果
图4展示了实验室环境中的人体检测结果,点群为检测到的人腿段,方框则为视觉检测到的人体。由于环境中存在椅子腿和隔离墙的边缘这种点云表示类似人腿的物体,仅仅使用点云段检测往往会发生误分类,而结合视觉之后就可以更加鲁棒地完成跟踪。
由此可以看出,所提多模态融合室内人体系统针对室内环境都取得了可观的效果,证明了该方法的鲁棒性和有效性。
针对移动机器人室内人体跟踪的鲁棒性问题进行了相关研究,实现了一个多模态融合的室内人体跟踪系统,以较少的计算资源完成更加鲁棒的跟踪任务。将该系统应用于多种室内环境中,包括弱光照的走廊、环境嘈杂的实验室区域,均完成了正确的人体检测,验证了该系统的有效性和通用性。
针对移动机器人室内跟踪的问题,如何以更少的计算资源完成实时的多模态融合的跟踪任务仍然需要进一步研究,可以使用RGB-D相机获得像素中每个点的深度后得到相应结构化点云,以减少传感器的数量;也可以探究更加轻量级的人体检测方法以减少系统的计算资源消耗。