Offboard 3D Object Detection from Point Cloud Sequences

Offboard 3D Object Detection from Point Cloud Sequences

通过连续帧的信息来辅助进行3D检测,专注于离线的3D自动标注任务,与车载算法相比,遥遥领先。
在这里插入图片描述

Introduction

3D目标检测更多的关注于实时性,车载(轻量化)。并且只利用单帧或少数连续帧的信息,但对于非车载的离线场景,对于性能有着最高优先级的情况下,这些算法都是次优的选择。
因此我们提出了一个专注于离线场景的3D检测pipeline, 采用时序的连续帧数据作为输入,没有其他额外的代价考虑,可以更专注提升模型性能。
关键观点: 不同视角下/时间的点云可以对目标的几何信息进行互补。
[图片]

一个直接的想法便是直接将多帧作为输入,但是即便多帧输入是有效的,现有检测器依然受限于输入数据的信息利用率,并无法通过单纯的增加帧数而实现收益的线性增长:
[图片]

为了更好的利用点云数据的时序性,我们不再采用以帧数为单位对点云进行融合/拼接的输入模式,而是采用object-centric的设计思路:
[图片]

  1. 首先利用现有的SOTA检测器对多目标检测效果最好的帧进行定位
  2. 然后通过多目标追踪将定位到的目标在不同帧中的点云联系起来,基于跟踪结果和原始点云,可以提取出目标的整个轨迹数据,即目标的4D信息(空间+时间)
  3. 然后将4D数据输入到我们提出的新的深层模型中,并输出时间一致性的3D检测结果。

主要贡献

  • 提供了一种离线点云3D检测新的范式
  • 在waymo数据集上取得了SOTA的性能
  • 研究了人工标注在人工标注与自动标注之间的权衡
  • 论证了自动标注对半监督学习的有效性

Offboard 3D Object Detection

Problem statement
 对于一个 N 帧序列点云 Pi∈Rni×C,i=1,2,...,N{Pi∈R^{n_i×C}},i=1,2,...,NPiRni×C,i=1,2,...,N,已知每帧点云传感器在世界坐标系下的位姿 Mi=[Ri∣ti]∈R3×4,i=1,2,...,N{M_i=[R_i|t_i]∈R^{3×4}},i=1,2,...,NMi=[Riti]R3×4,i=1,2,...,N,那么我们要得到每帧点云中的目标 3D 属性(包括中心点,尺寸,朝向),类别,ID。

Design space
一个保底的思路便是扩展单帧的3D检测器,直接将多帧点云作为输入,虽然这样的设计是有效的,但是输入的帧数会有上限,并且无法对目标进行运动补偿,因为叠帧是对整个点云进行的。
另一个思路是使用两阶段的检测器,将目标从多帧中提取出来,与直接使用点云叠帧为输入相比,可以仅对目标区域的点云进行堆叠和处理,但是这样的设计并不方便选择使用多少帧作为输入,设置一个固定值并不够灵活。
但是 对比之前的frame-centric的思路,使用固定帧点云作为输入,依据不同目标动态选取帧数,才是object-centric的。
输入序列点云,首先用目标检测器检测每一帧中的 3D 目标,然后用跟踪器将目标进行数据关联作 ID 标记。最后提取每个 ID 目标跟踪轨迹上的所有点云及目标框信息,作进一步的 3D 目标框精修预测。

3D Auto Labeling Pipeline

Multi-frame 3D Object Detection

  • MVF++
    [图片]
  1. 为了提升对于point-level的识别能力,增加了一个3D分割的辅助损失,对3D真值框内外的点云进行二分类;
  2. 为了提升训练效率和精度,移除了anchor,采用anchor-free的形式;
  3. 为了充分利用离线资源,重新设计了模型结构,扩展了模型的规模
  • Multi-frame MVF++
  1. 使用多帧点云作为输入,基于当前帧和自车运动,将多帧结果叠加值当前帧,每个点增加一维时间信息作为输入
  • Test-time augmentation
    使用TTA 增强最终检测效果:z轴旋转

Multi-object Tracking
基于A Baseline for 3D Multi-Object Tracking改进的卡尔曼滤波器:

  1. 为了减少自车运动的干扰,将所有结果转换到全局坐标系下进行跟踪
  2. 为了减少误检的干扰,过滤了所有预测结果置信度低于0.1的结果
  3. 使用BEV-box进行跟踪,并使用匈牙利算法 IoU阈值0.1进行匹配
  4. 在静态更新阶段前,会对90、180等角度误差进行修正,角度平均会在cycle 空间进行,即arctan(sin/2+cos/2)arctan(sin/2+cos/2)arctan(sin/2+cos/2)

Object Track Data Extraction
基于转化后的世界坐标系下的跟踪结果,可以准确提取连续帧下每个目标框内的点云信息,并组合成目标的4D信息。

Object-centric Auto Labeling
目标动静状态分析模块将每个目标实例提取 4D 特征,然后加入线性分类器来预测。特征包括目标框中心点的时空方差,以及目标从始至终的中心点偏移距离。真值标记时,将静态目标从始至终的距离阈值设定为 1.0m,最大速度不超过 1m/s。这种方式动静预测准确率高达 99%。此外,将行人都归为动态目标。

  • Divide and conquer: motion state estimation
    对于静态目标,直接使用单帧固定的结果可以更好的避免出现检测框误差而出现的抖动情况。
    对于动态/静态目标采用分而治之的策略,基于连续帧的跟踪结果,利用简单的线性分类器可以准确地将目标划分为动态/静态目标。

  • Static object auto labeling
    首先挑选 score 最高的目标框作为 initial box,将点云从世界坐标系转到该目标框坐标系。类似 Cascade-RCNN,作连续的前景分割-目标框回归的网络预测。Loss 项由中心点回归,朝向分类回归,尺寸分类回归三部分构成:
    [图片]

[图片]

  • Dynamic object auto labeling
    一个常规的思路是利用裁剪后的点云重新进行3D框的检测,类似于跟踪的平滑,基于时序性对跟踪框进行微调;
    另一个思路便是定位一个关键帧对检测框进行对齐,但是在被遮挡会较远处等点云较少的目标而言,对齐可能会比框的估计更加困难。
    [图片]
    从轨迹中直接提取特征,从而预测目标尺寸, 对于 T 时刻前后的目标点云 ${P_{j,k}}^{T+r}_{k=T−r} $以及目标框 {Bj,k}k=T−sT+s\{B_{j,k}\}^{T+s}_{k=T−s}{Bj,k}k=TsT+s,特征由两部分构成
  1. Point 分支。将点云增加时间信息后,转换到当前目标框 Bj,TB_{j,T}Bj,T 的中心位置坐标系下,用 PointNet 网络作前后景的分割,得到前景目标的全局特征量。
  2. Box 分支。同样转换到当前目标框中心坐标系下。需要注意的是,取的 Box 帧数大多比 Point 长(Point 只取 5 帧)。目标框特征维度为 8(x,y,z,l,h,w,ry,time),同样通过 PointNet 网络提取全局特征。
    将这两个特征作融合,然后预测当前 T 时刻的目标尺寸及朝向。为了增强两个分支各自对预测目标的学习,分别对两个分支用真值目标作监督学习。最终的 Loss 为:
    L=Lseg+v1Lbox−traj+v2Lbox−obj−pc+v3Lbox−joint L = L_{seg} + v_1L_{box-traj} + v_2L_{box-obj-pc} + v_3L_{box-joint} L=Lseg+v1Lboxtraj+v2Lboxobjpc+v3Lboxjoint

Experiments

Comparing with SOTA Detectors
[图片]

yylx

Comparing with Human Labels
[图片]

挑选 3 个经验丰富的标注员对数据进行标注,以此与本文方法进行比较,可见本方法只在高度估计上无法与人类标注员媲美,定位及其它尺寸上,几乎能达到类似水平。
[图片]

进一步思考,人类不同的标注员,他们的标注结果一致性如何?如图 7. 所示,GT 由多个标注员交叉验证得到,以此为基准,发现人类标注员也很难达到与真值相同水平的程度,标注质量几乎与本方法差不多,当距离较远时,点数会较少,人类标注员反而标注质量会下降。

Applications to Semi-supervised Learning
[图片]

用本文的方法去标注未标注的数据,作为实时目标检测模型的训练数据,能极大提升其性能。也从另一方面论证了本文方法能比拟人工标注水平。

Analysis of the Multi-frame Detector
[图片]

MVF 检测器性能实验,当输入帧数大于 5 帧时,帧数增多已经无法提升检测性能。

### 理解Offboard模式 Offboard模式是指控制命令由外部计算机发送给无人驾驶设备,而不是通过机载计算资源来实现自主决策的一种工作方式。这种方式使得复杂的算法可以在更强大的处理单元上运行,并且可以更容易地调试和开发新功能[^1]。 在配置Offboard模式之前,确保已经建立了稳定可靠的通信链路,在此过程中可能涉及到设置地面站软件如QGC(Mission Planner也可以),以及确认所有硬件组件之间的连接正常运作,比如Prometheus地面站、QGC地面站、NoMachine客户端到服务器的链接状态良好[^3]。 ### 配置Offboard模式的方法 为了进入并保持Offboard模式,通常需要遵循一系列特定的操作流程: #### 设置环境变量与启动文件 对于基于ROS系统的项目来说,可以通过修改`~/.bashrc`文件中的路径指向正确的固件目录,之后利用提供的launch脚本来简化多台机器间的协同作业过程。例如,执行下面两条指令将会切换至所需的firmware版本并且加载用于多车协作的任务场景描述文件[^4]: ```shell cd ~/PX4_Firmware/ roslaunch px4 multi_vehicle.launch ``` #### 编写自定义节点发布期望姿态 为了让无人机响应来自外设电脑的姿态设定请求,开发者需编写专门的服务程序即所谓的“node”,它负责监听话题并将接收到的数据转发给飞控板。这里给出一段简单的Python代码片段作为示范用途: ```python import rospy from geometry_msgs.msg import PoseStamped def pose_publisher(): pub = rospy.Publisher('/mavros/setpoint_position/local', PoseStamped, queue_size=10) rate = rospy.Rate(20) # Hz while not rospy.is_shutdown(): msg = PoseStamped() # 填充msg字段... pub.publish(msg) rate.sleep() if __name__ == '__main__': try: rospy.init_node('pose_setpint_pub') pose_publisher() except rospy.ROSInterruptException: pass ``` 上述例子展示了如何创建一个名为`PoseSetPointPub`的新节点并向指定的话题发布消息对象;其中包含了目标位置的信息。需要注意的是实际应用时应当依据具体需求调整参数值以满足精度与时延的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值