最近在自动驾驶的圈子里掀起了一股在BEV(Bird's Eye View, 鸟瞰图)下对相机做目标检测的风潮,而掀起这股风潮的工作之一就是咱们MARS Lab与MIT, TRI还有理想汽车合作的CORL2021论文DETR3D。

下面就由陈炫耀同学来介绍我们的论文:DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries[1]。

在自动驾驶的环视相机图像中做3D目标检测是一个棘手的问题,比如怎么去从单目相机2D的信息中预测3D的物体、物体形状大小随离相机远近而变化、怎么融合各个不同相机之间的信息、怎么去处理被相邻相机截断的物体等等。

将Perspective View转化为BEV表征是一个很好的解决方案,主要体现在以下几个方面:

  1. BEV是一个统一完整的全局场景的表示,物体的大小和朝向都能直接得到表达;
  2. BEV的形式更容易去做时序多帧融合和多传感器融合;
  3. BEV更有利于目标跟踪、轨迹预测等下游任务。

DETR3D方案

DETR3D模型的设计主要包括三部分:Encoder,Decoder和Loss。

Encoder

在nuScenes数据集中,每个样本含有6张环视相机图片。我们用ResNet去对每张图片进行encode来提取特征,然后再接一个FPN输出4层multi-scale features。

Decoder

Detection head共含有6层transformer decoder layer。类似于DETR,我们预先设置300/600/900个object query,每个query是256维的embedding。所有的object query由一个全连接网络预测出在BEV空间中的3D reference point坐标(x, y, z),坐标经过sigmoid函数归一化后表示在空间中的相对位置。

在每层layer之中,所有的object query之间做self-attention来相互交互获取全局信息并避免多个query收敛到同个物体。object query再和图像特征之间做cross-attention:将每个query对应的3D reference point通过相机的内参外参投影到图片坐标,利用线性插值来采样对应的multi-scale image features,如果投影坐标落在图片范围之外就补零,之后再用sampled image features去更新object queries。

经过attention更新后的object query通过两个MLP网络来分别预测对应物体的class和bounding box的参数。为了让网络更好的学习,我们每次都预测bounding box的中心坐标相对于reference points的offset(△x,△y,△z) 来更新reference points的坐标。

每层更新的object queries和reference points作为下一层decoder layer的输入,再次进行计算更新,总共迭代6次。

Loss

损失函数的设计也主要受DETR的启发,我们在所有object queries预测出来的检测框和所有的ground-truth bounding box之间利用匈牙利算法进行二分图匹配,找到使得loss最小的最优匹配,并计算classification focal loss和L1 regression loss。

实验结果

我们基于FCOS3D预训练的backbone进行训练,在没有使用NMS和test-time augmentation的情况下超过了FCOS3D的结果。

我们基于DD3D预训练的backbone进行训练,在nuScenes test set上得到了最好的结果。

对相邻环视相机重叠部分中被截断物体的的检测一直以来是一个难点,DETR3D通过直接在BEV下做检测的方法避免了相机之间的后处理过程,有效地缓解了这一问题。我们在重叠部分的mAP超过FCOS3D约4个点。

近期相关工作

DETR3D在去年10月在nuScenes上达到了第一的成绩。最近几个月在nuScenes的榜单上涌现了很多在BEV下做视觉3D目标检测的工作,看来我们的工作启发了很多领域内的同行,大家都在这个方向上面努力探索。

我们接下来对比一下DETR3D和最近的几篇工作并思考以下几个问题,希望能给大家带来一些启发。

  • 如何将环视图像转化为BEV?

在DETR3D、BEVFormer[2]中,是通过reference points和相机参数的物理意义进行投影来获取图像features,这样的优点在于计算量较小,通过FPN的mutli-scale结构和deformable detr的learned offset,即使只有一个或几个reference points也可以得到足够的感受野信息。缺点在于BEV的同个polar ray上的reference point通过投影采样到的图像特征都是一样的,图像缺少了深度信息,网络需要在后续特征聚合的时候去判别采样到的信息和当前位置的reference points是否match。

在BEVDet[3]里,转化过程follow了lift-splat-shoot[4]的方法,也就是对image feature map的每个位置预测一个depth distribution,再将feature的值乘以深度概率lift到BEV下。这么做需要很大的计算量和显存,由于没有真实的深度标签,所以实际预测的是一个没有确切物理意义的概率。而且图片中相当一部分内容是不含有物体的,将全部feature参与计算可能略显冗余。

  • 如何选择BEV的表现形式?

在DETR3D里,我们并没有完整显式地表示出了整个BEV,而且由sparse的object query来进行表示。最显著的好处就是节省了内存和计算量。而在BEVDet和BEVFormer里,他们生成了一个dense的BEV feature,虽然增加了显存,不过一来更容易去做BEV space下的data augmentation,二来像BEVDet一样可以另外增加对BEV features 的encoding,三来可以适应于各种3D detection head(BEVDet用了centerpoint,BEVFormer用了deformable detr)。

DETR3D 多2d图片3D检测框架相关推荐

  1. HMS Core AR Engine 2D图片/3D物体跟踪技术 助力打造更智能AR交互体验

    AR技术已经被广泛应用于营销.教育.游戏.展览等场景.通过2D图像跟踪技术和3D物体跟踪技术,用户只需使用一台手机进行拍摄,即可实现海报.卡牌等平面物体以及文物.手办等立体物体的AR效果.尽管近年来2 ...

  2. 3D目标检测框架综述(OpenPCDet、mmdet3d、Det3D、Paddle3D)

    作者 | 双愚  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/569189196 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干 ...

  3. ICCV2021 | 单目3D目标检测框架GUPNet解析

    作者 | Kwong  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/545796074 点击下方卡片,关注"自动驾驶之心"公众号 ADAS ...

  4. Facebook 开源3D目标检测框架VoteNet,曾刷新两大数据集最高精度

    点击我爱计算机视觉标星,更快获取CVML新技术 VoteNet为Facebook何恺明等人于今年4月在论文Deep Hough Voting for 3D Object Detection in Po ...

  5. 3D检测论文阅读简记

    论文读完之后很快忘记了, 写长篇的论文笔记又很耗时间; 因此打算换一种简洁的方式记录读过的一些3D检测论文: 论文的动机和主要的解决问题. 1. (arXiv 2205) BEVFusion: Mul ...

  6. VoxelNeXt:用于3D检测和跟踪的纯稀疏体素网络

    VoxelNeXt:Fully Sparse VoxelNet for 3D Object Detection and Tracking 目前自动驾驶场景的3D检测框架大多依赖于dense head, ...

  7. Det3D - 首个通用 3D 目标检测框架

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者授权转载,请勿二次转载. (原文链接:https://zhuanlan.zhihu.com/p/101346137) 背景介绍 ...

  8. 从2D到3D的目标检测综述

    点云PCL免费知识星球,点云论文速读. 文章:An Overview Of 3D Object Detection 作者:Yilin Wang  Jiayi Ye 翻译:分享者 本文仅做学术分享,如有 ...

  9. 2D和3D机器视觉检测技术的优势和局限性

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 机器视觉一般由工业光源,图像采集单元,图像处理 ...

最新文章

  1. MySQL面试题 | 附答案解析(十九)
  2. Mybatis批量添加对象List
  3. C#-WinForm-无边框窗体的移动和阴影-API
  4. td里面的内容加了br不起作用_刀圈TD黑暗游侠,最容易打金之一!!
  5. linux gitlab 9 邮件不发送,gitlab无法发送邮件
  6. 你所忽略的Linux系统安全及应用(最全面)
  7. 任务和特权级保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记34
  8. cocos2dx + vs安装使用
  9. 七种主流平面板式介绍
  10. 二次函数计算机课件,《二次函数的应用》课件
  11. 第四次作业-测试作业
  12. multipartfile获取数据_详解SpringMVC使用MultipartFile实现文件的上传
  13. unity中Asset Store下载的资源保存位置
  14. Teleport Ultra网站静态资源下载工具
  15. 安装了360安全卫士和瑞星杀毒,看迅雷电影很卡,谁有知道的
  16. android+嵌入地图,Android 给app加入百度地图
  17. eclipse 里边的 字体颜色代表了什么意思?
  18. CMake常用命令(一) cmake_minimum_required命令
  19. 关于传递函数的频率响应和低通滤波器
  20. java多数据库开发evn,Java,在多线程evnironments中通过散列统一划分传入的工作

热门文章

  1. 【PC工具】更新在线图片文字识别工具,OCR免费文字识别工具
  2. “天罡”霸气侧漏,华为5G长驱直入
  3. java从输入中获取经纬度_java从百度后台接口获取经纬度
  4. NOIP前的刷题记录
  5. matlab最优轨迹规划,matlab机器人轨迹规划
  6. 如何有效开展小组教学_如何有效开展小组合作学习
  7. pyqt制作深度学习训练软件
  8. Python读写Excel文件-1
  9. [js]在10月31日设置月份为11月,会变成12月的问题
  10. delmatch oracle_oracle – 无法从结果集中读取列值