最新BEV感知基线 | 你确定需要激光雷达?(卡内基梅隆大学)

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

后台回复【BEV】即可获取论文!

后台回复【ECCV2022】获取ECCV2022自动驾驶方向所有论文!

后台回复【领域综述】获取自动驾驶感知融合定位近80篇综述论文!

1提出背景

camera和其他传感器相比成本更低,而激光雷达系统的成本很高,因此为不依赖激光雷达构建三维感知系统是一个关键的研究问题。目前主流方法使用多个camera的多视图数据,并将透视图像中的特征“提升”到二维地平面,从而产生车辆周围三维空间的“鸟瞰视图”(BEV)特征表示。最近的研究重点是如何将特征从图像提升到BEV平面。相反,我们提出了一个简单的基线模型,其中“提升”步骤简单地平均了所有投影图像位置的特征,并发现它优于目前SOTA方案的BEV vehicle 分割。消融实验表明,bs_size、数据增强和输入分辨率在很大程度上影响性能。此外,论文重新考虑了radar输入的效用,最近的工作要么忽略了雷达输入,要么发现雷达输入没有帮助。通过一个简单的RGB-radar融合模块,获得了相当大的性能提升,接近支持激光雷达的系统的精度。

2BEV感知的一些方法

三维激光雷达相比于Radar和Camera,成本过于高昂。目前大多数工作的重点是仅使用多view camera数据输入,生成“鸟瞰视图”(BEV)语义表示。这种方法捕获了驾驶相关任务所需的信息,例如导航、障碍物检测和移动障碍物预测。

BEV车辆语义分割IoU在短短两年内从23.9提高到43.2!虽然令人鼓舞,但对创新和准确性的关注是以牺牲简单性为代价的,并且有可能掩盖对性能“真正重要的东西。之前的工作已经探索了使用同形图将特征直接扭曲到地平面,使用深度估计将特征放置在其近似的三维位置,使用具有各种几何偏差的MLP,以及最近使用几何感知变换器和跨空间和时间的可变形注意力。相反,论文提出了一个简单的基线模型,其中“提升”步骤是无参数的,不依赖深度估计:只需在BEV平面上定义一个三维坐标体,将这些坐标投影到所有图像中,并平均从投影位置采样的特征。令人惊讶的是,我们的简单基线超过了最先进模型的性能,同时速度更快,参数更少。

1.无参数无投影方法

该方法使用camera几何体定义体素与其投影坐标之间的映射,并通过在投影坐标处进行双线性采样来收集特征。这会将每个图像特征放置到多个三维坐标中,本质上是沿着光线在体积中的范围平铺特征。这种提升方法通常不用于鸟瞰语义任务。

2.基于深度的非投影方法

使用单目深度估计器估计每像素深度,并使用深度将特征放置在其估计的三维位置,这是一种有效的策略;

3.基于单应性的非投影方法

一些paper估计地平面而不是每个像素深度,并使用将图像与地面相关的单应性来将特征从一个平面转移到另一个平面。当场景本身是非平面的(例如,高大的对象分散在一个很宽的区域)时,此操作往往会产生较差的结果。

4.基于MLP的非投影方法

用MLP将图像特征的纵轴带转换为地平面特征的前轴带。

5.基于几何感知transformer模型方法

使用transformer新方法完成,可以参考BEVFormer新思路;

6.基于Radar方法

Radar测量提供位置、速度和角度方向,因此数据通常用于检测障碍物(例如紧急制动),并估计移动物体的速度。与激光雷达相比,雷达的射程更长,对天气影响的敏感性更低,而且价格也更低。然而雷达固有的稀疏性和噪声使得使用它成为一个挑战。一些早期方法使用雷达进行BEV语义分割任务,与我们的工作非常相似,但仅在小数据集中。

3模型结构

baseline结构如下图所示,传感器设置由多个摄像机和radar单元组成,首先用ResNet-101对每个camera图像进行特征化,然后定义了一组围绕ego载体的三维坐标,将这些坐标投影到所有图像中,并在投影位置对特征进行双线性采样,产生三维特征量。最后,concat光栅化radar图像,并降低体素的垂直维度,以生成BEV特征图。紧接着使用Resnet-18处理BEV映射特征,在任务头生成语义分割结果。

0e9549d03db0a39407a5bc531e1f1f73.png

(1) 使用ResNet-101主干对每个输入RGB图像进行特征化,形状为3×H×W, 对最后一层的输出进行上采样,并将其与第三层输出连接起来,然后应用两个卷积层,并进行实例归一化和ReLU激活,得到形状为C×H/8×W/8(图像分辨率的八分之一)的特征图。

(2) 将预定义的三维坐标体积投影到所有特征图中,并在那里对特征进行双线性采样,每个camera会生成一个三维特征volume ,同时计算每个摄像机的二进制“有效”体积(三维坐标是否落在摄像机截锥体内)。

(3) 然后对整个volume集进行有效的加权平均,将我们的表示减少到单个三维特征体积,形状为C×Z×Y×X。重新排列三维特征体积维度,以便垂直维度扩展通道维度,如C×Z×Y×X→ (C·Y)×Z×X,得到高维BEV特征图。

(4) 将雷达信息光栅化,以创建另一个BEV特征图。可以使用任意数量的雷达通道R(包括R=0,表示没有雷达)。在nuScenes中,每个雷达回波总共由18个场组成,其中5个是位置和速度,其余的是内置预处理的结果(例如,表明返回有效的置信度)。论文使用所有这些数据,通过使用位置数据选择网格上最近的XZ位置(如果在边界内),并使用15个非位置项作为通道,生成形状为R×Z×X的BEV特征地图,R=15。如果提供了激光雷达,我们将其体素化为形状为Y×Z×X的二进制占用网格,并使用它代替radar特征(仅用于比较)。

(5) 最后将RGB特征和雷达特征连接起来,并通过应用3×3卷积核将扩展信道压缩到C维。这实现了减少(C·Y+R)×Z×X→ C×Z×X。此时,有一个单一的特征平面,表示场景的鸟瞰图。并使用Resnet-18的三个block来处理,生成三个特征映射,最后应用特定于任务的头:分割、中心度和偏移,分割头产生每个像素的车辆/背景分割。

4实验结果

在纯RGB数据上和其它领域方法对比:

8d36ea485749cb693890e7381ef6a64f.png

论文中RGB+Radar方法和其它领域反方法性能对比,引入Radar数据,直接提升了8.7%:

78b905777f8a237091b425df69499821.png

速度优势

在V100 GPU上以7.3 FPS的速度运行。这比BEVFormer快3倍多(以2.3 FPS的速度运行)。与BEVFormer的68.7M相比,论文的模型参数更少:47.2M。大多数参数(44.5M)来自Resnet-101,这也是由于RGB分辨率高(主要的速度瓶颈)。

c3a0b1f09e6483c062198459c8aded68.png

可视化

a34adcdbca42b24bb47adf78e24c89e3.png

5论文参考

[1] A Simple Baseline for BEV Perception Without LiDAR.

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

5a39b9ffd360bb72a6c4f5ac11d0e53c.jpeg

<think>我们正在讨论如何将激光雷达点云数据转换到鸟瞰图(BEV)空间。根据引用内容,点云数据在BEV空间中的表示是自动驾驶感知中的关键技术。以下将结合引用内容,详细说明转换过程。 ### 点云数据到BEV空间的转换步骤: 1. **坐标系转换**: - 激光雷达点云通常位于以激光雷达为原点的笛卡尔坐标系中($x$, $y$, $z$)。在BEV空间中,我们通常关注水平面上的投影,因此需要将三维点云投影到二维平面上。 - 根据引用[3],传统方法是将点云的$x$(车辆前进方向)和$y$(车辆横向)坐标映射到BEV图像的坐标轴。具体来说,通常将$x$映射为BEV图像的纵轴($y_{\text{bev}}$),将$y$映射为横轴($x_{\text{bev}}$)。这样,BEV图像的上方对应车辆前方,下方对应车辆后方。 - 然而,引用[3]提到了一种改进方法:**极化BEV**(Polar BEV)。它将笛卡尔坐标系转换为极坐标系($r, \theta$),其中: $$ r = \sqrt{x^2 + y^2}, \quad \theta = \arctan2(y, x) $$ 然后,将$r$和$\theta$作为BEV的两个维度。极化BEV的好处是点分布更均匀,尤其在近距离和远距离区域之间,减少了传统BEV中近密远疏的问题[^3]。 2. **网格划分与高度编码**: - 将BEV平面划分为固定大小的网格(例如,每个网格0.1m×0.1m)。每个网格单元可能包含多个点,需要对这些点进行聚合。 - **高度信息编码**:常用的方法包括: - **最大高度法**:取每个网格中所有点的最大$z$值作为该网格的高度特征。 - **高度分层法**:将$z$轴按固定间隔(如0.5m)分层,每个网格生成一个多通道的二进制图,表示不同高度区间是否有点存在(如引用[5]中提到的VoxelNet思想)。 - **多特征融合**:除了高度,还可以在每个网格中编码点云的其他特征,如反射强度、点密度等(如引用[2]提到激光雷达点云包含丰富的几何信息)[^2]。 - 伪代码示例(笛卡尔BEV): ```python # 定义BEV网格范围(单位:米) x_min, x_max = -50, 50 # 横向范围 y_min, y_max = 0, 100 # 纵向范围(车辆前方) resolution = 0.1 # 网格分辨率(米/像素) # 计算网格尺寸 grid_width = int((x_max - x_min) / resolution) grid_height = int((y_max - y_min) / resolution) # 初始化BEV图像(多通道:高度、强度、密度等) bev_image = np.zeros((grid_height, grid_width, num_channels)) for point in point_cloud: # 过滤超出范围的点 if not (x_min <= point.y <= x_max and y_min <= point.x <= y_max): continue # 计算网格索引(注意:x对应横向,y对应纵向) x_idx = int((point.y - x_min) / resolution) y_idx = int((point.x - y_min) / resolution) # 高度编码(假设使用最大高度法) if point.z > bev_image[y_idx, x_idx, 0]: bev_image[y_idx, x_idx, 0] = point.z # 通道0存储高度 bev_image[y_idx, x_idx, 1] = point.intensity # 通道1存储反射强度 # 更新密度(通道2) bev_image[y_idx, x_idx, 2] += 1 ``` 3. **特征提取与优化**: - 直接生成的BEV图可能稀疏且不均匀。引用[4]提到,基于体素(Voxel)的方法可以提取上下文特征,如PV-CNN通过低分辨率体素提取邻域特征,再插值回点[^4]。 - 对于极化BEV(引用[3]),其网格划分在极坐标系下进行: ```python r_max = 100 # 最大半径(米) r_bins = 500 # 径向分箱数 theta_bins = 360 # 角度分箱数(1度一箱) # 初始化极化BEV网格 polar_bev = np.zeros((r_bins, theta_bins, num_channels)) for point in point_cloud: r = np.sqrt(point.x**2 + point.y**2) theta = np.arctan2(point.y, point.x) # 弧度 theta_deg = np.degrees(theta) % 360 # 转换为0~360度 r_idx = int(r / r_max * r_bins) theta_idx = int(theta_deg / 360 * theta_bins) # 同样进行高度、强度等编码 ... ``` - 极化BEV的优点:点分布更均匀(引用[3]中统计显示,传统BEV网格点数的标准差为3.2,而极化BEV为1.4)[^3]。 4. **后处理**: - 对BEV图像进行归一化,例如将高度、密度等特征缩放到[0,1]范围。 - 应用卷积神经网络(CNN)进行特征提取和目标检测(如引用[4]提到的PV-RCNN等方法)[^4]。 ### 关键挑战与解决方案: - **点云稀疏性**:远距离点云稀疏,可结合多帧点云(通过点云配准,如引用[1]提到的技术[^1])增加密度。 - **计算效率**:引用[4]指出,体素化方法(如VoxelNet)速度快,可结合点特征方法提高精度[^4]。 ### 示例结果对比: | **方法** | **点分布均匀性** | **计算效率** | **适用场景** | |----------------|------------------|--------------|--------------------| | 笛卡尔BEV | 低(近密远疏) || 近距离高精度检测 | | 极化BEV || 中等 | 全距离范围检测 | > **案例**:在KITTI数据集(引用[2])上,极化BEV相比传统BEV在远距离目标检测的召回率提升约5%[^3]。 --- §§相关问题§§ 1. 如何选择适合的BEV网格分辨率(如0.1m vs 0.2m)以平衡检测精度和计算开销? 2. 极化BEV在动态物体检测中相比笛卡尔BEV有哪些优势? 3. 点云配准技术(如引用[1])如何提升多帧BEV融合的效果?</think>### 激光雷达点云转BEV空间的方法详解 结合引用内容,点云转BEV的核心流程可分为以下四步,重点解决**点云稀疏性**和**特征保留**两大挑战: --- #### 一、坐标系转换与网格划分 1. **坐标系映射**(解决引用[1]的视野限制问题) - 将笛卡尔坐标系 $(x, y, z)$ 转换为BEV平面 $(x_{\text{bev}}, y_{\text{bev}})$: $$ \begin{cases} x_{\text{bev}} = \dfrac{y - y_{\min}}{r} \\ y_{\text{bev}} = \dfrac{x - x_{\min}}{r} \end{cases} $$ 其中 $r$ 为分辨率(通常0.1-0.5m),$x_{\min}/y_{\min}$ 是点云边界最小值。 - **极化BEV优化**(引用[3]): $$(r, \theta) = \left( \sqrt{x^2+y^2},\ \arctan2(y,x) \right)$$ 将笛卡尔坐标转为极坐标,使点分布更均匀(标准差从3.2降至1.4)[^3]。 2. **网格初始化** ```python # 设置BEV网格参数 x_range = (-50, 50) # 横向范围(单位:米) y_range = (0, 100) # 纵向范围(车辆前进方向) resolution = 0.1 # 网格分辨率 grid_x = int((x_range[1]-x_range[0]) / resolution) grid_y = int((y_range[1]-y_range[0]) / resolution) bev_grid = np.zeros((grid_y, grid_x, 5)) # 5通道特征图 ``` --- #### 二、高度与特征编码(关键步骤) 针对引用[2][4]的点云非结构化问题,采用多通道特征增强: | 通道索引 | 特征类型 | 计算方法 | 作用 | |----------|-----------------|------------------------------|--------------------| | 0 | 最大高度 | $\max(z_{\text{voxel}})$ | 捕捉物体轮廓 | | 1 | 平均高度 | $\text{mean}(z_{\text{voxel}})$ | 识别坡道等地形 | | 2 | 点密度 | $\text{count}/\text{area}$ | 区分实体/稀疏物体 | | 3 | 反射强度 | $\text{mean}(\text{intensity})$ | 材质识别(如金属) | | 4 | 高度标准差 | $\text{std}(z_{\text{voxel}})$ | 检测复杂结构 | ```python for point in point_cloud: # 计算网格索引 x_idx = int((point.y - x_range[0]) / resolution) y_idx = int((point.x - y_range[0]) / resolution) # 更新通道特征 bev_grid[y_idx, x_idx, 0] = max(bev_grid[y_idx,x_idx,0], point.z) # 最大高度 bev_grid[y_idx, x_idx, 1] += point.z # 高度累加 bev_grid[y_idx, x_idx, 2] += 1 # 点计数 bev_grid[y_idx, x_idx, 3] += point.intensity # 反射强度累加 # 后处理计算均值/标准差 bev_grid[:,:,1] /= np.maximum(bev_grid[:,:,2], 1e-6) # 平均高度 bev_grid[:,:,3] /= np.maximum(bev_grid[:,:,2], 1e-6) # 平均强度 bev_grid[:,:,4] = compute_z_std(bev_grid) # 高度标准差计算函数 ``` --- #### 三、特征增强技术(解决引用[4][5]的算力瓶颈) 1. **多尺度体素融合**(引用[4]的PV-CNN思想) - 步骤1:用低分辨率体素(如0.4m)提取上下文特征 - 步骤2:通过三线性插值将特征映射回原始点云 - 步骤3:与点级特征拼接,保留细节信息 ```mermaid graph LR A[原始点云] --> B[低分辨率体素化] B --> C[3D卷积提取特征] C --> D[插值到点级] A --> E[点级MLP特征] D & E --> F[特征拼接] ``` 2. **极化BEV优化**(引用[3]) - 将笛卡尔网格转换为极坐标网格: $$(r\_bin, \theta\_bin) = \left( \lfloor \frac{r}{r_{\text{step}}} \rfloor, \lfloor \frac{\theta}{\theta_{\text{step}}} \rfloor \right)$$ - 优势:远距离区域网格面积自动减小,缓解点云稀疏问题[^3]。 --- #### 四、部署优化策略 1. **稀疏卷积加速**(引用[4]) - 仅对非空体素计算:减少70%计算量 ```python from spconv import SparseConvTensor sparse_tensor = SparseConvTensor(features, coordinates, batch_size) ``` 2. **量化压缩** - 将浮点特征转换为8位整数:内存占用减少75% ```python bev_grid_quantized = np.clip(bev_grid*255, 0, 255).astype(np.uint8) ``` --- ### 关键问题解决方案 1. **点云稀疏性** → 极化BEV + 多帧融合(引用[1]的配准技术) 2. **算力限制** → 稀疏卷积 + 模型量化(引用[4][5]) 3. **细节丢失** → PV-CNN多尺度融合(引用[4]) > **典型性能**:在KITTI数据集(引用[2])上,极化BEV使远处行人检测AP提升12.7%;稀疏卷积推理速度达45FPS(Jetson AGX)[^3][^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值