【BEV】学习笔记之BEV模型学习小结

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    1、 前言

    对于自动驾驶来说单相机识别无法满足现有要求也有过将多相机中的检测结果进行整合的工作但这种操作显然不够“优雅”于是更多的在Bird’s Eye View(BEV)视角下进行识别如下图所示。
    在这里插入图片描述
    BEV的重点是如何高效的设计BEV特征目前可以分为两种:自底向上和自顶向下。 自底向上可以理解为从"2d"出发通过"LIFT"操作把图像提升到"3d"伪点云然后在利用voxel pooling生成BEV特征。自顶向下可以理解为从"3d"出发先生成含有3d信息的BEV query然后再利用transformer将每张图片上的特征提取待BEV query上。 因此本文会按照两个部分来总结部分的BEV模型同时会给出一些学习资料便于后续学习。

    欢迎进入BEV感知交流群一起解决学习过程发现的问题可以加v群:Rex1586662742或者q群:468713665。

    BEV模型排行榜:https://www.nuscenes.org/object-detection?externalData=all&mapData=no&modalities=Camera
    数据集下载地址:https://www.nuscenes.org/download

    测试只需要下载页面最下方的 Full dataset(v1.0)里面的Mini数据集以及Map expansion里面的Map expansion(v1.3)

    nusence 数据集解析:https://blog.csdn.net/qq_39025922/article/details/114889261

    2、模型小结

    该模块将小结一下在本地跑通过的模型并对大部分模型进行了逐行代码的解析为了更加全面的了解BEV模型这个也是比不可少的过程。下面将主要分为四种类型:自低向上、自顶向下、多模态、解码。针对不同类型的模型提供相应的学习文章、视频相信看完这些资料后会对BEV模型有进一步的了解。

    1.1、Lift-Splat-Shoot(LSS)

    repo :https://github.com/nv-tlabs/lift-splat-shoot
    paper:https://arxiv.org/pdf/2008.05711
    学习链接:手撕BEV的开山之作lift, splat, shoot没完全shoot)
    学习笔记:[BEV] 学习笔记之Lift, Splat, Shoot
    最为BEV模型的开山论文论文中主要提出了Lift-splat操作它可以显示的估计深度信息以及特征然后再将视锥和深度特征通过voxel_pooling得到BEV特征如下图所示。
    在这里插入图片描述

    1.2、BEVDet

    repo :https://github.com/HuangJunJie2017/BEVDet
    paper:https://arxiv.org/pdf/2211.17111

    学习链接:BEVDet系列源码解读

    学习笔记:[BEV] 学习笔记之BEVDet(原理+代码解析)

    目前在nusences排行榜中暂时排名第一的模型目前也来到了2.0版本论文的主要工作是获得了显示的BEV特征并进行了可视化。由于是显示的BEV特征因此可以进行特征提取以及使用常见的检测头进行解码BEVDet主要包括四个步骤:

    • Image-view Encoder环视图像特征提取包括深度
    • View Transformer将图像特征转化为BEV特征
    • BEV EncoderBEV特征提取
    • Head 解码

    关键是其中的第二步View Transformer将图像特征转化为BEV特征的过程并使用cuda实现了高效的voxel_pooling_v2在后处理中也提出了scale-NMS可以针对不同尺度的物体进行缩放然后进行过滤。模型结构如下图所示:
    在这里插入图片描述

    1.2、BEVerse

    repo :https://github.com/zhangyp15/BEVerse
    paper:https://arxiv.org/pdf/2205.09743
    学习文章:https://zhuanlan.zhihu.com/p/518147623
    基于BEVDetBEVerse会从N个时间戳获取周围M个摄像头的图片并将相应的自运动和摄像头参数作为输入使用SwinTransformer作为图片特征提取的主干网络然后对每一帧的图片进lift操作最后将每一帧得到的BEV特征利用soatio-temporal BEV Encoder模块得到最终的BEV特征。
    在这里插入图片描述

    1.3、BEVDepth

    repo :https://github.com/Megvii-BaseDetection/BEVDepth
    paper:https://arxiv.org/pdf/2206.10092
    学习笔记:[BEV]学习笔记之BEVDepth原理+代码
    BEVDepth使用了时序建模一定程度上借鉴了BEVFormer其核心主要分为如下三点
    1、深度监督在之前的论文中都没有对预测的深度进行显示的监督导致深度估计不够理想而BEVDepth中利用Lidar的点云对LIFT中的深度进行监督提搞了深度预测的准确性。
    2、深度预测和特征预测分离之前的工作是通过一个网络一次预测出depth以及context而BEVDepth中是先通过图片特征得到context,然后再通过context获得depth.
    3、由于振动或者其他原因相机外参数可能会进行变化因此专门设计了两个网络来学习此时的相机参数信息并将其作为注意力的形式作用与context以及depth.
    在这里插入图片描述

    1.4、BEVStereo

    repo: https://github.com/Megvii-BaseDetection/BEVStereo
    paper:https://arxiv.org/pdf/2209.10248
    学习文章:https://zhuanlan.zhihu.com/p/569422924
    在BEVDepth的基础上进一步提出来多帧深度特征融合的方法,基于立体的多视图 ,应用时序立体技术同时论文还提出了一种size-aware circle NMS 方法来提升性能。
    在这里插入图片描述

    1.5、小结

    自低向上的过程大致可以分为1、环视特征提取以及"LIFT"2、获取BEV特征3、解码。其中各个模型的的不同点在于BEV特征的设计深度特征预测以及高效voxel_pooling。

    2、自顶向下

    自顶向下的BEV模型基于DETR发展而来的需要预先熟悉以下三篇文章有关于DETR的模型。

    2.1 Detr/Deformable-DETR/Detr3d

    DETR:

    repo: https://github.com/facebookresearch/detr
    paper:https://arxiv.org/pdf/2005.12872.pdf
    DETR的成功源于transformer的成功在这里推荐几个up主他们将transformer讲解的十分详细了如果不了解transformer的同学可以先进行学习。
    transformer:tansformer讲解
    vision transformer:vision transformer讲解
    DETR:DETR论文讲解

    DETR是一个端到端的模型解决了许多人为设置的因素。
    在这里插入图片描述

    Deformable-DETR:

    repo: https://github.com/fundamentalvision/Deformable-DETR
    paper:https://arxiv.org/pdf/2010.04159
    学习笔记:【BEV】学习笔记之 DeformableDETR(原理+代码解析)
    尽管DETR提供了一个十分简单的利用Transformer进行目标检测方法但是也存在缺点:更长的收敛时间、小目标检测较差。
    相较于DETR密集的注意力机制,Deformable-DETR每个参考点仅关注邻域的一组采样点这些采样点的位置并非固定而是可学习的和可变形卷积一样从而实现了一种稀疏的高效注意力机制。
    在这里插入图片描述

    DETR3d:

    repo: https://github.com/WangYueFt/detr3d
    paper:https://arxiv.org/pdf/2110.06922
    学习文章:https://zhuanlan.zhihu.com/p/430198800
    由于DETR的成功DETR3D将DETR应用在环视图片的特征提取中。
    在这里插入图片描述

    2.2 PETR/PETRV2

    PETR:

    repo: https://github.com/megvii-research/PETR

    paper:https://arxiv.org/pdf/2203.05625

    学习文章:PETR

    PETR是DETR3D的改进通过Position Embedding将多视角相机的2D特征转化为3D感知特征。
    在这里插入图片描述

    PETRv2:

    paper:https://arxiv.org/pdf/2206.01256
    学习文章:PETRv2
    PETRv2是在PETR的基础上改进了如下几个部分:

    • 将3D PE扩展到时序版本通过对生成的3D coordinates进行变换实现了时序对齐
    • PETR中3D PE的生成是data-independent的PETRv2中引入了特征引导的位置编码器使得3D PE的生成和输入数据相关隐式地从特征中获取到深度等信息。
    • PETRv2引入了一个简单高效的方案来支持BEV分割受SOLQ5启发DETR框架中一个query足以表征一块区域内的掩码为此PETRv2中定义若干个分割查询向量实现高质量的BEV分割
      在这里插入图片描述

    3.3 BEVFormer / BEVFormerV2

    BEVFormer

    repo : https://github.com/fundamentalvision/BEVFormer
    paper: https://arxiv.org/pdf/2203.17270

    学习视频:手撕BEVFormer
    学习文章:https://zhuanlan.zhihu.com/p/543335939

    学习笔记:[BEV] 学习笔记之BEVFormer(一)[BEV] 学习笔记之BEVFormer(二)

    BEVFormer的可以分为如下几个步骤:

    • 环视图片特征提取
    • 利用Temporal Self-Attention 、Spatial Cross-Attention提取BEV特征
    • 利用Deformable DETR 进行decoder
    • 使用匈牙利算法定义正负样本
    • Focal Loss + L1 Loss

    BEVFormer核心是Encoder中的Temporal Self-Attention模块以及Spatial Cross-Attention模块。
    在这里插入图片描述

    BEVFormerv2

    paper: https://arxiv.org/abs/2211.10439

    学习文章:https://www.zhihu.com/question/568349586/answer/2770772116

    基于BEVFormer引入透视空间监督来简化BEV检测器的优化方案并且采用了未来帧来生成BEV特征因此BEVFormerv2主要由五个组件组成图像主干、透视3D检测头、空间编码器、改进的时间编码器和BEV检测头。由于目前BEVFormerv2的代码暂未开源无法在本地进行测试。
    在这里插入图片描述

    3、多模态

    纯视觉3d检测的效果目前还有待提高为了更好的将BEV模型应用在自动驾驶中多模态的是目前精度最高的做法。

    3.1 bevfusion-mit

    repo : https://github.com/mit-han-lab/bevfusion
    paper: https://arxiv.org/pdf/2205.13542
    学习文章:BEVFusion
    BEVFusion提出了多任务多传感器的框架通过针对不同的传感器设计不同的特征提取网络最后得到统一的BEV特征最后可以支持多种下游任务。BEVFusion的整体结构还是很明显的在查看源代码的时候也比较清晰。其中通过环视图片提取BEV特征的方式也是通过LSS的方法产生的点云模型部分需要熟悉稀疏卷积。
    在这里插入图片描述

    3.2 bevfusion -ADLab

    repo :https://github.com/ADLab-AutoDrive/BEVFusion
    paper:https://arxiv.org/pdf/2205.13790
    北大&阿里提出了BEVFusion与mit的BEVFusion同名两者的网络框架也很类似。
    在这里插入图片描述

    4、解码模型

    上文中提到的模型解码部分一般分为两种基于centerpoint和基于DETR。

    4.1、CenterNet/CenterPoint

    CenterNet:

    repo :https://github.com/xingyizhou/CenterNet
    paper:https://arxiv.org/pdf/1904.07850
    学习文章:centerpoint
    CenterNet是一个anchor free的模型整个模型可以分为4个部分

    • 主干网络:提取图片特征
    • 上采样:利用特征图进行反卷积得到一个高分辨率的输出。
    • Center Head 热力图预测、中心点预测、宽高预测
    • 预测结果的解码
      在这里插入图片描述

    CenterPoint:

    repo :https://github.com/tianweiy/CenterPoint
    paper:https://arxiv.org/pdf/2006.11275.pdfcenterpoint

    学习文章:CenterPoint

    CenterPoint是将CenterNet的方法拓展到3d检测中。
    在这里插入图片描述

    4.2、DETR

    在DETR的decoder中人为的设计了100个Object queries用于一次性预测出图片中的100个物体然后利用两个FFN来预测object query 的类别以及bbox以达到无序NMS的操作。

    5、总结

    通过对多种BEV模型的学习现在已经对BEV的由来、发展有了初步的了解。BEV未来的发展应该与transformer的发展紧密结合相信在以后BEV模型还有为进一步的突破尤其是纯视觉的BEV模型。同时也期待能够学习到更多的BEV模型的部署教程从中学习到更多知识共勉。

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    “【BEV】学习笔记之BEV模型学习小结” 的相关文章