
# 基于3D LiDAR跟踪的人体分类在线学习

Zhi Yan, Tom Duckett, Nicola Bellotto

{zyan, tduckett, nbellotto}@lincoln.ac.uk

英国林肯大学林肯自主系统中心

<http://lcas.lincoln.ac.uk>

摘要——人体检测与跟踪是服务机器人领域需要考虑的核心问题，因为机器人通常与人类共享工作空间，并和人类进行密切交互。本文提出了一种用于3D LiDAR扫描中人体分类的在线学习框架，利用鲁棒多目标跟踪避免了对人工专家标注数据的需求。该系统通过机器人随时间采集的样本在线重新训练分类器，实现迭代式学习。我们方法的创新之处在于，可以利用基于3D LiDAR的跟踪提供的信息修正训练数据中的误差。为此，我们实现了一种高效的潜在人体目标3D聚类检测器。我们在一个全新的大型室内公共场景行人移动3D LiDAR数据集上评估了该框架，该数据集已向研究界公开。实验分析了聚类检测器的实时性能，结果表明我们的在线学习人体分类器效果与离线版本相当，在部分场景下性能更优。

## 一、引言

在服务机器人领域，检测和跟踪运动目标是实现实用、安全机器人行为的关键。在家庭和公共环境中，识别出检测目标中哪些是人类尤为重要。通常机器人需要利用机载传感器采集周边区域的环境数据，分析人类所在位置和行进方向。为了留出足够时间做出相应反应，需要尽早且准确地检测和跟踪人类。遗憾的是，许多服务机器人为了保证检测的实际覆盖范围（即传感器的最大测距和视场），牺牲了跟踪的准确性和鲁棒性，而现有传感器的覆盖范围通常仅限于数米距离和小角度区间。

![Image](images/fbca711e4e88fa6bbdab57bdc2333d4668174388da9dc776ba701b03f2c3a9a7.jpg)

3D LiDAR传感器近年来已应用于机器人和自动驾驶汽车的众多场景中，既可单独使用[^1], [^2], [^3], [^4], [^5], [^6], [^7]，也可与其他传感器结合使用[^8], [^9]，其中就包括人体跟踪任务。这类传感器的一个重要特点是能够提供远距离、大角度激光扫描。此外，3D LiDAR通常精度很高，且不受光照条件影响。然而，人类很难在3D LiDAR扫描中被识别，因为扫描中没有纹理、颜色这类低层特征，并且当人物距离机器人较远时缺乏细节。在3D扫描中检测特征的计算量也非常大，因为覆盖面积随传感器测距增大而增加，候选人体目标的数量也会随之增加。此外，现有方法大多使用离线学习得到的

<div style="text-align: center;">Fig. 1. A screenshot of the 3D LiDAR-based tracking system in action with an online learned human classifier. The detected people are enclosed in green bounding boxes. The colored lines are the people trajectories generated by the tracker.</div>

人体检测分类器，这类分类器通常需要大量人工标注的训练数据。遗憾的是，标注这类数据是一项繁琐的工作，还容易出现人为误差。当面对非常复杂的真实场景，或是同一系统需要针对不同环境进行（重新）训练时，这种方法也不可行。

本文提出了一个用于从3D LiDAR检测结果中分类行人的在线学习框架，在我们此前开发的多目标跟踪系统$^{1}$ [^10]的基础上进行拓展，使其适配3D LiDAR扫描数据。我们依托假阳性和假阴性估计器的判断，思路类似于以往跟踪-学习-检测技术中提出的正、负“专家”机制[^11]，但本文方法仅用于在线训练一个专门从检测结果中筛选行人的分类器（即分类性能不会影响跟踪过程）。

本文的贡献分为三个方面。第一，本文提出了一种面向3D LiDAR扫描的计算高效聚类算法，适用于实时无模型检测与跟踪任务。第二，本文提出了行人分类器的在线学习框架，能够估计分类器的误差并对其进行更新，持续提升分类性能。第三，本文提供了一个大规模部分标注的3D LiDAR点云数据集$^{2}$，可供研究界用于行人分类器的训练与性能对比，该数据集涵盖了室内服务机器人场景下全新的研究挑战。

---

涵盖行人群组、儿童、推行李车的行人等场景。

本文剩余内容安排如下：第二节概述相关研究，重点介绍基于3D LiDAR的行人检测与跟踪相关工作。随后第三节介绍本文提出的框架，以及跟踪与在线学习之间的关联。跟踪相关内容在第四节展开，包含对3D聚类检测的详细说明。实际在线学习过程在第五节介绍，该部分阐明了P-N专家在借助跟踪优化分类过程中的作用。第六节介绍实验设置、实验结果以及本文提出的全新3D LiDAR数据集。最后，第七节讨论结论与未来研究方向。

### II. 相关工作

行人检测与跟踪近年来得到了广泛的研究。目前很多主流方法基于RGB-D相机实现[^12], [^13]，但这类传感器的探测距离和视场都存在局限。3D LiDAR是一种可行的替代方案，但使用这类传感器的核心挑战之一在于，其提供的信息相对有限，仅依靠这些信息识别行人难度较大。检测行人的一种常用思路是对深度图像或3D激光扫描得到的点云进行聚类。例如，Rusu[^14]提出了一种基于欧氏距离的直观方法，但该方法计算成本较高。Bogoslavskyi和Stachniss[^15]提出了一种更快的方法，但计算效率的提升限制了聚类精度。而本文的方法则在运行时间和精度之间实现了合理的平衡。

一种非常常用的方案是使用离线训练的分类器进行人体检测。例如，Navarro-Serment等人 [^1] 提出了七种用于人体分类的特征，并基于这些特征训练了一个SVM分类器。Kidono等人 [^3] 考虑到人体三维形态和衣物材质（即利用反射激光束强度）提出了两个额外特征，证明分类性能得到了显著提升。而Li等人 [^7] 实现了一种重采样算法，用来提升前述作者提出的几何特征的质量。Spinello等人 [^4] 将基于体积特征的自上而下分类器与自下而上检测器相结合，降低了三维激光雷达扫描中远距离跟踪人员的误报率。Wang和Posner [^8] 将滑动窗口法应用于三维点数据，实现包括人体在内的目标检测。他们将三维包围框框住的空间划分为稀疏特征网格，然后基于与单元格占据状态、单元格内点的分布、这些点的反射率相关的六个特征训练了线性SVM分类器。不过，离线方法的问题在于，每当遇到新环境时，分类器都需要手动重新训练。

上述解决方案都依赖预训练分类器从最新的激光雷达扫描中检测人体。目前仅有少数方法提出利用跟踪来提升人体检测效果。例如，Shackleton等人 [^2] 采用扩展卡尔曼滤波估计目标位置，辅助下一帧激光雷达扫描中的人体检测。Teichman等人 [^5] 提出了一种用于轨迹分类的半监督学习方法。他们的方法需要大量带标注的背景目标（即非行人）来离线训练分类器，该方法在轨迹分类上表现良好，但在目标识别方面表现不佳。而我们的方案会同时学习人体和背景的特征，并在线迭代修正分类错误。

除了使用RGB-D相机采集的数据集 [^12]，[^13]，[^16] 之外，目前学界也有少量可公开获取的、适用于户外场景的三维激光雷达数据集 [^4]，[^6]，[^9]，[^17]，但不存在像本文所提供的这种、针对大型室内环境的带标注人体跟踪数据集。

部分学者提出了无需标注的方法。Deuge等人 [^6] 提出了一种用于户外目标分类的无监督特征学习方法，该方法将三维激光雷达扫描投影为二维深度图像。Dewan等人 [^18] 提出了一种用于检测和跟踪动态目标的无模型方法，该方法仅依赖运动线索。然而，这些方法要么精度不高，要么不适用于行动缓慢和静止的行人。

很明显，当前领域的最高水平与开发可适配三维激光雷达扫描、无需标注且高可靠性的人体分类方案所需的技术能力之间仍存在巨大差距。本文工作证明，在高动态环境中，通过将跟踪与在线学习结合到移动机器人平台上，可以提升人体分类性能，从而帮助缩小这一差距。

### 三、总体框架

我们的学习框架由四个核心组件构成：3D LiDAR点云簇检测器、多目标跟踪器、人体分类器和样本生成器（见图2）。在每一次迭代过程中，首先会将一次3D LiDAR扫描（即三维点云）分割为多个点云簇。多目标跟踪系统会实时估计这些点云簇的位置和速度，并输出所有点云簇的运动轨迹。与此同时，分类器会识别点云簇的类别，即人体或非人体。分类器在初始阶段需要通过带标注的人体点云簇进行监督训练来完成初始化。不过初始训练集可以非常小（例如仅1个样本），因为后续迭代中会逐步添加更多样本，用于重新训练分类器。

分类器可能产生两类错误：假阳性和假阴性。两个独立的“专家”——即正专家P-expert和负专家N-expert——会将分类器的输出与跟踪器的输出进行交叉验证，判断错误类型，样本生成器则基于它们的判断为下一次迭代生成新的训练数据。具体而言，P-expert将假阴性转换为正样本，N-expert将假阳性转换为负样本。当积累了足够多的新样本后，分类器就会被重新训练。该过程通常会迭代至收敛（即不再出现假阳性和假阴性）或满足其他停止准则为止。

---

![Image](images/c10723c31fb31474874b31795e27d44656f43451563556734dd110f59e5082bd.jpg)

<div style="text-align: center;">Fig. 2. Process details of the online learning framework.</div>

然而，我们的系统与已有研究[^11]在三个关键方面存在差异，分别是训练过程的频率、跟踪器相对分类器的独立性，以及专家模块的实现方式。具体而言，我们的系统不采用实例增量训练（即逐帧训练），而是依赖更低频率的批增量训练[^19]（即批量收集样本训练分类器），在机器人于环境中移动时在线收集新数据。此外，尽管人体分类器的性能依赖于P-N专家和跟踪器的可靠性，但跟踪器本身独立于分类性能，完全不受分类结果的影响。最后，我们的专家模块实现可处理多个目标，因此能够从多个检测结果中生成新的训练样本，加快了在线训练过程。

需要注意的是，在特定条件下，我们训练过程的稳定性可依据[^11]得到保证。此处的假设为：N-expert生成的正确样本数量多于P-expert产生的错误数量，反之，P-expert生成的正确样本数量也多于N-expert产生的错误数量。尽管在实际场景中这些假设并非总能满足，但由于我们运行系统的环境中绝大多数运动目标都是人体，且偶发错误会被在线修正，因此我们系统的稳定性得到了保障。

### 四、基于3D LiDAR的跟踪

该系统的核心组件包括高效的3D LiDAR点云簇检测器和鲁棒的多目标跟踪器，本节将详细介绍这两个组件。

### A. 点云簇检测器

该模块的输入为一次3D LiDAR扫描，可定义为包含I个点的集合：

 $$ P=\{p_{i}\mid p_{i}=(x_{i},y_{i},z_{i})\in\mathbb{R}^{3},i=1,\ldots,I\} $$

点云簇检测的第一步是移除地面平面，方法是仅保留满足$p_i$的点$z_i \geq z_{min}$，

![Image](images/a74d996269efe59b5eb9fb7c731a868ba351be48b9b1c683322220d7e975ff60.jpg)

<div style="text-align: center;">Fig. 3. Examples of a human (1.68 m high) detected by a 3D LiDAR at different distances.</div>

得到一个子集$P^* \subset P$。这一步用于从目标簇中去除属于地面的点，我们同时接受物体底部的小部分也可能被一同去除的情况。请注意，这种简单高效的方案仅在相对平坦的地面条件下效果良好，而这正是我们场景的假设条件之一。

随后基于三维空间中点与点之间的欧氏距离，从点云$P^{*}$中提取出点簇。点簇的定义如下：

 $$ C_{j}\subset P^{*},j=1,\ldots,J $$

其中J是点簇的总数量。为避免点簇重叠，要求不同点簇不能包含相同的点[^14]，即：

 $$ C_{j}\cap C_{k}=\emptyset,for j\neq k,if min\|p_{j}-p_{k}\|_{2}\geq d^{*} $$

其中点集$p_j, p_k \in P$分别属于点簇$C_j$和$C_k$，$d^*$为距离阈值。

在实际应用中，基于欧氏距离的精确点簇提取颇具挑战性。如果距离阈值$d^{*}$取值过小，单个目标可能会被分割为多个点簇；如果取值过大，多个目标则会被合并为一个点簇。此外，在三维激光雷达扫描中，照射在人体上的激光束形成的点云形状会随人员与传感器的距离不同而产生很大差异（参见图3）。具体来说，由于这类传感器的垂直角分辨率通常有限，点间的垂直距离会因此出现很大变化。因此我们提出一种自适应方法，根据不同扫描距离确定$d^{*}$，该方法可表示为：

 $$ d^{*}=2r\tan\frac{\Theta}{2} $$

其中r是三维激光雷达的扫描距离，$\Theta$是固定的垂直角分辨率。实际上，$d^*$就是相邻两次激光扫描之间的垂直距离。显然，如图3所示，人员离传感器越远，垂直激光束之间的间隔就越大。例如，我们所用传感器的垂直分辨率为$2^\circ$（水平方向的角分辨率要小得多）。这意味着，对距离传感器例如9米处的点进行聚类时，最小阈值应为$d^* = 0.314$米。

但在三维空间中对点进行聚类的计算开销通常很高。计算量与目标覆盖区域成正比：最大探测距离越远，

---

![Image](images/90a332de6e37d2c9a6172831ce70600de6b193635f09ee3063b10689bfd958b8.jpg)

<div style="text-align: center;">Fig. 4. Different values of  $d^{*}$ correspond to different nested regions.</div>

$d^*$的取值就越大，可被判定为点簇的点云数量也就越多。此外，覆盖区域越大，该区域内出现新点簇的可能性也就越高。为应对这一挑战，我们提出将空间划分为以传感器为中心的嵌套圆形区域（参见图4），类似从点源向外传播的波前，不同区域应用不同的距离阈值。实际处理中，我们考虑一组以固定间隔$d_i^*$取值的集合$\Delta d$，满足$d_{i+1}^* = d_i^* + \Delta d$。对其中每个值，我们利用式(4)的逆运算计算最大点簇探测距离$r_i$，并向下取整得到圆形区域的半径$R_i = \lfloor r_i \rfloor$。因此，对应$d_i^*$的区域是宽度为$l_i = R_i - R_{i-1}$的环带，其中$R_0$就是传感器所在的中心。取$\Delta d = 0.1$米，根据近似精度我们得到宽度为2-3米的环带，这一分辨率对于检测潜在的人体点簇已经足够。在上述示例中，距离传感器9米处的点簇将属于第4个环带，该环带会应用阈值$d_4^* = 0.4$米。

最后，我们采用类人体体积模型过滤过分割和欠分割的聚类簇：

 $$ \begin{aligned}\overline{C}=&\{C_{j}\mid0.2\leq w_{j}\leq1.0,\\&0.2\leq d_{j}\leq1.0,0.2\leq h_{j}\leq2.0\}\end{aligned} $$

其中$w_{j}$、$d_{j}$和$h_{j}$分别表示容纳$C_{j}$的体积的宽度、深度和高度（单位为米）。

### B. 多目标跟踪器

聚类跟踪采用无迹卡尔曼滤波（UKF）和最近邻（NN）数据关联方法实现，已有研究证明这两种方法在以往系统中均可高效运行[^10]，[^16]。本文假设行人在平面上运动，因此在二维空间开展跟踪，暂不考虑聚类簇的三维尺寸，该内容留待本文工作的未来扩展。

状态估计分为两个步骤。第一步，给定$t_{k}$时刻的前一状态，采用以下二维恒定速度模型预测$t_{k-1}$时刻的目标状态：

 $$ \begin{cases}x_{k}=x_{k-1}+\Delta t\dot{x}_{k-1}\\\dot{x}_{k}=\dot{x}_{k-1}\\y_{k}=y_{k-1}+\Delta t\dot{y}_{k-1}\\\dot{y}_{k}=\dot{y}_{k-1}\end{cases} $$

其中x和y是目标的笛卡尔坐标，$\dot{x}$和$\dot{y}$分别是对应的速度，且$\Delta t = t_{k} - t_{k-1}$。第二步，如果聚类检测器输出了一个或多个新观测结果，则采用二维极坐标观测模型更新预测状态：

 $$ \begin{cases}\theta_{k}&=tan^{-1}(y_{k}/x_{k})\\\gamma_{k}&=\sqrt{x_{k}^{2}+y_{k}^{2}}\end{cases} $$

其中$\theta_{k}$和$\gamma_{k}$分别是聚类簇相对于检测器的方位角和距离，提取自聚类质心在$(x, y)$平面上的投影：

 $$ c_{j}=\frac{1}{|C_{j}|}\sum_{p_{i}\in C_{j}}p_{i} $$

为简化表述，上述方程省略了噪声以及机器人坐标系与世界坐标系之间的变换。但根据我们的经验，值得指出的是，不同于[^20]中采用的更简单的（线性）笛卡尔模型，选择（非线性）极坐标观测模型对远距离跟踪的良好性能至关重要。这一结论与所使用的机器人传感器无关，因为几乎所有传感器的检测分辨率都会随目标距离的增加而降低。特别地，极坐标能更好地体现激光雷达（LiDAR）传感器的实际工作原理，因此可以更准确地对其角度噪声和距离噪声建模。这也促使我们采用UKF，因为已知在非线性模型场景下，UKF的性能优于扩展卡尔曼滤波（EKF）[^10]。最后，NN数据关联处理多个聚类观测，以并行更新多个UKF（即每个跟踪目标对应一个UKF）。

### V. 人体分类的在线学习

在线学习以迭代方式执行：在机器人移动和/或跟踪行人的过程中，选择并积累预定义数量的新聚类样本，再使用新旧样本重新训练分类器。下文将介绍该流程的详细内容。

### A. 人体分类器

本文采用支持向量机（SVM）[^21]进行人体分类，该方法在非线性场景下效果出色，且已被证实在基于三维激光雷达的人体检测实验中性能良好[^1]，[^3]。我们从聚类中提取了6个特征，总维度为61，用于

---

<div style="text-align: center;">TABLE I</div>

<div style="text-align: center;">FEATURES FOR HUMAN CLASSIFICATION</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Feature</td><td style='text-align: center; word-wrap: break-word;'>Description</td><td style='text-align: center; word-wrap: break-word;'>Dimension</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$f_1$</td><td style='text-align: center; word-wrap: break-word;'>Number of points included in the cluster</td><td style='text-align: center; word-wrap: break-word;'>1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$f_2$</td><td style='text-align: center; word-wrap: break-word;'>Minimum cluster&#x27;s distance from the sensor</td><td style='text-align: center; word-wrap: break-word;'>1</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$f_3$</td><td style='text-align: center; word-wrap: break-word;'>3D covariance matrix of the cluster</td><td style='text-align: center; word-wrap: break-word;'>6</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$f_4$</td><td style='text-align: center; word-wrap: break-word;'>Normalized moment of inertia tensor</td><td style='text-align: center; word-wrap: break-word;'>6</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$f_5$</td><td style='text-align: center; word-wrap: break-word;'>Slice feature for the cluster</td><td style='text-align: center; word-wrap: break-word;'>20</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>$f_6$</td><td style='text-align: center; word-wrap: break-word;'>Reflection intensity&#x27;s distribution (mean, standard dev. and normalized 1D histogram)</td><td style='text-align: center; word-wrap: break-word;'>27</td></tr></table>

人体分类如表I所示。每个样本$C_j$的特征值集合构成一个向量$f_j = (f_1, \ldots, f_6)$。从$f_1$到$f_4$的特征由[^1]引入，而特征$f_5$和$f_6$由[^3]提出。我们舍弃了[^1]中提出的另外三种特征，即所谓的“几何特征”，原因是它们的分类性能相对较低[^3]，且我们在实验中观察到其计算量很大，因此不适合用于实时跟踪。我们还观察到，基于这组特征的分类器，即使最初仅使用行走人体的样本进行训练，通常也能同时识别站立和坐姿的人体。

每次迭代中，基于上述特征，使用LIBSVM [^22]训练一个用于人体分类（即区分人体/非人体）的二分类器。正负训练样本的比例设为1:1，所有数据都缩放至$[-1,1]$，生成概率输出，并使用高斯径向基函数核[^23]。由于目前LIBSVM不支持增量学习，我们的系统会存储从初始阶段积累的所有训练样本，并在每次新迭代中重新训练整个分类器。但该框架也支持使用其他分类器和学习算法。

### B. 样本生成器

我们采用一种基于两个独立的正专家和负专家的方法来生成新的训练样本。在每个时间步，P专家会分析所有被分类为负类的新聚类样本，识别出其中更可能分类错误的样本（即假阴性），并将它们作为正样本添加到训练集中。而N专家则分析被分类为正类的样本，提取出其中分类错误的样本（即假阳性），并将它们添加到负样本集中，供下一次训练迭代使用。P专家提升分类器的泛化性，N专家提升分类器的判别能力。当收集到预定义数量的新样本后，就会使用扩充后的训练集重新训练分类器。该学习过程会迭代直至收敛或满足其他停止准则，例如达到训练集的最大规模。

P专家基于跟踪器的轨迹。其核心思路是：被分类为非人体（负类）但属于类人轨迹、且该轨迹中至少有一个聚类被分类为人体（正类）的聚类，会被判定为假阴性，并添加到训练集中。

![Image](images/c86266fb84501a8e2f03b90b2f8b6f7cd902ee2badd983d16634546edd65b8ba.jpg)

<div style="text-align: center;">Fig. 5. Example of human-like trajectory samples, including one (red-crossed) filtered out because too uncertain. The green dashed line is the target's trajectory, while the blue dashed circles are the position's uncertainties.</div>

作为正样本。在我们的系统中，类人轨迹需要满足以下两个条件：1）目标在给定时间间隔K $r_{\min}^p$内移动的距离不小于$\Delta t$：

 $$ r_{k}=\sqrt{(x_{k}-x_{k-1})^{2}+(y_{k}-y_{k-1})^{2}}\quad\mathrm{a n d}\quad\sum_{k=1}^{K}r_{k}\geq r_{m i n}^{p} $$

以及 2）目标的速度不为零，同时不超过人体常规步行速度1.4 m/s [^24]：

 $$ v_{k}=\sqrt{\dot{x}_{k}^{2}+\dot{y}_{k}^{2}}\quad\mathrm{a n d}\quad v_{m i n}^{p}\leq v_{k}\leq v_{m a x}^{p} $$

此外，只有当类人样本估计位置$(\sigma_{x}^{2}, \sigma_{y}^{2})$的方差$(x_{k}, y_{k})$满足以下条件时，该样本才会被选中：

 $$ \sigma_{x}^{2}+\sigma_{y}^{2}\leq(\sigma_{max}^{p})^{2} $$

K、$r_{min}^{p}$、$v_{min}^{p}$、$v_{max}^{p}$和$\sigma_{max}^{p}$的值都是通过经验确定的。其中最后一个阈值尤其用于过滤掉那些与类人轨迹相关但过于“不确定”的物体（真阴性）：这些物体要么运动方式不符合预期，要么受其他邻近聚类的影响（参见图5）。

N专家将假阳性（误报）转换为新的负样本。我们认为人类并非完全静止，即使仅处于站立或坐姿，其簇的形状和/或位置仍会出现一些微小变化。利用3D激光雷达的高精度，位置方差较低的这类静态物体可通过以下条件识别：

 $$ r_{k}\leq r_{max}^{n}\mathrm{and}v_{k}\leq v_{max}^{n}\mathrm{and}\sigma_{x}^{2}+\sigma_{y}^{2}\leq(\sigma_{max}^{n})^{2} $$

参数$r_{max}^{n}$、$v_{max}^{n}$和$\sigma_{max}^{n}$由经验确定。实际应用中，N专家会选出那些原本被分类为人类、但实际属于其他静态物体的簇（即假阳性），并将它们作为负样本添加到训练集中。

### 六、实验

### A. 数据集

我们在本校一栋主楼内，使用Velodyne VLP-16 3D激光雷达采集的全新数据集对该框架进行了评估。这款3D激光雷达拥有16个扫描通道，水平视场为$360^{\circ}$，垂直视场为$30^{\circ}$，被安装在Pioneer 3-AT机器人顶部，距离地面高度为0.8米，如图6所示。该设备

---

![Image](images/b9071290f52fdfd299762d36338b8454762cab56a9ba159a58d8a3e9494596b1.jpg)

<div style="text-align: center;">Fig. 6. Robot equipped with (1) a Velodyne VLP-16 3D LiDAR used for dataset collection.</div>

被设置为10 Hz旋转，最大扫描范围为100米，用于数据采集。该数据集共包含28002帧扫描数据，记录了机器人在建筑内静止和运动两种状态下的信息。每帧大约包含30000个3D点。我们还记录了机器人里程计信息、坐标变换以及机器人周边的全景图像，为算法评估提供了完整的真值标注。该数据集涵盖了很多现有主流方案大多未处理过的挑战性场景，例如人群、儿童、推行李车的行人等，如图7所示。

共有5492帧（约占总数的19.6%）通过全新开源GUI工具$^{3}$完成手动标注，共包含6140个单人标注（“行人”）。单人标注中包含的3D点数量最少为3个，最多为3925个；传感器到标注单人的距离最小为0.5米，最大为27.0米。

### B. 实验设置

我们的框架已以高模块化的形式完整实现于机器人操作系统（Robot Operating System, ROS）[^25]中。所有组件都可供其他研究人员下载$^{4}$和使用。本文的数据集采集及所有实验均在Ubuntu 14.04 LTS（64位）+ ROS Indigo环境下完成，硬件配置为Intel i7-4785T处理器与8 GB内存。数据以传感器参考坐标系记录，坐标帧之间的变换通过ROS tf包实现。

### C. 聚类性能

已有研究表明，当传感器更新率为$\geq 5$ Hz时，可成功实现实时人体追踪[^10]。本次实验中，我们让检测器在整个数据集上运行，观测其在不同检测距离下的工作频率。图8表明，我们的簇检测器性能满足所需的更新

![Image](images/2b699b4dd60431d1a9d2c76953e84a8b4d82a5d02f9ad66e7e698208f50ca85c.jpg)

<div style="text-align: center;">(a) people with luggage</div>

![Image](images/664ec95f493be33dbb3fc434139565456148912c6978210c5b7d21c105615ef0.jpg)

<div style="text-align: center;">(b) children</div>

![Image](images/baf875726e07dadb2a15eabf8a1ad8c14a6f509a0ab464203f4f36edefe9726b.jpg)

<div style="text-align: center;">(c) crowd of people</div>

![Image](images/d7280532b1636eae7a28a7749cc3d9e0f8ea264ea82285ed2bb6113690ad4940.jpg)

<div style="text-align: center;">(d) human group</div>

![Image](images/fab08580f3643012ecdd0645c79c41b73a1184d8ef3753eb0385f497a3ea19f6.jpg)

<div style="text-align: center;">(e) sitting people</div>

![Image](images/54912e8c747153d4a68203c27e761905258406ddb7351be382ebfb5251e4abbb.jpg)

<div style="text-align: center;">(f) people on stairs</div>

![Image](images/bb6b014d16d24298bfd60087a2600967d42df1632bfb55b963f64508c887641e.jpg)

<div style="text-align: center;">(g) people with trolley I</div>

![Image](images/4fdf3c3e7b023817a78302e73fee10e0fa9208f36e11831a15452a617b400229.jpg)

<div style="text-align: center;">(h) people with trolley II</div>

<div style="text-align: center;">Fig. 7. Different challenges captured in our dataset.</div>

![Image](images/0e6bce8270e96d50f5c08cc542bfe3edcfb801eb27faa6d470518ecccda1a363.jpg)

<div style="text-align: center;">Fig. 8. Clustering performance over a range of distances, with mean shown on the right of each box.</div>

率要求。结果表明，平均频率随聚类距离增加而降低，在22米之后趋于稳定。但检测速度始终满足实时人体追踪的要求，仅需简单降低最大检测范围即可进一步提升速度。

值得注意的是，可同时跟踪的运动目标最大数量为17个。借助我们的聚类检测器，传感器到被跟踪运动目标的最大距离约为25米。此外，得益于$360^{\circ}$三维激光雷达的水平视场，我们能够对同一目标连续跟踪超过40米（总路径长度），对应线性

---

<div style="text-align: center;">TABLE II</div>

<div style="text-align: center;">PERFORMANCE ANALYSIS OF THE P-N EXPERTS</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Iteration</td><td style='text-align: center; word-wrap: break-word;'>P</td><td style='text-align: center; word-wrap: break-word;'>TP</td><td style='text-align: center; word-wrap: break-word;'>FP</td><td style='text-align: center; word-wrap: break-word;'>N</td><td style='text-align: center; word-wrap: break-word;'>TN</td><td style='text-align: center; word-wrap: break-word;'>FN</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>175</td><td style='text-align: center; word-wrap: break-word;'>175</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>2</td><td style='text-align: center; word-wrap: break-word;'>174</td><td style='text-align: center; word-wrap: break-word;'>174</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>39</td><td style='text-align: center; word-wrap: break-word;'>39</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>156</td><td style='text-align: center; word-wrap: break-word;'>151</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>5</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>113</td><td style='text-align: center; word-wrap: break-word;'>110</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>49</td><td style='text-align: center; word-wrap: break-word;'>49</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>25</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>25</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>6</td><td style='text-align: center; word-wrap: break-word;'>183</td><td style='text-align: center; word-wrap: break-word;'>183</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>130</td><td style='text-align: center; word-wrap: break-word;'>84</td><td style='text-align: center; word-wrap: break-word;'>46</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>7</td><td style='text-align: center; word-wrap: break-word;'>41</td><td style='text-align: center; word-wrap: break-word;'>41</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>122</td><td style='text-align: center; word-wrap: break-word;'>121</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>123</td><td style='text-align: center; word-wrap: break-word;'>123</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>108</td><td style='text-align: center; word-wrap: break-word;'>106</td><td style='text-align: center; word-wrap: break-word;'>2</td><td style='text-align: center; word-wrap: break-word;'>93</td><td style='text-align: center; word-wrap: break-word;'>93</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>11</td><td style='text-align: center; word-wrap: break-word;'>102</td><td style='text-align: center; word-wrap: break-word;'>101</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>29</td><td style='text-align: center; word-wrap: break-word;'>29</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>12</td><td style='text-align: center; word-wrap: break-word;'>129</td><td style='text-align: center; word-wrap: break-word;'>129</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>13</td><td style='text-align: center; word-wrap: break-word;'>67</td><td style='text-align: center; word-wrap: break-word;'>67</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>185</td><td style='text-align: center; word-wrap: break-word;'>55</td><td style='text-align: center; word-wrap: break-word;'>130</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>14</td><td style='text-align: center; word-wrap: break-word;'>37</td><td style='text-align: center; word-wrap: break-word;'>34</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>15</td><td style='text-align: center; word-wrap: break-word;'>63</td><td style='text-align: center; word-wrap: break-word;'>63</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>16</td><td style='text-align: center; word-wrap: break-word;'>115</td><td style='text-align: center; word-wrap: break-word;'>110</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>17</td><td style='text-align: center; word-wrap: break-word;'>57</td><td style='text-align: center; word-wrap: break-word;'>57</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>18</td><td style='text-align: center; word-wrap: break-word;'>33</td><td style='text-align: center; word-wrap: break-word;'>31</td><td style='text-align: center; word-wrap: break-word;'>2</td><td style='text-align: center; word-wrap: break-word;'>30</td><td style='text-align: center; word-wrap: break-word;'>30</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>19</td><td style='text-align: center; word-wrap: break-word;'>41</td><td style='text-align: center; word-wrap: break-word;'>41</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>20</td><td style='text-align: center; word-wrap: break-word;'>37</td><td style='text-align: center; word-wrap: break-word;'>30</td><td style='text-align: center; word-wrap: break-word;'>7</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Total</td><td style='text-align: center; word-wrap: break-word;'>1952</td><td style='text-align: center; word-wrap: break-word;'>1896</td><td style='text-align: center; word-wrap: break-word;'>56</td><td style='text-align: center; word-wrap: break-word;'>536</td><td style='text-align: center; word-wrap: break-word;'>330</td><td style='text-align: center; word-wrap: break-word;'>206</td></tr><tr><td colspan="7">P-precision || 97 1% || N-precision || 61 6%</td></tr></table>

P-precision 97.1% N-precision 61.6%

### D. 专家性能

位移接近30米。

表II报告了我们的P-N专家经过20次学习迭代后的性能。我们在每次迭代中统计所有正样本（P）、真阳性（TP）、假阳性（FP）、所有负样本（N）、真阴性（TN）和假阴性（FN），并报告各专家的总统计量和精度。P专家的精度较高，因为我们数据集中的运动目标大多是人类。N专家的精度较低，因为我们“人不会完全静止”的假设并非始终成立。例如，在第13次迭代中，N专家的错误数量相对较多，原因是一名长时间站在静态物体附近的人被归为了负样本。但结果表明，P专家的总错误数（56）远少于N专家生成的正确样本数（330），且P专家的正确样本数（1896）远多于N专家的错误数（206），满足第三节中讨论的稳定性准则。

### E. 分类结果

我们对离线训练分类器和在线学习分类器的分类性能进行了对比。为了展示在线学习分类器的性能变化，我们对初始分类器和最终分类器都进行了评估。离线分类器使用标注数据训练，即包含6140个单人样本，以及同等数量随机选取的负样本（非人类）。在线初始分类器由人工监督者使用100个正样本加上同等数量随机选取的负样本训练得到。之后，每积累300个正样本和300个负样本，就对在线分类器重新训练一次，直到获得6140个正样本和6140个负样本为止。

测试集方面，我们从数据集中选取了分布在18分钟内的100个扫描帧（排除已经手动标注过的帧），并对这些帧进行了完整标注，包含站立和坐下的人员。测试集共包含995个单人标注，点簇大小从5到2250不等，与传感器的距离范围为0.7米到19.9米。我们使用精确率（Precision）、召回率（Recall）、平均精度（Average Precision, AveP）[^26]和F值（F-measure）评估分类性能。当真实标注与检测结果的重叠度大于50%时，即判定为真阳性。实验结果如图9所示。结果表明，经过在线学习，最终分类器相较于初始分类器取得了大幅提升。此外，最终的在线分类器性能达到甚至部分超过了离线训练分类器，这也得益于我们的在线学习框架能够方便地处理跟踪器提供的大量远距离样本，这类样本很难由人工标注员完成标注。

### VII. 结论

本文提出了一种用于从3D LiDAR扫描中进行人体分类的在线学习框架。该框架依托于鲁棒的多目标跟踪系统，能够让移动机器人直接从部署环境中学习人类的外观特征，大幅降低了对数据标注的需求。受已有P-N学习方法启发，本文开发了两个基于跟踪的专家模块，用于在每次学习迭代中纠正分类器产生的错误。基于真实场景数据集的实验结果表明，分类性能得到了显著提升。

本文提出的框架可实时运行，已以高模块化程度在ROS中完成了完整实现。软件和数据集已向研究界公开，可供开展不同机器人分类性能的客观、系统对比。此外，我们的框架可轻松扩展至其他移动目标（如汽车、自行车和动物），或其他传感器（如RGB-D相机和二维LiDAR）。

未来工作将包括扩展该方法：利用在线学习得到的分类器提升人体检测与跟踪效果，通过跟踪人体体型更好地区分不同聚类（例如矮个子人群和高个子人群），以及融合其他传感器，更好地应对人群、强遮挡等挑战性场景。

## 致谢

本项目得到了欧盟地平线2020研究与创新计划资助，资助协议编号为645376（FLOBOT）。

## 参考文献

## [^1]: L. E. Navarro-Serment, C. Mertz, and M. Hebert, “Pedestrian detection and tracking using three-dimensional radar data,” in Proceedings of the 7th Conference on Field and Service Robotics (FSR), 2009, pp. 103–112.


---

![Image](images/43a6ec2e05b386548266bee4c4a387a99ae4ffab32523cb8da3d5a4aaa8b07b6.jpg)

![Image](images/8550f4c67a8adde0634566643ea0ac8f97aaa49d2884911d0d31ff8f71e6f387.jpg)

<div style="text-align: center;">Fig. 9. Performance evaluation of offline and online human classifiers.</div>

[^2]: J. Shackleton, B. V. Voorst, and J. A. Hesch, “Tracking people with a 360-degree lidar,” in Proceedings of the Seventh IEEE International Conference on Advanced Video and Signal Based Surveillance (AVSS), 2010, pp. 420–426.

[^3]: K. Kidono, T. Miyasaka, A. Watanabe, T. Naito, and J. Miura, “Pedestrian recognition using high-definition LIDAR,” in Proceedings of the 2011 IEEE Intelligent Vehicles Symposium (IV), 2011, pp. 405–410.

[^4]: L. Spinello, M. Luber, and K. O. Arras, “Tracking people in 3d using a bottom-up top-down detector,” in Proceedings of the 2011 IEEE International Conference on Robotics and Automation (ICRA), 2011, pp. 1304–1310.

[^5]: A. Teichman and S. Thrun, "Tracking-based semi-supervised learning," International Journal of Robotics Research (IJRR), vol. 31, no. 7, pp. 804–818, 2012.

[^6]: M. D. Deuge, A. Quadros, C. Hung, and B. Douillard, “Unsupervised feature learning for classification of outdoor 3d scans,” in Proceedings of the Australasian Conference on Robotics and Automation (ACRA), 2013.

[^7]: K. Li, X. Wang, Y. Xu, and J. Wang, “Density enhancement-based long-range pedestrian detection using 3-d range data,” IEEE Transactions on Intelligent Transportation Systems, vol. 17, pp. 1368–1380, 2016.

[^8]: D. Z. Wang and I. Posner, “Voting for voting in online point cloud object detection,” in Proceedings of Robotics: Science and Systems, 2015.

[^9]: A. Geiger, P. Lenz, and R. Urtasun, "Are we ready for autonomous driving? the KITTI vision benchmark suite," in Proceedings of the 2012 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2012, pp. 3354–3361.

[^10]: N. Bellotto and H. Hu, “Computationally efficient solutions for tracking people with a mobile robot: an experimental evaluation of bayesian filters,” Autonomous Robots, vol. 28, pp. 425–438, 2010.

[^11]: Z. Kalal, K. Mikolajczyk, and J. Matas, "Tracking-learning-detection," IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 34, pp. 1409–1422, 2012.

[^12]: L. Spinello and K. O. Arras, “People detection in RGB-D data,” in Proceedings of the 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2011, pp. 3838–3843.

[^13]: M. Munaro and E. Menegatti, “Fast RGB-D people tracking for service robots,” Autonomous Robots, vol. 37, pp. 227–242, 2014.

[^14]: R. B. Rusu, “Semantic 3D object maps for everyday manipulation in human living environments,” Ph.D. dissertation, Computer Science department, Technische Universitaet Muenchen, Germany, 2009.

[^15]: I. Bogoslavskyi and C. Stachniss, “Fast range image-based segmentation of sparse 3d laser scans for online operation,” in Proceedings of the 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2016, pp. 163–169.

[^16]: T. Linder, S. Breuers, B. Leibe, and K. O. Arras, “On multi-modal people tracking from mobile platforms in very crowded and dynamic environments,” in Proceedings of the 2016 IEEE International Conference on Robotics and Automation (ICRA), 2016, pp. 5512–5519.

[^17]: A. Teichman, J. Levinson, and S. Thrun, “Towards 3d object recognition via classification of arbitrary object tracks,” in Proceedings of the 2011 IEEE International Conference on Robotics and Automation (ICRA), 2011, pp. 4034–4041.

[^18]: A. Dewan, T. Caselitz, G. D. Tipaldi, and W. Burgard, “Motion-based detection and tracking in 3D LiDAR scans,” in Proceedings of the 2016 IEEE International Conference on Robotics and Automation (ICRA), 2016, pp. 4508–4513.

[^19]: J. Read, A. Bifet, B. Pfahringer, and G. Holmes, “Batch-incremental versus instance-incremental learning in dynamic and evolving data,” in Proceedings of the Eleventh International Symposium on Intelligent Data Analysis (IDA 2012), 2012, pp. 313–323.

[^20]: C. Dondrup, N. Bellotto, F. Jovan, and M. Hanheide, “Real-time multisensor people tracking for human-robot spatial interaction,” in Proceedings of the 2015 IEEE International Conference on Robotics and Automation (ICRA), Workshop on Machine Learning for Social Robotics, 2015.

[^21]: C. Cortes and V. Vapnik, “Support-vector networks,” Machine Learning, vol. 20, no. 3, pp. 273–297, 1995.

[^22]: C.-C. Chang and C.-J. Lin, "LIBSVM: A library for support vector machines," ACM Transactions on Intelligent Systems and Technology, vol. 2, pp. 1–27, 2011.

[^23]: S. S. Keerthi and C.-J. Lin, “Asymptotic behaviors of support vector machines with gaussian kernel,” Neural Computation, vol. 15, no. 7, pp. 1667–1689, 2003.

[^24]: B. J. Mohler, W. B. Thompson, S. H. Creem-Regehr, H. L. Pick, and W. H. Warren, “Visual flow influences gait transition speed and preferred walking speed,” Experimental brain research, vol. 181, no. 2, pp. 221–228, 2007.

[^25]: M. Quigley, K. Conley, B. P. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler, and A. Y. Ng, “ROS: an open-source robot operating system,” in ICRA Workshop on Open Source Software, 2009.

[^26]: M. Everingham, L. J. V. Gool, C. K. I. Williams, J. M. Winn, and A. Zisserman, “The pascal visual object classes (VOC) challenge,” International Journal of Computer Vision, vol. 88, pp. 303–338, 2010.
