《A Simple Baseline for BEV Perception Without LiDAR》论文笔记

本文介绍了一种不依赖LiDAR的BEV特征提取方法,通过反向投影图像特征到BEV网格并进行双线性插值。分析了数据增广、输入图像分辨率、batchsize、参考相机和相机数量、雷达超参数对性能的影响。实验表明,这些因素对BEV感知性能有显著影响,雷达数据虽然不如LiDAR,但仍有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考代码:bev_baseline
project page:A Simple Baseline for BEV Perception Without LiDAR

1. 概述

介绍:在这篇文章中提出了一种特别简单但效果不错的bev特征提取方法,也就是通过在构建的bev grid中向图像特征进行反向投影,并在投影点处对图像特征进行双线性插值采样得到图像模态下的bev特征。同时对于lidar和radar这些其它模态的传感器信息输入(若有),直接在编码之后与之前bev特征进行concat操作融合,以此来构建多模态bev特征。除开使用该方式进行bev特征构建之外,文章还仔细分析了在网络训练中batchsize、image augmentation、image resolution等超参数给网络性能带来的影响,并对这些变量做了对应消融实验,可为后续模型训练引入参考。此外,之前radar的结果在bev特征构建过程中是不那么重要的,相比lidar确实差挺多的,但是有好歹聊胜于无。在文章的实验结果中也证实了这些数据都是对bev感知效果提升是有用的。另外,文章的backbone为ResNet-101。

首先对bev特征构建的过程进行回顾,这里作者分析了几种bev构建的方案:
在这里插入图片描述

  • 1)对网络提取金字塔特征(也就是不同cnn网络不同stage输出特征)通过网络映射实现在不同深度范围上bev特征映射,其方法也就是左上角的图,实现可以参考:pyramid.py
  • 2)将深度信息隐式编码到网络特征图中构建视锥,从而得到bev特征图,以LSS方法为代表,见右上角图;
  • 3)将bev特征构建任务转换为width-wise的投影任务,见左下角图;
  • 4)首先构建bev grid,并以此作为transformer的queris,从而通过attention的方式得到最后bev特征;

2. 方法设计

2.1 pipeline

文章的方法如下:
在这里插入图片描述
输入的是多模态传感器,这些传感器的信息经过编码之后会统一准还到bev特征下,之后这些特征使用concat进行融合,从而得到完整bev特征。在此基础上对bev解码器进行优化,这里在进行bev特征优化之前会对bev特征在Y维度上进行压缩投影,从而将一个4D特征变换为3D特征,方便后续CNN网络运算。那么对于特征优化过程使用一个resnet-18网络构建一个U型结构去refine bev特征,之后通过不同的预测头实现bev预测。

对于构建bev特征的过程文章使用的是投影之后双线性采样的形式,也就是如下图中所示:
在这里插入图片描述

2.2 bev投影过程

这部分的核心是较为独立的空间坐标变换操作:

# utils/vox.py#291
def unproject_image_to_mem(self, rgb_camB, pixB_T_camA, camB_T_camA, Z, Y, X, assert_cube=False):
    # rgb_camB is B x C x H x W camera特征
    # pixB_T_camA is B x 4 x 4 到相机坐标到图像坐标——内参
    # pixB_T_camA is B x 4 x 4 世界坐标到相机坐标转换——平移和旋转矩阵

    # rgb lives in B pixel coords
    # we want everything in A memory coords

    # this puts each C-dim pixel in the rgb_camB
    # along a ray in the voxelgrid
    B, C, H, W = list(rgb_camB.shape)

    xyz_memA = utils
### 基于LLM的Web代理的基线模型 构建基于大型语言模型(LLM)的Web代理时,通常需要考虑几个核心要素:任务理解、工具调用以及上下文管理。一种强大的简单基线模型可以由以下几个部分组成: #### 1. **任务分解模块** 此模块负责将用户的自然语言请求解析为可执行的任务序列。通过利用预训练的语言理解和生成能力,LLMs能够高效地完成这一过程[^1]。 ```python def parse_user_request(user_input): """ 将用户输入转换成结构化任务列表。 参数: user_input (str): 用户提供的原始查询字符串 返回: list: 结构化的任务指令集合 """ structured_tasks = llm_generate(f"Parse the following request into tasks:\n{user_input}") return structured_tasks.split("\n") # 简单分割作为示例 ``` #### 2. **工具接口适配器** 为了增强LLM的功能范围,可以通过设计轻量级工具接口来扩展其能力。这些工具可能涉及搜索引擎集成、数据库访问或其他特定领域服务。尽管某些基础计算可以直接依赖LLM内部逻辑实现[^3],但对于复杂操作仍需外部支持。 例如,在处理数值运算时虽然无需显式调用API即可获得合理结果,但在更广泛的应用场景下引入专用插件将是必要的改进方向之一。 #### 3. **对话历史跟踪机制** 维持连贯性的交互体验对于提升用户体验至关重要。为此,应建立有效的记忆存储方案以记录过往交流详情并据此调整后续响应策略。 ```python class ConversationHistory: def __init__(self): self.history = [] def add_entry(self, role, content): entry = {"role": role, "content": content} self.history.append(entry) def get_context(self): context_str = "\n".join([f"{entry['role']}: {entry['content']}" for entry in self.history]) return f"Context:\n{context_str}" ``` 综上所述,上述三个组成部分共同构成了一个适用于多种实际需求的基础架构框架——即具备良好泛化性能的同时又能灵活适应不同业务环境下的定制化开发要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值