UniAD 加入 Lidar 模态

简介: 解决2:检测和跟踪需要分开训练。uniad 原作者使用的是 bevformer 预训练的检测权重。因此,先要写一个检测代码,作单帧检测任务。然后将训练好的检测权重 load 到跟踪的代码中。

UniAD 加入 Lidar 模态
UniAD 加入 Lidar 模态相当于是在 BEVFormer 中加入 Lidar 模态。问题是如何加入?

读取历史帧数据
如何读取多帧图片数据?

使用的是 nuscenes_e2e_dataset - > prepare_train_data 方法,里面有个 for i in prev_indexs_list 循环。

处理点云数据
读取图片的时候,当前帧和历史帧都是 (6, c, h, w),读 4 帧历史帧,可以和当前帧拼接成 (5, 6, c, h, w)。最终会形成 (bs, 5, 6, c, h, w)

点云数据不同,每帧点云点的个数不相同,(32692, 5), (32867, 5), ... 那么无法将多个历史帧拼接起来。

方法1
统一每一帧为 32768 个点,若当前帧点数不够,则补点: (0, 0, 0, 0, 0)。在 train_pipeline 中执行。若当前帧点数太多,则随机删除一些点。

方法2
使用 mmdet3d 框架的 Pointsample 类,在 train_pipeline 中加入 dict(type='PointSample', num_points=32768)。

在 BEVFormer 中加入点云数据
使用 BEVFormer 加入激光
方法参考 github 代码相关 tag: v1.0, v2.0

使用 BEVFusion 方法
问题1:bevfusion 使用 bev_pool 算子,这个算子在 uniad 使用的 mmdet3d 代码中没有。

解决1:在 bevfusion 代码中,复制 bev_pool 这个算子(整个文件夹),到 mmdet3d 的 ops 中。再复制 setup.py 相关代码。重新编译 mmdet3d 即可。

问题2:训练 track 的时候 loss 很大。

解决2:检测和跟踪需要分开训练。uniad 原作者使用的是 bevformer 预训练的检测权重。因此,先要写一个检测代码,作单帧检测任务。然后将训练好的检测权重 load 到跟踪的代码中。

问题3:第 0 帧的 bbox_loss 很正常,是 0.4 左右,从第 1 帧开始的 bbox_loss 非常大,大约为 10。
image.png

解决3:第 i 帧的位置 = 第 i-1 帧的(位置+速度x时间)所得,即 pos[i]= pos[i-1] + v[i-1] * (t[i] - t[i-1])。然后与当前帧的检测结果进行滤波得到。但是 uniad 中有 bug,time_delta 并没使用微妙。因此,time_delta 除以 1e6,得以解决。
image.png

日期
2024/01/30:时间辍问题
2023/12/14:记录 BEVFusion 方法问题
2023/11/10:完成历史帧的读取和点云数据的预处理

相关文章
|
7月前
|
机器学习/深度学习 自动驾驶 机器人
【论文速递】BEVFormer: 通过时空变换器从多相机图像中学习BEV表示
【论文速递】BEVFormer: 通过时空变换器从多相机图像中学习BEV表示
|
4月前
|
机器学习/深度学习 编解码 自动驾驶
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
69 0
|
5月前
|
机器学习/深度学习 数据采集 自动驾驶
深度学习之相机内参标定
相机内参标定(Camera Intrinsic Calibration)是计算机视觉中的关键步骤,用于确定相机的内部参数(如焦距、主点位置、畸变系数等)。传统的标定方法依赖于已知尺寸的标定板,通常需要手动操作,繁琐且耗时。基于深度学习的方法则通过自动化处理,提供了一种高效、准确的内参标定方式。
267 13
|
机器学习/深度学习 传感器 编解码
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
以视觉为中心的俯视图(BEV)感知最近受到了广泛的关注,因其可以自然地呈现自然场景且对融合更友好。随着深度学习的快速发展,许多新颖的方法尝试解决以视觉为中心的BEV感知,但是目前还缺乏对该领域的综述类文章。本文对以视觉为中心的BEV感知及其扩展的方法进行了全面的综述调研,并提供了深入的分析和结果比较,进一步思考未来可能的研究方向。如下图所示,目前的工作可以根据视角变换分为两大类,即基于几何变换和基于网络变换。前者利用相机的物理原理,以可解释性的方式转换视图。后者则使用神经网络将透视图(PV)投影到BEV上。
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
|
7月前
|
人工智能 数据可视化 vr&ar
TripoSR:一个图像到3D生成模型,你get到了嘛!
TripoSR:一个图像到3D生成模型,你get到了嘛!
117 1
|
7月前
|
传感器 机器学习/深度学习 自动驾驶
【多模态融合】CRN 多视角相机与Radar融合 实现3D检测、目标跟踪、BEV分割 ICCV2023
本文介绍使用雷达与多视角相机融合,实现3D目标检测、3D目标跟踪、道路环境BEV分割,它是来自ICCV2023的。CRN,全称是Camera Radar Net,是一个多视角相机-雷达融合框架。 通过融合多视角相机和雷达的特性,生成语义丰富且空间精确的BEV特征图。实现3D物体检测、跟踪和BEV分割任务。
595 1
|
算法 数据挖掘 计算机视觉
【目标检测】基于稀疏表示的高光谱图像(Matlab代码实现)
【目标检测】基于稀疏表示的高光谱图像(Matlab代码实现)
192 0
|
机器学习/深度学习 传感器 算法
基于监督学习的多模态MRI脑肿瘤分割,使用来自超体素的纹理特征(Matlab代码实现)
基于监督学习的多模态MRI脑肿瘤分割,使用来自超体素的纹理特征(Matlab代码实现)
|
机器学习/深度学习 Ubuntu 机器人
【D435i深度相机YOLO V5结合实现目标检测】
【D435i深度相机YOLO V5结合实现目标检测】
1470 0
|
传感器 机器学习/深度学习 数据采集
使用PointNet深度学习进行点云分类
训练 PointNet 网络以进行点云分类。 点云数据由各种传感器获取,例如激光雷达、雷达和深度摄像头。这些传感器捕获场景中物体的3D位置信息,这对于自动驾驶和增强现实中的许多应用非常有用。例如,区分车辆和行人对于规划自动驾驶汽车的路径至关重要。然而,由于每个对象的数据稀疏性、对象遮挡和传感器噪声,使用点云数据训练稳健分类器具有挑战性。深度学习技术已被证明可以通过直接从点云数据中学习强大的特征表示来解决其中的许多挑战。点云分类的开创性深度学习技术之一是PointNet。
912 0