zl程序教程

您现在的位置是:首页 >  IT要闻

当前栏目

BEVDET论文与代码解读

2023-04-18 16:49:30 时间

一、前言

  虽然自己主要精力在做单目3D检测,但基于多摄融合BEV视角的3D检测也是热度比较高的方向,因此学习补充这方面的知识很有必要,自己也将对论文和代码的一些理解也分享出来。

二、BEV

    随着车载传感器类型和数量的不断增多,研究者们期望找到一个统一的表征空间,将多传感器感知统一表达,较为常用的方法是感知后融合方式,这类后融合方式方法较为复杂,且很多融合都需要先验知识和手工设计,鲁棒性不高。2021年的特斯拉AI Day提出了基于BEV的自动驾驶方案,之后国内各大车企也开始探索这一方向。

三、BEVDET

        BEVDET也是比较早提出的论文,该论文较为工程化,没有花里胡哨的东西,主要是结合一些现有的方法,实现了在BEV视角的3D检测。

        从上图中可以看到作者将其划分为Image View Space 和 BEV Space,分别表示透视视角空间和鸟瞰图视角空间。

        Image View Space:在透视视角空间,主要做的是对多摄图像的特征提取,这里的backbone可以选择resnet、swin-transformer等等,然后经过FPN_LSS进行简单的层级特征融合,输出16倍下采样的特征图。

        View Transformer:是连接Image View Space和BEV Space的桥梁,将Image View Space的图像特征投影到BEV Space。作者采用的是LSS中的方法进行特征投射,该方法可参考我上一篇博客LSS-lift splat shoot论文与代码解读_超超爱AI的博客-CSDN博客

        BEV Space:BEV的特征提取和整理,作者提出经过View Transformer的特征对于较为简单的任务,如语义分割是直接可以接head头的,但是3D检测在加入BEV encoder进行特征提取和整理能够有效的提升检测效果。

        Head:任务输出设计,因为在View Transformer中有特征信息的丢失,一些目标的细节特征不如基于Image View Base 方法,也就是单目的方法。因此在 头部设计中会根据目标尺寸划分分类目标,再到相似尺度内进行细分类和回归。除了分类任务外,回归任务包含中心点位置(2个量化偏移量,1个高度),尺寸(长宽高),旋转角,速度。也是参考centerpoint的头部,在雷达数据中证明头部的两阶段方式有利于提升检测效果,但在图像数据中head的两阶段设计并为证实有效性,因此作者head部分依然采用高效的单阶段方式。

四、贡献点

        一、作者也在论文中大方的承认了主要是做了整合的工作,将现有的各类方法进行结合使用,实现了BEV 3D检测的任务。

        二、作者认为nuscenes的数据相对来说还是数据量不大,因此数据增广十分有必要,且View Transformer会使得两个空间独立起来,在Image View Space的仿射变换等数据增广(ida)并不能改变BEV Space的特征分布,且Image View Space有多个图像,BEV Space才对应一个特征图输入。因此作者也在BEV空间作了数据增强(bda)。

        三、作者认为LSS中的一些rank计算可以放到init里面,不用在训练中一直重复计算,因为内外参、BEV空间设计和仿射变换矩阵啥都是知道的,能够很有效的提升训练和推理速度。

        四、作者觉得BEV空间太紧凑了,一些目标的中心点在BEV上挨的很近,因此用了一个系数scale进行放缩,将nms替换成了scale nms,这个scale也是根据目标类别尺寸统计得到的,比较手工的方法。对小目标的检测效果提升有益。

五、总结

        本来也想对应代码讲讲,但是截图太麻烦,而且已经手打了这么多字了,很良心了。代码其实也比较简单,理解论文了看一遍就懂了。

        这里也说说BEV的一些优势和劣势:

        优势:1、截断和遮挡目标。 2、统一的表征空间 。

        劣势:1、视角转化时候的信息丢失。 2、部署对硬件和算力要求高。