综述部分
📌 物体检测和跟踪可以分为基于模型的(model-based)和不依赖模型的(model-free)。
基于模型的方法的主要缺点是它们不能泛化到不同类别的对象。(泛化能力差)
无模型方法主要基于运动线索,能够检测和跟踪任意形状和大小的对象。通过先验的静态地图来判断是否为运动物体在物体运动很小的时候很容易失败。
model-free的方法:
- Kaestner et al. [6,”Generative object detection and tracking in 3d range data”] 提出了一种基于KF的静态传感器的动态物体检测和跟踪框架。
- Wang et al. [16,”Modelfree detection and tracking of dynamic objects with 2d lidar.”] 提出了一种无模型方法,用于在 2D LiDAR 数据中进行检测和跟踪。使用联合状态表示,他们估计传感器的状态、局部静态地图和动态对象的状态。每个传入扫描都与本地静态地图和动态对象相关联。
- Azim et al.[1,”Detection, classification and tracking of moving objects in a 3d environment.”] 使用基于八叉树的占用网格来表示环境,并确定地图和传入扫描之间的不一致以检测动态对象。
- Tipaldi et al. [13] & Van De Ven et al. [15] 基于CRF的方法。
- Moosmann et al. [7,”Joint self-localization and tracking of generic objects in 3d range data.”] 使用基于local convexity的分割方法实现物体检测,结合了 ICP 和用于跟踪的卡尔曼滤波器用于物体跟踪。
本文的方法不使用先验形状进行检测,而仅依赖运动信息,实际效果较好。
算法部分
FRAMEWORK OVERVIEW
📌 算法框图:
- 传感器跟踪模块使用静态点云 P t S P^S_t PtS估计自身传感器的位姿 T t S T^S_t TtS.
- 目标跟踪模块使用动态物体的点云 P t D P^D_t PtD,其中 P t D = P t D 1 + . . . + P t D N P^D_t=P^{D_1}_t+...+P^{D_N}_t PtD=PtD1+...+PtDN由不同动态对象的多个不相交点集组成。目标跟踪模块估计他们的位姿 T t D = T t D 1 + . . . + T t D N T^D_t=T^{D_1}_t+...+T^{D_N}_t TtD=TtD1+...+TtDN
- 所有未被跟踪模块提供历史轨道的点 P t − P t S − P t D P_t-P^S_t-P^D_t Pt−PtS−PtD进入物体检测模块,这些点要么添加到静态点集 P t S P^S_t PtS,要么创建一个新的动态对象 P t D k P^{D_k}_t PtDk,要么分配给未知点云集 P t U P^U_t PtU。对于第一次扫描,所有点都是未知的,即 P t = P 1 U P_t=P^U_1 Pt=P1U.
MOTION-BASED DETECTION
A. Motion Models
📌 我们使用 RANSAC 来估计传感器和动态对象的运动模型 Tt ∈ SE(3):
通过匹配
P
t
−
1
P_{t-1}
Pt−1的特征点
F
t
−
1
F_{t-1}
Ft−1和
P
t
P_t
Pt的SHOT descriptors[14,”Unique signatures of histograms for local surface description.”]计算传感器和动态物体的初始位姿
T
t
T_t
Tt,丢弃
F
t
−
1
F_{t-1}
Ft−1中匹配距离大于阈值的点,剩下的点记作
I
t
−
1
I_{t-1}
It−1。此时的初始位姿
T
t
T_t
Tt仅仅和
I
t
−
1
I_{t-1}
It−1相关,下面通过Bayesian approach将
I
t
−
1
I_{t-1}
It−1扩展到整个扫描帧
P
t
−
1
P_{t-1}
Pt−1.本节的作用是通过RANSAC计算
T
t
T_t
Tt,同时输出内点作为贝叶斯方法的先验信息。
B. Bayesian Approach
📌 我们提出了一种贝叶斯方法来确定每个点
p
k
p_k
pk遵循给定运动模型的概率。
我们将
p
k
p_k
pk的遵循运动模型
T
t
T_t
Tt的概率表示为遵循伯努利分布的随机变量
h
k
h_k
hk,其中
h
k
=
1
h_k=1
hk=1表示
p
k
p_k
pk遵循运动模型
T
t
T_t
Tt。所提出的贝叶斯方法的目标是计算概率
p
(
h
k
∣
P
t
,
p
^
k
)
p(h_k|P_t,\hat p_k)
p(hk∣Pt,p^k),
p
^
k
\hat p_k
p^k是
p
k
p_k
pk经过
T
t
T_t
Tt转换过的点,即通过
T
t
T_t
Tt计算的
p
^
k
\hat p_k
p^k和
P
t
P_t
Pt处于同一个坐标系。
p
(
h
k
∣
P
t
,
p
^
k
)
p(h_k|P_t,\hat p_k)
p(hk∣Pt,p^k)表达的是在
p
^
k
\hat p_k
p^k和
P
t
P_t
Pt的相关性(包括空间距离、局部几何相似性等)的条件下,
p
k
p_k
pk服从运动模型
T
t
T_t
Tt的概率。
假设 h k h_k hk和 p ^ k \hat p_k p^k是互相独立的,那么有下式:
接下来对似然
p
(
P
t
∣
h
k
,
p
^
k
)
p(P_t|h_k,\hat p_k)
p(Pt∣hk,p^k)建模:
p
(
P
t
∣
h
k
,
p
^
k
)
p(P_t|h_k,\hat p_k)
p(Pt∣hk,p^k)描述的是在已知
p
^
k
\hat p_k
p^k是否服从运动模型
T
t
T_t
Tt的条件下,
t
t
t时刻的激光点云是
P
t
P_t
Pt的概率。
假设点
p
p
p到传感器的距离为
z
z
z.由于
p
(
h
k
)
p(h_k)
p(hk)的大小只与
p
^
k
\hat p_k
p^k的邻域
N
k
⊂
P
t
N_k \subset P_t
Nk⊂Pt有关,因此在假设点
p
l
∈
N
k
p_l \in N_k
pl∈Nk的情况下,
N
k
N_k
Nk是
P
t
P_t
Pt中
p
^
k
\hat p_k
p^k的邻域,因为
P
t
P_t
Pt中距离
p
^
k
\hat p_k
p^k较远的点云出现的概率和
p
^
k
\hat p_k
p^k是否服从运动模型
T
t
T_t
Tt无关,故可以对似然建模为:
如果
h
k
=
1
h_k=1
hk=1,
如果
h
k
=
0
h_k=0
hk=0,
模拟撞到预期表面的概率
p
h
i
t
p_{hit}
phit、撞到前面意外障碍物的概率
p
s
h
o
r
t
p_{short}
pshort、最大范围测量的
p
m
a
x
p_{max}
pmax和无法解释的测量结果的
p
r
a
n
d
p_{rand}
prand。
引入局部几何特征的余弦相似度
c
k
l
c_{kl}
ckl来描述局部几何的一致性:
其中 f k f_k fk是 p ^ k \hat p_k p^k的SHOT描述子, f l f_l fl是 p ^ l \hat p_l p^l的SHOT描述子.
将余弦相似度引入似然函数:
接下来对先验
p
(
h
k
)
p(h_k)
p(hk)建模:
p
(
h
k
)
p(h_k)
p(hk)描述的是
p
k
∈
P
t
−
1
p_k \in P_{t-1}
pk∈Pt−1遵循运动模型
T
t
T_t
Tt的先验概率,由于
p
k
p_k
pk很有可能遵循其周围点相同的运动状态,我们利用 RANSAC 提供的信息对此先验建模,即
p
k
p_k
pk附近的点是否在内部点集
I
t
−
1
⊂
F
t
−
1
I_{t-1} \sub F_{t-1}
It−1⊂Ft−1中。通过在
p
k
p_k
pk周围绘制一个球体来计算邻域:
如果
p
k
p_k
pk周围有很多内点,很少外点,那么
p
k
p_k
pk很有可能服从运动模型
T
t
T_t
Tt.
因此定义
$p_0(h_l)=\begin{cases} 1 & \text{if
p
l
∈
I
t
−
1
p_l \in I_{t-1}
pl∈It−1} \[2ex] 0 & \text{otherwise} \[2ex] \end{cases}$
p ( h k ) = ∑ p l ∈ N k F w k l p 0 ( h l ) ∑ p l ∈ N k F w k l p(h_k)=\frac {\sum_{p_l \in N^F_k}w_{kl}p_0(h_l)} {\sum_{p_l \in N^F_k}w_{kl}} p(hk)=∑pl∈NkFwkl∑pl∈NkFwklp0(hl)
w
k
l
w_{kl}
wkl代表了
p
l
p_l
pl和
p
k
p_k
pk的相关性,距离越小相关性越大,服从高斯分布:
C. Data Association
📌 数据关联就是对当前帧的点云
P
t
P_t
Pt进行分类,将它们分配给相应的运动模型
T
t
T_t
Tt.
由于传感器运动和噪声,每次扫描都由从真实结构表面采样的不同点组成。因此,在
P
t
−
1
P_{t-1}
Pt−1和
P
t
P_{t}
Pt之间建立点对点的对应关系是不可行的。
- 根据上一节中的贝尔斯方法计算出的 P t − 1 P_{t-1} Pt−1中 p k p_k pk服从 T t T_t Tt的概率 p ( h k = 1 ∣ P t , p ^ k ) p(h_k=1|P_t,\hat p_k) p(hk=1∣Pt,p^k)可以将那些有着高概率服从 T t T_t Tt的点 p k ∗ ∈ P ^ t − 1 ∗ p^*_k \in \hat P^*_{t-1} pk∗∈P^t−1∗提取出来
- 通过在所有点 p k ∗ ∈ P ^ t − 1 ∗ p^*_k \in \hat P^*_{t-1} pk∗∈P^t−1∗.周围绘制球体来确定邻域 N N N的联合。
- 如果点
p
l
∈
P
t
p_l \in P_t
pl∈Pt在邻域
N
N
N内,那么
p
l
p_l
pl服从运动模型
T
t
T_t
Tt.
通过以上3个步骤,我们可以根据 P t P_t Pt中点的运动模型将它们分类。并分配到静态点云 P t S P_t^S PtS或者一个动态物体 P t D i P^{D_i}_t PtDi,我们应用欧几里得聚类来处理跟随相同运动的多个对象。
D. Multiple Motions
📌 通过以上三个小节,我们进行了一些操作:
- 使用RANSAC检测物体(A. Motion Models),获取满足运动模型 T t T_t Tt的内点和先验。
- 使用Bayesian approach(B.Bayesian Approach)获取某个点服从运动模型 T t T_t Tt的概率
- 根据点服从运动模型的概率,对点进行聚类,从而完成了数据关联。
以上3个步骤可以用于关联一个运动物体或者静止点云,如果有多个运动物体呢?
我们可以将以上步骤执行多次,来跟踪多个运动物体。执行完一次就删除满足其运动模型 T t T_t Tt的点云。
由于我们假设周围大部分的点云属于静止点云,因此我们默认第一次检测到的运动 T t T_t Tt为传感器的运动 T t S T^S_t TtS。
对于随后检测出的运动 T t D i T^{D_i}_t TtDi,如果 ∣ ∣ T t D i − T t S ∣ ∣ F > ε ||T^{D_i}_t-T^S_t||_F>ε ∣∣TtDi−TtS∣∣F>ε,那么我们创建一个新的动态对象。如果不满足上述关系,那么将这部分点云添加到静态点云。
TRACKING THE SENSOR AND DYNAMIC OBJECTS
📌 通过以上的内容,我们可以在不知道传感器的运动状态的条件下,实现区分静态点云和动态点云,并实现前后帧动态物体的数据关联。下面介绍如果跟踪传感器和动态对象的运动。
A. Sensor Motion
📌 首先将上一帧的静态点云转换到当前帧点云的坐标系中:
基于距离最近的原则,寻找对应点,然后使用RANSAC估计传感器相邻帧的位姿增量 T ^ t S \hat T^S_t T^tS
然后更新传感器的位姿
T t S = T ^ t S ∗ T t − 1 S T^S_t=\hat T^S_t*T^S_{t-1} TtS=T^tS∗Tt−1S
此处注意,静态点云的运动和传感器的运动是互逆的,因此上式成立。
B. Dynamic Objects
📌 首先将上一帧的动态点云转换到当前帧点云的坐标系中:
在(C. Data Association)中我们确定了运动物体点云
P
t
−
1
D
i
P^{D_i}_{t-1}
Pt−1Di的邻域
N
⊂
P
t
N \sub P_t
N⊂Pt,我们通过匹配 SHOT 描述子来找到
P
t
−
1
D
i
P^{D_i}_{t-1}
Pt−1Di和
N
N
N中点云的对应关系,使用RANSAC来估计运动模型
T
t
D
i
T^{D_i}_t
TtDi.
我们为每个分割的动态对象创建一个Tracklet,由其运动模型和点集定义。跟踪超过 NT 扫描的Tracklet 被提升为轨道。我们做出这种区分是为了避免误报。当对象不再在传感器视野中或完全被遮挡时,轨迹丢失。为了解决临时遮挡,我们根据对象最后一次观察预测边界框。当点重新出现在轨道边界框内时,我们恢复了轨道。
实验部分
📌 使用64线Velodyne激光雷达。为了进行广泛的定量分析,我们手动标记了除行人之外的所有动态对象,并将我们的方法的结果与 Moosmann 等人提出的移动对象映射 (MOM) 方法进行了比较 [7,”Joint self-localization and tracking of generic objects in 3d range data.”]。对于本节介绍的所有实验,我们选择 ζ = 0.95、ε = 0.2 和 NT = 8。
在向框架提供扫描帧之前移除了地平面,因此没有对地点进行分类。
从图中看,可以对汽车、卡车、自行车分类,但是无法对行人进行分类,因为行人的运动速度太慢了,而且行人不是刚体。而且由于行人相对较小的尺寸,行人也可能由很少的点组成,尤其是当他们远离传感器时。
统计了准确率(正确检测数与检测数之间的比率)和召回率(正确检测数与边界框数之间的比率),我们对序列的所有扫描进行平均精度和召回率,并计算 F1 分数。我们还定义了一个对象召回(ObjRcl),它测量根据基本事实检测到对象的扫描次数与实际存在的扫描次数之间的比率。我们在所有对象上平均这个值。与召回相反,每个对象对对象召回的贡献相同,与对象存在的扫描次数无关。
统计了真实轨道数目和算法跟踪到的轨道数目
![在这里插入图片描述](https://img-blog.csdnimg.cn/879d38b265364f54af72e82e7b2ea36d.png
总结
📌 本篇论文的创新点:
- 提出了一种基于运动线索的多物体关联跟踪的方法,不依赖于任何先验信息和模型。
可以检测多种尺度的运动物体,和运动物体的尺寸无关,只要物体是运动的就可以检测出来。但是这样导致无法检测出运动速度较小的物体,例如行人。 - 提出了基于贝叶斯的点服从运动模型的概率,并基于此进行数据关联。
思考:
- 使用本文的基于运动线索的方法对运动物体进行检测,估计传感器运动时采用特征点匹配的方式精度是否比RANSAC的精度高一些?
- 本文中需要观测到一个物体超过NT(NT=8)帧才对其建立轨道,从而避免了误报,同时对物体轨迹进行预测,建立预测的Bounding Box,从而对障碍物遮挡鲁棒。
- 本文的方法无法关联跟踪静态物体,可以对本文的静态点云执行一些操作,用来检测静态物体(例如停止的汽车),由于这些物体是静止的,关联的准确度应该很高,同时使用一些基于非运动线索的方法对行人进行检测。