自动驾驶之BEVDet
BEVDet 主要分为4个模块:
1、图像视图编码器(Image-view Encoder):
就是一个图像特征提取的网络,由主干网络backbone + 颈部网络neck构成。经典主干网络比如resnet, SwinTransformer等。neck 有== FPN==, PAFPN 等。
例如输入环视图像,记作Tensor([bs, N, 3, H, W]),提取多尺度特征;其中bs = batch size,N = 环视图像的个数,H, W = 输入图像的宽和高。
经过编码器后输出特征为多尺度融合后的特征为:Tensor([bs,N,512,H / 16,W / 16])
2、视图变换器(View Transformer):
**视图转换是BEV的核心。目的就是如何从图像空间中提取BEV空间所需要的特征。**假如某个BEV格子所对应空间有个锥桶,那么这个格子里填充的一定是用来描述这个锥桶的特征值,而不是远方天空或红绿灯的特征值。主要有==前向投影(推)(深度分布)==和 ==反向投影(拉)(query)==两种方式。
BEVDet 采用类似LSS深度分布的方法,将带有深度的图像点云根据内外参数映射到车身坐标系下,最后沿着Z方向进行池化,生成BEV特征。作者将深度预测的默认范围扩展到 [1,60] 米,间隔为1.25 × r,其中r表示输出特征的分辨率。
3、BEV编码器(BEV Encoder):
在BEV空间下进行特征提取。类似图像空间的特征提取操作。进一步精炼出关键信息,特别是在BEV空间下定义的信息。比如大小、方向和速度,因为这些信息都是在BEV空间中定义的。BEV编码器的主干网络采用ResNet,颈部网络采用FPN-LSS。
4、检测头(Task-specific Head):*
在BEV空间输出特征图上,直接采用单阶段CenterPoint中的3D目标检测头,用于识别行人、车辆等障碍物的位置、大小、方向和速度等信息。