论文阅读笔记 | 三维目标检测——MV3D算法

news2024/10/4 13:56:52

如有错误,恳请指出。


文章目录

  • 1. 背景
  • 2. 网络结构
    • 2.1 提案投影网络
    • 2.2 区域融合网络
  • 3. 实验结果

paper:《Multi-View 3D Object Detection Network for Autonomous Driving》

1. 背景

激光雷达可以提供物体的深度信息,而摄像头可以提供物体的细节语义信息,利用Lidar+Image两种模态理应可以获得更好的检测效果。一般来说,基于LIDAR点云的方法通常可以获得更准确的3D位置,而基于图像的方法在2D框评估方面具有更高的准确性,如何有效的利用来自与Lidar和Imgae两种模态获得更好的3d检测效果设计模型结构是MV3D的出发点,并启发于FractalNet和Deeply-Fused Net两个工作进行网络设计。

此外,在Related Work中有些比较有趣的工作,比如利用体素和点云的多视图表示来进行3d物体分类任务,利用图像和深度信息以及光流的组合进行2d行人检测,不过这种利用多模态进行自动驾驶的研究还比较少。


2. 网络结构

网络的大体思路是利用点云的鸟瞰图生成3d候选框,再投影回去图像、点云、鸟瞰图模态上获取区域特征(region feature map),再将这些来自不同模态的区域特征进行深度融合用于后续的分类和边界框回归。结构图如下,下面内容会介绍一下网络细节。
在这里插入图片描述

2.1 提案投影网络

MV3D的核心思路是采用多模态的输入数据,对候选框进行联合表征。那么,首先要处理的问题就是如何根据点云提取多模态的数据,这里的多模态数据包含鸟瞰图、前视图和原始RGB图像数据。

鸟瞰图模态数据的获取,首先需要对点云数据在俯视图上进行量化,划分为一个个精度为0.1m的网格,对这些网格提取最大高度点的反射强度作为Intensity特征;提取网格点数作为Density特征;同时沿高度方向将点云切分为M片,对切分出来的每一片提取每片网格的最大高度作为其Height特征,这里的Height特征会有M个(因为对每一片进行提取)。在量化过程中,由于是量化的是一个局部的特征描述值,所以损失是在所难免的。此时鸟瞰图特征就有1个channel的Intensity特征,1个channel的Density特征以及M个channels的Height特征拼接组成,故鸟瞰图特征图具有(M+2)个通道。

对于前视图的量化处理,这里采用类似VeloFCN的前视图投影方法。将整个点云场景看成是一组柱坐标系上的点集,将其量化投影到一个二维的特征图位置上。具体的计算方法是根据点的水平方向以及垂直方向的角度来确定其二维特征图上的位置,计算公式为: c = [ a r c t a n ( y / x ) / ∆ θ ] , r = [ a r c t a n ( z / ( s q r t ( x 2 + y 2 ) ) ) / ∆ φ ] c=[arctan(y/x)/∆θ],r=[arctan(z/(sqrt(x^2+y^2)))/∆φ] c=[arctan(y/x)/θ]r=[arctan(z/(sqrt(x2+y2)))/φ]。这里和VeloFCN的投影公式稍有不同,但是本质上是一样的,利用的是相同的角度。在确定了点集在二维特征上的投影位置后,就需要对相应位置进行属性值填充。这里填充的是点的高度,深度以及反射强度。那么,对于整个二维特征图的channels本质上就是点云的高度图,深度图以及反射强度图。这里只有位置投影是量化处理,具体的特征值填充不涉及量化过程,因为是直接根据点属性进行填充的。所以,对于来着前视图的投影特征通道是3,分别是Height、Distance、Intensity。

至此完成了点云在鸟瞰图和前视图的二维特征量化处理,就利用卷积网络进行特征提取(MV3D这里使用的是VGG作为特征提取的Backbone)。具体来说,对于每个模态的特征,都用VGG网络进行8倍下采样提取特征,再经过4倍上采样获取ROI处理前的特征图。

MV3D是一个Two-Stage的网络结构,采样来自鸟瞰图的特征来进行候选框的生成。使用鸟瞰图进行候选框的提取相比图像和前视图具有几个优势:1)保留了长宽尺寸;2)避免视图中的遮挡问题;3)垂直位置变化不大。在候选框的生成中,主要回归的参数中心点位置与边框尺寸(x,y,z,l,w,h),为了简化处理流程先忽视方向的回归。而MV3D采用的是基于anchor的方法(anchor-based),需要对先验框(prior boxes)进行设计,这里对(l,w)取 {(3.9,1.6),(1.0,0.6)} 中的值,并且高度h被设置为1.56m,(x,y) 是鸟瞰特征图中变化的位置,z可以根据相机高度和物体高度计算,并设置0°与90°两个方向,所以对于每个特征点拥有4种先验框,进行这种简化的方法对候选框进行回归(其中回归的是xyz的偏移量以及lwh的相对尺寸)可以让训练更加容易。

尽管如此,量化得到的二维鸟瞰图中目标框的像素太小。一个方法是提高输入的分辨率但是会占用较大的计算量;另外一种方法是对VGG提取出来的特征进行2倍上采样处理。利用pixel-wise的特征分别进行分类与边界框回归,获取预测的3d候选框,这里就是一个经典的RPN操作,与2d检测算法Faster RCNN是一样的(鸟瞰图上的2d iou>0.7设置为正样本,<0.5设置为负样本,在两者之间则丢弃)。但由于点云数据比较稀疏,这里的pixel-wise特征会产生较多的空anchor,MV3D这里通过点占用图上计算积分图像来删除这些空锚(empty anchor)来减少计算量。随后进行鸟瞰图上的2d nms处理提取top 2k个候选框,这里需要注意一下虽然是在2d上进行nms筛选,但是候选框还是3d的,至此完成了候选框的生成。

2.2 区域融合网络

对这里来自Lidar坐标系下预测的3d候选框,可以投影回去鸟瞰图、前视图以及RGB图像上的2d位置,获得对应模态上的2d候选框,这里我认为是MV3D中最重要的一步。本质上就是3d候选框在鸟瞰图、前视图、RGB图像中的2d位置表示,这一步是可以做到的。那么接下来就是Two-stage的roi操作了,在不同模态中根据投影映射的2d候选框在上采样4x的特征图(feature map)中找到对应映射关系的每一个特征矩阵,将这些对应2d候选框相应位置的特征矩阵进行ROI pooling统一池化成相同大小(尺度一致),至此就获得了相同候选框在不同模态上的roi pooling特征表示。ps:对Faster RCNN详细介绍

对相同候选框在多个模态上的roi特征表示进行融合有多种方法,如下所示。这里MV3D采用阶段式融合的方法,来获取最后的候选框特征(proposal featue)。通过一下的数学公式描述的比较清楚:f0 =fBV ⊕ fFV ⊕ fRGB; fl =H^BV_l (fl−1) ⊕H^FV_l(fl−1) ⊕H^RGB_l(fl−1), ∀l = 1, · · · , L。
在这里插入图片描述

对来自多模态的roi特征进行阶段性融合后,就可以进行最后的边界框预测。MV3D对ground truth的回归目标是8个角点: t = (∆x0, · · · ,∆x7,∆y0, · · · ,∆y7,∆z0, · · · ,∆z7)。这24维度vector编码通过对角线长度归一化进行角偏移。但是很显然,利用24维度信息来预测8个角点时存在信息冗余(很显然通过两个对角点就可以表示一个3d框,所以信息是冗余的),但是在实验中发现这种编码方法比中心和大小编码方法效果更好,而且8个角点包含了方向信息,可以通过8个角点来计算方向。训练过程中同样利用的是鸟瞰图的iou重叠分配正负样本,如果iou>0.5则设置为正样本,反正就是负样本。在推理过程中,将3D框投影到鸟瞰图中以计算iou,设置iou阈值为0.05来去除冗余框,以确保对象在鸟瞰中不会占用相同的空间。

此外,MV3D还设置了两个正则化方法,分别是丢弃路径训练(drop-path training)和辅助损失训练(auxiliary losses)。其中的随机丢弃分为全局丢弃或者是局部丢弃,全局丢弃是在某一次训练中可能只训练单一模态;而局部丢弃是对每个模态的融合处理节点以一定概率丢弃,但起码会保留一个。在辅助损失中,层数一致结构一致且权重相同但取消了融合模块,独立进行结果的推理,最后损失结构与主网络进行加权平均,结构如下图所示。
在这里插入图片描述


3. 实验结果

在MV3D的实验结果中可以看出VeloFCN的预测框其实置信度不会太高,在iou设定为0.7后出现了性能崩塌的情况,MV3D相比之下性能鲁棒一点。无论是鸟瞰图上的2d检测还是点云上的3d检测在当时都达到的不错的性能。
在这里插入图片描述

通过消融实验,也证实了BEV+FV+RGB三中模态的融合在性能的提高上是最佳的,同时层级式的roi特征容易+辅助损失也带来了不错的提升,不过个人感觉这种层级式的elemnet-wise mean不是特别雅光,不知道利用concat是否会有更好的效果。同时,对于不同模态的特征量化存在一定的信息丢失,如何进一步减少信息的损失进行量化,会不会也能提升网络的精度。
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/14779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

麦子-linux字符设备驱动初探

字符驱动的联系 框架 软件支持&#xff1a;驱动 驱动类型 1、字符驱动&#xff08;每次读取一个字节&#xff09; 2、块驱动&#xff08;每次读取多个字节&#xff09; 3、网络设备驱动&#xff08;协议栈&#xff09; 设备号dev_t 内核中使用类型dev_t来描述设备号&…

【Unity3D】Unity 脚本 ④ ( 游戏物体 GameObject 的坐标 | 修改 游戏物体 GameObject 的本地坐标 )

文章目录一、 游戏物体 GameObject 的坐标二、 修改 游戏物体 GameObject 的本地坐标一、 游戏物体 GameObject 的坐标 游戏物体 GameObject 的坐标 有 2 种 : 世界坐标 : 调用 Transform#position 属性 获得 ;本地坐标 : 调用 Transform#localPosition 属性 获得 ,本地坐标 就…

这份Java大厂常见面试题解析,你的闭关修练宝典!

纵观今年的技术招聘市场&#xff0c; Java依旧是当仁不让的霸主 &#xff01;即便遭受 Go等新兴语言不断冲击&#xff0c;依旧岿然不动。究其原因&#xff1a; Java有着极其成熟的生态&#xff0c;这个不用我多说&#xff1b; Java在 运维、可观测性、可监 控性方面都有着非常…

Materials Studio8.0

centos7.9 检查主机名&#xff1a; 检查环境&#xff1a; [rootmaster conf]# rpm -qa|grep glibc; rpm -qa|grep libgcc; rpm -qa|grep libstdc ;rpm -qa|grep redhat-lsb Materials Studio8.0软件包 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;fomg 软件…

【LeetCode每日一题:891. 子序列宽度之和~~~排序+数学推导】

题目描述 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums &#xff0c;返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大&#xff0c;请返回对 109 7 取余 后的结果。 子序列 定义为从一个数组里删除一些&#xff08;或者…

骗赞小程序(仅供恶搞)

作为一个 良 凉心博主&#xff0c;平时发的文章得不到点赞&#xff0c;也得不到关注&#xff0c;这改如何办&#xff1f;很简单只需要勤奋发文 威逼利诱。如何威逼利诱&#xff0c;用关机啊&#xff01; 所以&#xff0c;我们需要一个程序&#xff0c;让用户自行选择是否进行关…

85服务-ControlDTCSetting

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文介绍诊断和通讯管理功能单元下的85服务ControlDTCSetting&#xff0c;该服务的目的是控制DTC设置。 文章目录诊断协议那些事儿一、85服务-ControlDTCSetting二、请求格式DTCSettingType三、肯定响应格式四、否…

PLC滑动平均值滤波(SMART 200梯形图篇)

滑动平均值滤波的算法原理请参看《信号处理》专栏的其它文章,这里给出简单快速写法,以供参考。 S7-200 SMART PLC信号处理系列之滑动平均值滤波FB_RXXW_Dor的博客-CSDN博客_plc平均值滤波程序PLC相关滤波算法,专栏有很多详细讲解这里不再赘述。滑动平均值滤波和算术平均值滤…

基于51单片机的多功能视力保护台灯

目录 摘要. 1 1弓I言 1 1.1 选 题 背 景 1 2 视力保护器的现状 2 1.3 本文主要研究内容 3 2系统硬件 设计 31 89c52 单片机简介 4 2.2 超声波测距报警 电路 53 89c5 2 单片机的中断系统 74 光线报警电路 8 1 光敏电阻控制电路 8 2.5 定时报菩电路 9 2.5. 1 单片机控制电路 10 …

[附源码]SSM计算机毕业设计茶园文化交流平台论文JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

u-boot对设备树的支持__传递dtb给内核

a. u-boot中内核启动命令: bootm <uImage_addr> // 无设备树,bootm 0x30007FC0 bootm <uImage_addr> <initrd_addr> <dtb_addr> // 有设备树 比如 : nand read.jffs2 0x30007FC0 kernel; // 读内核u…

两客一危解决方案-最新全套文件

两客一危解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、多维数据融合2、车辆轨迹分析3、AI 视频分析4、评价体系四、获取 - 两客一危全套最新解决方案合集一、建设背景 “两客一危一货”车辆是指公路客运、旅游客运、危化品运输车及货运车辆。“两客一危”车辆…

【freeRTOS】操作系统之三-信号量

1 二值信号量 1.1 二值信号量简介 ​ 二值信号量通常用于互斥访问或同步&#xff0c;二值信号量和互斥信号量非常类似&#xff0c;但是还是有一 些细微的差别&#xff0c;互斥信号量拥有优先级继承机制&#xff0c;二值信号量没有优先级继承。因此二值信号量更适合用于同步(任…

计算机毕业设计springboot+vue+elementUI 广场舞团高校舞蹈社团管理系统

项目介绍 随着时代的发展&#xff0c;高校的社团发展完善&#xff0c;同时越来越多的年轻人喜欢广场舞以及各类舞蹈。为了让更多的年轻人能够有一个自己喜欢的爱好&#xff0c;并且有一个共同交流的平台。我们开发了本质的广场舞团&#xff0c;高校社团管理系统。通过本系统可…

代码随想录day59|503. 下一个更大元素 II|42. 接雨水|Golang

代码随想录day59 还剩下一天 目录 代码随想录day59 503. 下一个更大元素 II 42. 接雨水 双指针解法 动态规划解法 单调栈解法 503. 下一个更大元素 II func nextGreaterElements(nums []int) []int {n : len(nums)ans : make([]int,n,n)for i:0;i<len(ans);i{ans[i]…

ECCV2022 商汤 发布最大的表征学习预训练数据集OmniBenchmark解读

近些年&#xff0c;基于深度模型的表征学习算法在某些知识域上&#xff08;例如人脸、动物等&#xff09;取得了非常优异的成绩&#xff0c;然而由于现有数据集覆盖的视觉类别仍然比较有限&#xff0c;一个覆盖视觉类别足够广&#xff0c;且能够支持学习到适用于许多视觉类别的…

CRM的定义是什么?这么多CRM产品,CRM客户管理系统该如何选择?

在禽流感的助涨下&#xff0c;CRM被拉到了众矢之的。 为甚么这样说呢&#xff1f;绝大多数民营企业遭遇着巨大的存活压力&#xff0c;导致民营企业不得已展开结构调整和网络化。CRM作为一种专精的客人关系管理工作工具&#xff0c;再次受到追捧。 CRM具有客人管理工作、网络营…

JavaScript的DOM技术

JavaScript的DOM技术 文章目录JavaScript的DOM技术1.DOM简介1.1 DOM概念2.获取元素2.1 如何获取页面元素2.2 根据ID获取2.3 根据标签名获取2.4 根据标签名获取2.5 通过H5新增方法获取2.6 获取特殊元素3.事件基础3.1 事件概述3.2 事件三要素3.3 执行事件的步骤3.4 鼠标事件4.操作…

工程施工监理平台app开发 开创工程监理服务新理念

工程项目最容易让人焦头烂额&#xff0c;很难统揽全局&#xff0c;更无法将施工中的每一个问题都处理得当&#xff0c;工程施工监理平台app开发&#xff0c;从根本上解决了工程监管问题&#xff0c;成为工程施工监管方面的福音和好帮手。工程施工监理平台app开发是专注工程现场…

【单目3D目标检测】FCOS3D + PGD论文解析与代码复现

文章目录前言FCOS3D概述主要创新点主要框架结构回归目标损失函数推理过程2D引导的多层3D预测2D高斯分布的3D中心度实验设置源码复现PGD概述主要创新点深度估计主要框架结构创新点一&#xff1a;概率表示的不确定性建模DPD_PDP​创新点二&#xff1a;透视几何体的深度传播DGD_GD…