《A Simple Baseline for BEV Perception Without LiDAR》论文笔记
参考代码: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 voxelgridB, C, H, W = list(rgb_camB.shape)xyz_memA = utils.basic.gridcloud3d(B, Z, Y, X, norm=False, device=pixB_T_camA.device) # 构建3D空间网格[B,N,3]xyz_camA = self.Mem2Ref(xyz_memA, Z, Y, X, assert_cube=assert_cube) # 将3D空间点映射到图像对应相机坐标维度xyz_camB = utils.geom.apply_4x4(camB_T_camA, xyz_camA)z = xyz_camB[:,:,2]xyz_pixB = utils.geom.apply_4x4(pixB_T_camA, xyz_camA) # 相机坐标3D空间点到图像特征的映射normalizer = torch.unsqueeze(xyz_pixB[:,:,2], 2)EPS=1e-6# z = xyz_pixB[:,:,2]xy_pixB = xyz_pixB[:,:,:2]/torch.clamp(normalizer, min=EPS) # 除以深度信息得到XY平面坐标# this is B x N x 2# this is the (floating point) pixel coordinate of each voxelx, y = xy_pixB[:,:,0], xy_pixB[:,:,1]# these are B x Nx_valid = (x>-0.5).bool() & (x<float(W-0.5)).bool() # 计算投影之后XY平面坐标的有效性y_valid = (y>-0.5).bool() & (y<float(H-0.5)).bool()z_valid = (z>0.0).bool()valid_mem = (x_valid & y_valid & z_valid).reshape(B, 1, Z, Y, X).float()if (0):# handwritten versionvalues = torch.zeros([B, C, Z*Y*X], dtype=torch.float32)for b in list(range(B)):values[b] = utils.samp.bilinear_sample_single(rgb_camB[b], x_pixB[b], y_pixB[b])else: # 实现在图像特征上双线性插值采样# native pytorch versiony_pixB, x_pixB = utils.basic.normalize_grid2d(y, x, H, W)# since we want a 3d output, we need 5d tensorsz_pixB = torch.zeros_like(x)xyz_pixB = torch.stack([x_pixB, y_pixB, z_pixB], axis=2)rgb_camB = rgb_camB.unsqueeze(2)xyz_pixB = torch.reshape(xyz_pixB, [B, Z, Y, X, 3])values = F.grid_sample(rgb_camB, xyz_pixB, align_corners=False)values = torch.reshape(values, (B, C, Z, Y, X)) # raw 4D的bev特征values = values * valid_memreturn values
2.3 影响性能的一些方面
2.3.1 数据增广
对于数据增广操作,文章对图片颜色、对比度、模糊这些增广操作进行实验,发现其并不像分类任务中那么有效,甚至会带来负面影响。
2.3.2 输入图像分辨率
对于分辨率并不是呈现单调线型变化关系,文章给出的解释是ResNet-101是在COCO上做过object detection预训练的,其适应了该数据集下的目标尺寸,因而对bev任务在分辨率上存在一定的先验性。
2.3.3 batchsize
从上表中看出batchsize和性能之间存在着单调正向关联,这篇文章的代码中也通过了梯度累加的形式增大batch。
# train_nuscenes.py#L405
for internal_step in range(grad_acc):...
2.3.4 reference camera和camera nums对性能的影响
从上表证实reference camera变换会带来涨点,使用全量camera也能带来涨点。
2.3.5 radar超参数带来的影响
3. 实验结果
vehicle segmentation on nuScenes:
时序与传感器数据类型对性能的影响:
《A Simple Baseline for BEV Perception Without LiDAR》论文笔记相关推荐
- 论文笔记之Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...
- 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...
- 论文笔记Understanding and Diagnosing Visual Tracking Systems
最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...
- 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...
- 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)
追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...
- ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...
- Understanding and Diagnosing Visual Tracking Systems
文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...
- CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...
- ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...
- CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...
最新文章
- 替代方法_ASD干预:替代行为的正确使用方法和注意事项
- C++ 贪吃蛇 小游戏
- 修改Yarn的全局安装和缓存位置
- java_函数的概述
- MySQL驱动jar包的下载--保姆教程
- taskctl跨调度服务依赖实现
- cass坡度土方计算案例_南方cass几种土石方计算方法分析.doc
- python读pdf文件字体大小_如何使用python中的pyPDF2更改pdf文件中的字体
- 【软件测试】BUG的管理
- 1024X600RGB屏幕规格书分析
- 偿还技术债 - 通过重构拯救老代码
- java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽
- SSM+流浪动物救助系统 毕业设计-附源码191631
- 如何搭建一个自己图床网站
- 【传感器大赏】3轴磁场传感器
- App Inventor 微数据库记录分数并排序
- E2UART编程(β板实操)task1传输helloworld
- WorldView卫星家族简介
- linux怎么生成图形,如何在Ubuntu 16.04中创建GIF动态图片
- Java基础知识点面试题,安卓程序员必备hook技术之进阶篇
热门文章
- 拓嘉启远:拼多多开店不交保证金,店铺能做好吗
- c语言double类型数据四舍五入
- 限时开放 | 欢迎加入「奇妙的 Linux 世界」技术交流微信群
- 如果服务器开机显示NObootable,电脑重装开机提示No bootable device的解决办法
- 怪物猎人世界取得服务器信息,怪物猎人世界联机服务器选择工具
- Lucene 7.5.0 索引文件之timtip
- 鲁大师智能化评测新项目——鲁大师真续航测试1.0正式发布
- 推荐4款电脑必备高质量软件,各有千秋,总有一款能惊艳到你
- python账号怎么注销_利用python批量登录QQ,防止账号被注销。
- 解决报错{ error_code: 18, error_msg: ‘Open api qps request limit reached‘ }