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

严智（Zhi Yan），汤姆·达克特（Tom Duckett），尼科拉·贝洛托（Nicola Bellotto）

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

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

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

摘要——人体检测与跟踪是服务机器人领域必须考虑的核心问题，因为机器人通常会与人类共享工作空间，并进行近距离交互。本文提出了一种用于3D LiDAR扫描中人体分类的在线学习框架，利用鲁棒多目标跟踪避免了人工专家标注数据的需求。该系统通过机器人随时间采集的样本在线迭代重训练分类器，实现迭代学习。我们方法的创新之处在于，能够利用基于3D LiDAR跟踪得到的信息校正训练数据中的错误。为实现该框架，我们设计了一种高效的潜在人体目标三维聚类检测器。我们在一个全新的大型室内公共空间行人移动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>

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

在本文中，我们开发了一个在线学习框架，用于从三维激光雷达检测中对人体进行分类，利用并扩展了我们此前开发的多目标跟踪系统$^{1}$ [^10]，使其适配三维激光雷达扫描数据。我们依托假阳性估计器和假阴性估计器进行判断，这与以往跟踪-学习-检测技术中提出的正“专家”和负“专家”思路类似[^11]，但本文工作中我们用该框架在线训练一个仅从检测结果中筛选人体的分类器（即分类性能不会影响跟踪过程）。

本文的贡献共有三点：第一，我们提出了一种计算高效的三维激光雷达扫描聚类算法，适用于实时无模型检测与跟踪任务。第二，我们提出了人体分类器的在线学习框架，该框架可以估计分类器的误差并对其更新，从而持续提升分类性能。最后，我们提供了一个包含部分标注的三维激光雷达点云大型数据集$^{2}$，可供研究界用于人体分类器的训练与性能对比。该数据集提出了面向室内服务机器人的全新研究挑战。

---

其中包含人群、儿童、推行手推车的行人等场景。

本文其余部分组织结构如下：第二节概述相关研究文献，重点介绍基于三维激光雷达的人体检测与跟踪相关工作。随后我们在第三节介绍本文提出的框架，以及跟踪与在线学习之间的关联。跟踪相关内容在第四节介绍，包含三维聚类检测的详细描述。实际在线学习过程在第五节说明，该部分阐明了P-N专家在通过跟踪优化分类过程中的作用。第六节介绍实验设置、实验结果以及我们发布的全新三维激光雷达数据集。最后，第七节讨论结论与未来研究方向。

### 二、相关研究工作

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

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

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

除了使用RGB-D相机采集的数据集[^12]、[^13]、[^16]之外，目前学术界公开了少量适用于户外场景的三维LiDAR数据集[^4]、[^6]、[^9]、[^17]，但都没有像本文提出的这种针对大型室内环境人体跟踪的标注数据。

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

不难看出，针对三维LiDAR扫描的无标注、高可靠性人体分类实现方案的实际需求，与当前现有技术水平之间仍存在巨大差距。本文工作证明了在高动态环境中，将跟踪与在线学习结合应用于移动机器人可以提升人体分类性能，从而帮助缩小这一差距。

### 三、总体框架

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

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

---

![Image](images/190ca60886e7ae9c3bbcb94b543bfdbd1583df4a9429fa00ac27168064c95bab.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出错的数量。虽然在现实世界中这些假设并不总能满足，但由于我们运行的环境中绝大多数移动目标都是人类，偶发错误也能在线修正，因此我们系统的稳定性得到了保障。

### IV. 基于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. 多目标跟踪器

我们采用无迹卡尔曼滤波（Unscented Kalman Filter, UKF）和最近邻（Nearest Neighbour, 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的性能优于扩展卡尔曼滤波（Extended Kalman Filters, EKF）[^10]。最后，NN数据关联处理多个聚类观测，从而并行更新多个UKF（即每个跟踪目标对应一个UKF）。

### 五. 用于人体分类的在线学习

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

### A. 人体分类器

我们采用支持向量机（Support Vector Machine, 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 and\quad v_{min}^{p}\leq v_{k}\leq v_{max}^{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帧扫描数据，由机器人在建筑内静止和移动状态下分别采集得到。每一帧包含约3万个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处理器，搭配8GB内存。数据以传感器参考坐标系记录，坐标帧之间的变换通过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米。此外，得益于3D激光雷达$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精确率 97.1% N精确率 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-measure评估分类性能。当真实标注与检测结果的重叠率大于50%时，判定为真阳性。实验结果如图9所示。结果表明，经过在线学习，最终分类器相对初始分类器取得了大幅提升。此外，最终的在线分类器性能与离线训练分类器相当，部分情况下更优，这也得益于我们的在线学习框架便于检测跟踪器提供的大量长距离样本，而这类样本很难由人工标注员完成标注。

### VII. 结论

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

本文提出的框架可实时运行，且已以高模块化程度完整实现于ROS中。软件和数据集已对研究界公开，可供研究者对不同机器人的分类能力开展客观、系统的对比。此外，该框架易于扩展至其他运动目标（如汽车、自行车和动物），也可适配其他传感器（如RGB-D相机和二维激光雷达（2D 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.
