参考代码:PETR
1. 概述
介绍:这两篇文章提出了以位置编码转换(PETR,position embedding transformation)为基础的BEV感知方法,按照方法中组件不同可将PETR划分为V1和V2版本。在V1版本中提出了基础版本的PETR,首先使用一种类似LSS的方法构建相机视锥,里面编码了图像中每个点在不同深度下的3D空间位置,这些3D空间位置经过编码网络之后(几层1*1的卷积)得到3D空间位置的embedding编码,embedding编码再与2D相机特征做融合将3D空间位置信息嵌入到2D图像特征中去,最后在生成的特征图上使用DETR方法检测3D目标。V2版本相对V1版本增加了时间序列的支持,特别的是对于时序带来位置空间相对变化导致的位置不匹配问题,对于该问题文章通过pose变换对齐的方式实现特征图对齐。在下游任务中除了3D目标检测任务之外,还引入了分割分支。
2. BEV特征提取
2.1 PETR-V1
在V1版本中数据处理流程见下图所示:
对于2D图像可以根据相机内外参数和假定的3D空间范围内生成相机视锥数据,对应上图中的3D Coordinates Generator部分,3D视锥数据再与图像2D图像特征融合得到具备感知3D位置信息的2D图像特征,之后在接下游检测任务。这里的核心便是如何将3D位置信息如何添加到2D中,与之对应的部分便是上图中的3D Position Encoder。该部分的具体结构见下图所示:
对于图像特征生成的视锥数据维度为 P 3 d = { P i 3 d ∈ R ( D ∗ 4 ) ∗ H F ∗ W F } P^{3d}=\{P_i^{3d}\in R^{(D*4)*H_F*W_F}\} P3d={
Pi3d∈R(D∗4)∗HF∗WF},其中 W F , H F W_F,H_F WF,H