经典文献阅读之--BEVDistill(BEV蒸馏)

2023-05-16

0. 简介

之前作者前段时间在研究BEV的相关算法,当时就觉得BEV算法好是好,但是所需要的内存以及计算资源实在是太大了,无法实时在真实场景中运行。我们知道多视图(multi-view)三维目标检测具有低成本、高效率的特点,具有广阔的应用前景。然而,由于缺乏深度信息,通过透视图准确地检测目标是极其困难的。当前的方法倾向于为图像编码器采用重主干,使得它们不适用于现实世界的部署。与图像不同的是,激光雷达点在提供空间线索方面更优越,导致高度精确的定位。本文探索了基于激光雷达的检测器用于多视图(multi-view)三维目标检测。本文不是直接训练深度预测网络,而是在鸟瞰(BEV)空间中统一图像和激光雷达特征,并在师生范式中自适应地跨非同质表征传递知识。为此本文《Cross-Modal BEV Distillation for Multi-View 3D Object Detection》,目前我们可以在Github上找到对应的链接。

1. 主要贡献

本文通过设计一个跨模态的BEV知识蒸馏框架,即BEVDISTILL来解决上述挑战。本项目没有构建一个单独的深度估计网络,也没有显式地将一个视图投影到另一个视图中,而是将所有特征转换到BEV空间,同时保持几何结构和语义信息。通过共享BEV表示,不同模态的特征在不损失太多信息的情况下自然对齐。通过密集和稀疏监督,自适应地迁移空间知识:

  1. 引入软前景引导蒸馏,用于非均匀密集特征模仿,
  2. 提出稀疏式实例蒸馏范式,通过最大化互信息,有选择地监督学生

2. 相关工作

2.1 基于视觉的3d目标检测

基于视觉的3D目标检测旨在检测目标的位置、尺度和旋转,这在自动驾驶和增强现实中非常重要。其中一项工作是直接从单幅图像中检测3D盒子。Mono3D利用传统方法将2D对象提升到具有语义和几何信息的3D空间。考虑到位于不同距离的物体会出现在不同的尺度上,D4LCN提出利用深度预测进行卷积核学习。最近,FCOS3D将经典的2D范式FCOS扩展到单目3D目标检测。通过预测其2d属性,将回归目标转换到图像域。此外,PGD引入了关系图来改进对象定位的深度估计。MonoFlex认为位于不同位置的对象不应该被平等对待,并提供自动调整的监督。

另一项工作是从多视角图像中预测物体。DETR3D首先通过引入一个新的概念:3D参考点,将DETR纳入3D检测。之后, Graph-DETR3D通过动态图特征聚合丰富特征表示来扩展它。与上述方法不同,BEVDet利用Lift-splat-shoot将图像明确投影到BEV空间,然后使用传统的3D检测头。受最近开发的注意力机制的启发,BEVFormer以可学习的注意力方式自动化cam2bev过程,并取得了优越的性能。PolarFormer将极坐标引入到BEV空间的模型构建中,大大提高了性能。此外,BEVDepth通过明确地用投影的激光雷达点监督深度预测来改进BEVDet,并实现了最先进的性能。

2.2 目标检测中的知识蒸馏

大多数用于目标检测的KD方法专注于通过迫使学生的预测与教师的预测相匹配,在两个同质检测器之间迁移知识。更近期的作品发现模仿特征表示对检测更有效。一个重要的挑战是确定应该从教师模型中提取哪些特征区域。FGFI 选择由GT的IoU大于一定阈值的锚框所覆盖的特征。PGD 只关注几个关键的预测区域,使用分类和回归分数的组合作为质量的衡量标准。尽管有大量的工作讨论了目标检测中的KD,但只有少数工作考虑了多模态设置。MonoDistill 将点投影到图像平面,并应用修改后的基于图像的3D检测器作为提取知识的教师模型。这样的范式自然地解决了对齐问题,然而,它错过了追求更强大的基于点的教师模型的机会。LIGA-stereo利用激光雷达的信息,通过监督基于视觉的模型的BEV表示与第二个模型的中间输出。 最近,UVTR(Li et al.,2022a)提出在保持各自检测器结构的前提下,提取体素空间中的跨模态知识。 然而,它直接迫使二维分支模仿三维特征,忽略了不同模态之间的差异。

3. 详细内容

在本节中,我们将详细介绍我们提出的BEVDistill。我们首先在图1中概述了整个框架,并阐明了3.1节中教师和学生模型的模型设计。在3.2节中提出跨模态知识蒸馏方法,由两个模块组成:密集特征蒸馏和稀疏实例蒸馏。

3.1 基线模型

学生模型。采用当前最先进的基于相机的检测器BEVFormer作为学生模型。它由用于特征提取的图像主干、用于cam2bev视图转换的空间交叉注意力模块和用于3D目标检测的transformer头组成。此外,它提供了一个时间交叉注意力模块来感知子序列的多帧信息,以更好地预测。

老师模型。为了保持与学生模型的一致性,我们选择Object-DGCNN作为我们的教师模型。为简单和通用性,将DGCNN注意力替换为普通的多尺度注意力模块。它首先将3D点投射到BEV平面,然后用基于transformer的标签分配进行一对一监督。通过从预训练的中心点模型初始化来训练模型,并在知识蒸馏过程中固定所有参数。

…详情请参照古月居

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典文献阅读之--BEVDistill(BEV蒸馏) 的相关文章

  • C语言--在排序数组中查找元素的第一个和最后一个位置

    在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums xff0c 和一个目标值 target 找出给定目标值在数组中的开始位置和结束位置 你的算法时间复杂度必须是 O log n 级别 如果数组中不存在目标值
  • [随笔]初步了解 Levenshtein Distance (Edit Distance) 编辑距离,字符相似度算法

    前几天在CSDN的论坛看到一个需要判断两个字符串之间相差多少个字符的帖子 之前有了解过有相应的算法来计算这个差异 但是没有深入的去了解 刚好趁这个时机了解了一下 Levenshtein Distance Edit Distance 编辑距离
  • 别人在忙挖矿,阿里工程师却悄悄用区块链搞了件大事!

    阿里妹导读 xff1a 当阿里技术遇见区块链 xff0c 会碰撞出什么火花呢 xff1f 天猫进出口技术团队运用区块链技术 xff0c 让每一个进口商品都有了唯一的 身份证 背景 全球溯源计划已成为天猫国际现阶段着重开展实行的战略性方针 x
  • SVM深入理解&人脸特征提取

    目录 一 SVM深入理解1 SVM算法2 重做例子代码 二 人脸特征提取1 采集人脸信息 绘制68个特征点2 给人脸绘制一幅墨镜 三 总结四 参考文献 一 SVM深入理解 1 SVM算法 支持向量机 xff08 support vector
  • 传统优化方法:枚举法、启发式算法和搜索算法

    1 枚举法 枚举出可行解集合内的所有可行解 xff0c 以求出精确最优解 对于连续函数 xff0c 该方法要求先对其进行离散化处理 xff0c 这样就可能因离散处理而永远达不到最优解 当枚举空间比较大时 xff0c 该方法的求解效率比较低
  • Android图形系统的分析与移植--七、双缓冲framebuffer的实现

    1 实现原理 在基本的FrameBuffer已经实现的基础上 xff0c 需要实现的是与Android原本模拟器所使用的goldfish FrameBuffer之间的区别 比较一下不难发现 xff0c 从以下及方面着手 xff1a 1 修改
  • Qt 读写XML文件

    目录 1 常用方法 2 示例 2 1 写文件 2 2 读文件 Qt 对 XML 的读写操作 1 简介 使用XML模块 xff0c 在 pro文件中添加 QT 43 61 xml xff0c 并加如相应的头文件 include lt QtXm
  • 苏嵌15 16.11.16

    Makefile中常用的基本函数 1 subst subset 参数1 参数2 参数3 把参数3中的1替换成参数2 返回被替换的参数3 2 patsubst patsubset 模式参数 参数1 参数2 把参数2中复合模式参数的单词替换成参
  • 用自己的单目&双目相机在ROS 下实现双目ORB_SLAM2

    用自己的双目相机在ROS 下实现双目 ORB SLAM2 参考博客 ROS下单目 SLAM https blog csdn net goding learning article details 52950993 配置ROS 下的 ORB
  • 【Linux】Ubuntu 18.04安装aptitude命令

    在ubuntu18 04 下通过如下命令进行aptitude命令的安装 xff0c span class token function sudo span span class token function apt get span spa
  • 卡尔曼滤波(Kalman Filter)原理理解和测试

    Kalman Filter学原理学习 1 Kalman Filter 历史 Kalman滤波器的历史 xff0c 最早要追溯到17世纪 xff0c Roger Cotes开始研究最小均方问题 但由于缺少实际案例的支撑 xff08 那个时候哪
  • ROS与开发板入门教程-树莓派3源码安装Turtlebot(ubuntu mate 16.04+kinetic+Turtlebot)

    ROS与开发板入门教程 树莓派3源码安装Turtlebot ubuntu mate 16 04 43 kinetic 43 Turtlebot ROS与开发板入门教程 树莓派3源码安装Turtlebot ubuntu mate16 04 4
  • Linux下Node.js和NPM安装和配置

    目录 前言 1 安装Nodejs和NPM 2 NPM的配置 3 nodejs的基本使用 3 1 搭建简易后端服务器 4 npm的基本使用 4 1 搭建vue 2 0开发环境 前言 Nodejs简介 Node js是一个基于Chrome V8
  • 年轻人,你为什么要来阿里搞技术?

    阿里妹导读 xff1a 刚刚毕业的年轻技术人 xff0c 为何会选择阿里巴巴 xff1f 也许 xff0c 因为这里是学术和实践充分融合的实验场 xff0c 也许是因为在这里理论的确可以改变生活 xff0c 也许只是为了感受在西湖畔写代码的
  • C语言字符数组与字符串的使用及加结束符‘\0‘的问题

    1 字符数组的定义与初始化 字符数组的初始化 xff0c 最容易理解的方式就是逐个字符赋给数组中各元素 char str 10 61 I a m h a p p y 即把10个字符分别赋给str 0 到str 9 10个元素 如果花括号中提
  • 追求技术之路 - 那些陪伴我的书籍

    如今已经在广州一家嵌入式公司实习 xff0c 分享大学里度过的一些书籍 xff0c 有些还没读完 xff0c 个人比较喜欢经典书籍 xff0c 研读起来就有种奇妙的感觉 xff0c 比起人与人之间的复杂的关系 xff0c 书籍带给我的感觉很
  • 中断,异常,系统调用,进程切换时的堆栈变化和寄存器保存

    1 中断 xff0c 异常 xff0c 系统调用相同 xff1a CPU自动压入 xff1a ss 运行级别提升时需切换堆栈 xff0c 因此多压入用户态的栈段ss xff0c esp 运行级别提升时需切换堆栈 xff0c 因此多压入用户态
  • Pipeline 核心语法

    常用开发工具 选择任意pipeline类型的作业 xff0c 点击 流水线语法 即可进入pipeline开发工具页面 1 片段生成器 流水线代码片段生成器 xff0c 非常好用 xff0c 在这里可以找到每个插件以及Jenkins内置的方法
  • Pipeline Groovy 语法

    Groovy是一种功能强大 xff0c 可选类型和动态 语言 xff0c 支持Java平台 旨在提高开发人员的生产力得益于简洁 xff0c 熟悉且简单易学的语法 可以与任何Java程序顺利集成 xff0c 并立即为您的应用程序提供强大的功能
  • Jenkins 共享库应用

    1 创建一个共享库 1 xff09 创建共享库 可以直接在github中创建一个公开类型的仓库 xff0c 也可以创建私有类型的gitlab仓库 xff0c 需要提前配置好仓库的认证凭据 xff0c 这里使用gitlab创建了一个名为jen

随机推荐

  • Generic WebHookTrigger 自动触发

    1 安装配置 Generic WebHookTrigger 目的 xff1a 为Jenkins作业添加触发器 xff0c 便于其他系统调用 安装配置Generic WebHook xff0c 插件名称 xff1a Generic Webho
  • Jenkins 权限管理与凭据

    权限管理 安装插件 Role Based Strategy 可以对Jenkins用户进行权限管理 xff0c 如果在Jenkins控制台安装插件失败 xff0c 可以去Jenkins官网下载插件然后再上传 Role based Author
  • 部署Maven环境

    JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a 1G 43 可用磁盘空间 操作系统 xff1a 没有限制 下载地址 xff1a Maven Down
  • Maven 集成

    先在执行节点上安装Maven xff1a 部署Maven环境 lovely nn的博客 CSDN博客 JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a
  • 哪些技术好书值得一读再读?阿里大牛列了一份经典书单

    喜爱读书 xff0c 就等于把生活中寂寞无聊的时光换成巨大享受的时刻 有了书 xff0c 各个领域的智慧 xff0c 几乎触手可及 我们能有幸站在前辈 巨人的肩膀上 xff0c 看更远的风景 4月23日世界读书日 xff0c 阿里九位技术大
  • JDK 环境部署

    环境Centos 7 6 卸载旧的 查看旧的java版本 java version 查看jdk信息 rpm qa grep i jdk 卸载jdk rpm e nodeps jdk信息 安装新的 rpm安装1jdk rpm ivh jdk
  • Docker部署Gitlab

    这里用docker部署gitlab ce 14 0 0 ce 0版本 xff1a docker pull gitlab gitlab ce 14 0 0 ce 0 mkdir p gitlab1 config data logs docke
  • Pipeline 部署K8S应用

    概述 提前在K8S集群中部署jenkins和gitlab应用 xff0c gitlab用于存放应K8S的资源清单Yaml文件 xff0c Jenkins用于拉取gitlab上的Yaml文件并将其部署到K8S集群中 将所有Yaml文件放在Gi
  • curl https方式访问kubernetes集群API

    使用curl https方式访问kubernetes集群的api 认证方式需要用到token xff0c 这里使用变量赋予APISERVER 和TOKEN的值 apiserver xff1a APISERVER 61 kubectl con
  • Deployment 回滚

    更新Deployment资源时 xff0c pod状态为Pending xff0c 使用delete命令是删不掉Pending的pod的 xff0c 因为Deployment会无限创建 xff0c 这时候需要用到Deployment的回滚功
  • 在Pod中执行目录操作,提示Permission denied

    问题 xff1a 进入Pod执行创建文件的操作 xff0c 出现如下报错 kubectl exec it jenkins 5b688ddcc7 h72f2 n cicd bash touch test touch cannot touch
  • Copy宿主机文件到Docker容器中

    1 查找容器名 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67686c68c78c keycloak v3 34 opt keycloak bin k 3
  • K8S中部署Grafana

    官方部署文档 xff1a Deploy Grafana on Kubernetes Grafana Labs 以下Yaml从官方copy下来的并做了些修改 xff0c Service使用Nodeport方式是为了便于本地访问 cat gra
  • 在 AlertManager 报警通知中展示监控图表

    参考原文档 xff1a 在 AlertManager 报警通知中展示监控图表 Promoter 是一个用于 AlertManager 通知的 Webhooks 实现 xff0c 支持在消息通知中展示实时报警图表 xff0c 也支持定制消息通
  • Github添加SSH keys

    问题 xff1a 在本地 xff08 linux系统 xff09 下载github仓库源代码时 xff0c 执行git clone 命令时出现以下报错 xff1a git clone git 64 github com hh hub pro
  • 阿里技术大牛最爱的“闲书”,你看过多少?

    在忙碌的写代码 修bug生活里 xff0c 你有多久没有闲下来 xff0c 读读 闲书 xff0c 取悦自己了呢 xff1f 正如梁文道所说 xff0c 读一些无用的书 xff0c 做一些无用的事 xff0c 花一些无用的时间 xff0c
  • blackbox_exporter 黑盒监测

    一 简介 blackbox exporter blackbox exporter是Prometheus 官方提供的 exporter 之一 xff0c 可以提供 http dns tcp icmp 的监控数据采集 xff0c blackbo
  • Python 与Django环境搭建

    系统 xff1a Windows 10 python环境搭建 1 python安装步骤 python包下载链接 xff1a https www python org downloads windows 下载版本 xff1a python 3
  • prometheus图

    Prometheus Server 框架图 xff0c 只要能提供对应的metrics接口 xff0c promehteus就能接入监控 xff0c prometheus会把抓取到的指标数据持久化到本地磁盘中 xff0c 跟其它数据库一样它
  • 经典文献阅读之--BEVDistill(BEV蒸馏)

    0 简介 之前作者前段时间在研究BEV的相关算法 xff0c 当时就觉得BEV算法好是好 xff0c 但是所需要的内存以及计算资源实在是太大了 xff0c 无法实时在真实场景中运行 我们知道多视图 xff08 multi view 三维目标