M2BEV

Work:

  • 有效的BEV编码器设计,减少了体素特征图的空间维度。
  •  一种动态方框分配策略,使用学习匹配来分配带锚的地面实况3D方框。
  •  BEV中心度重新加权,用更大的权重来增强更远处的预测
  • 大规模2D检测预训练和辅助监督。我们表明,这些设计显著有益于缺少深度信息的基于不适定相机的3D感知任务。
  • M2BEV具有内存效率,允许输入分辨率更高的图像,推理速度更快。

Method:

M2BEV pipeline:

输入:N张RGB图像

输出:目标检测结果,语义分割结果

流程:

  1. 图像编码器对输入图像(N*H*W*3)进行2D编码输出2D特征图(N*H/4*W/4*C)
  2. 2D特征图(N*H/4*W/4*C)投影到3D空间构建3D体素(X*Y*Z*C)M2BEV_第1张图片
  3. 3D体素(X*Y*Z*C)馈送到BEV编码器构建BEV特征(X/2*Y/2*C)
  4. BEV特征输出到特定的任务头-3D目标检测和BEV语义分割

 值得关注的模块:

2D到3D的映射

方法:让每一个像素通过相机内外参得出的射线上所有voxels都拥有相同的特征。这样就完成了像素到体素的映射。

优势:大大提高了计算效率减少了内存消耗,不需要学习参数。

思考:这不就是应用了OFT的思路吗,论文里只说了和LSS相似性,也不提OFT。

高效的BEV编码器

方法:映射后得到的3D体素特征是一个4D张量X*Y*Z*C,如果在这上面编码需要3D卷积,内存消耗大。所以执行了一个S2C的操作,即对4D张量进行降维,将原来空间维度Z维与特征维度放到一起得到3D张量X*Y*ZC。

优势:大大减少计算和内存消耗。

思考:反正都是在BEV视角,压缩Z维到特征维很正常,只不过有的是通过3D卷积将Z维度降到1,但实质上也是把高度特征融合到特征里面,现在这样直接手动reshape挺好的,二维卷积再多卷积几下就把高度和语义特征融合到一起了。

动态的BOX分配

 常规的给ground-truth boxes分配3Danchors都是通过一个固定IOU阈值进行判断,但是由于我们在执行2Dto3D映射时没有获取深度信息,所以常规方法肯能不太准确(为什么呢,我自己没有很明白,是因为没有深度信息,所以近大远小物体大小很不确定吗)。

方法:本文采用了Free anchor里面的思路,即在满足IOU阈值的基础上再加上分类得分和定位精度进行判断正负样本。一个正样本anchor需要满足在score,localization两方面的高置信度,否则被视为负样本。

思考:之所以不仅仅采用IOU进行判断,可能是因为一些被遮挡物体有偏心性,类似下面这种,这个月牙就好像是被遮挡的汽车的一部分,虽然红框与真实框有较高的IOU,但是其并没有很好的包裹目标。因此通过置信度就可以将其较好的筛选掉。

 BEV Centerness

中心度是FCOS文章里提出的一个概念,目的是对是筛选出的候选框进行进一步的筛选,剔除那些低质量的候选框,但是本文的出发点是让网络对远处的点给予更多的关注。

M2BEV_第2张图片

 M2BEV_第3张图片

距离越远,对IOU的改善就越显著。

2D检测预训练

在大规模的2D数据集上预先训练模型,可以提高模型的3D检测精度。

2D辅助监督

此处训练一个2D的目标检测头,只在训练阶段出现,那么他的监督作用如何体现呢?难道是在进行联合损失函数计算时,一定程度上起到了辅助作用吗?

损失函数计算 

 

 

 

 

 

你可能感兴趣的:(PV2BEV,人工智能,深度学习)