Introduction
现在很多BEV的工作都是怎么做的呢,有如下几种方式:
- 传统方法。在iamge空间做分割,然后将它变换到BEV空间,通过IPM变换,这种方法依赖与精准的内参和外参。这种方法是基于当前情况做的视角变换,当出现遮挡或者远距离的时候就会不准
- 深度学习的方法,lift-splat-shoot[1]通过诸逐像素点的深度估计完成image视角到BEV视角的变换,但使用深度估计增加了view变换过程的复杂性,故而一些方法[2]和[3]通过MLP和FC层本来学习这种image空间到BEV空间的固定映射变换,这样就不依赖于输入数据
- 基于transformer的方法,DETR3D在2D的feature上面直接进行3D框的检测,其中3D空间和2D图像空间的变换是通过一个cross-attention模块的3D-to-2D queries实现的
Methods
网络结构图如下
?一共由三部分组成
1.a shared backbone
提取多个camera图像的特征,ResNet
2.transformer encoder
在C3,C4和C5的特征上通过1*1的卷积来得到multi-scale的features,然后和deformable detr一样,分别对各个相机的multi-scale feature施加multi-scale deformable attention,这样就会得到每一个相机的增强版的multi-scale feature
3.BEV Transformer Decoder
decoder的输入只有32倍下采样的feature map
包含两部分,一部分是计算BEV queries和multi-camera feature maps之间的cross-attention,一部分是通过一个semantic decoder来解析queries得到BEV的分割结果
对于BEV的query feature中的任意一个query q都对应三个分支,分别计算该q的相关采样点,相关采样点的偏移量offset和attention weight,最后将经过attention weight加权融合之后的特征经过一个linear后输出。将输出的特征reshape成一个2D的feature map,然后经过一个3*3,1*1和2倍上采样操作,将得到的结果和gt计算l分割oss。?
问题:
1.query pos代表position embedding吗
2.这个query是啥,是一组nn.Embedding(num_queries, hidden_dim)吗
References
1. Lift, splat, shoot: Encoding images from arbitrary camera rigs by implicitly unprojecting to 3d
2. Cross-view semantic segmentation for sensing surroundings
3. Predicting semantic map representations from images using pyramid occupancy networks
|