DID-M3D 论文学习

1. 解决了什么问题?

单目 3D 检测成本低、配置简单,对一张 RGB 图像预测 3D 空间的 3D 边框。最难的任务就是预测实例深度,因为相机投影后会丢失深度信息。以前的方法大多直接预测深度,本文则指出 RGB 图像上的实例深度不是一目了然的,它由视觉深度信息和实例属性信息耦合,很难直接用网络学到。
在这里插入图片描述

2. 提出了什么方法?

将实例深度看作为实例视觉表面深度(visual depth)和实例属性深度(attribute depth)的结合。Visual depth 与物体的外观和画面中的位置有关。Attribute depth 则取决于物体的内在属性(维度、朝向等),它关注于 RoI 内的特征,与图像中的仿射变换无关。Visual depth 定义是物体上每个点到相机的绝对深度值,attribute depth 是从这些点到物体 3D 中心的相对深度偏移量。我们用不同的 heads 来提取不同类型的特征,分别进行深度预测。

对于每个图块,分割为 m × n m\times n m×n个网格。每个网格表示物体的一小部分,它有一个 visual depth 和 attribute depth。考虑到遮挡和 3D 位置的不确定性,uncertainty 表示每个深度预测的置信度。推理时,每个目标输出 m × n m\times n m×n个实例深度预测,自适应地获取最终的实例深度预测和置信读。

Preliminaries

单目 3D 目标检测的输入是一张 RGB 图像 I ∈ R H × W × 3 \text{I}\in \mathbb{R}^{H\times W\times 3} IRH×W×3,在 3D 空间预测单模态的 3D 边框,包括 3D 中心点位置 ( x , y , z ) (x,y,z) (x,y,z)、维度 ( h , w , l ) (h,w,l) (h,w,l)和朝向角 θ \theta θ,朝向角通常指的是偏航角。经过特征编码后,得到特征图 F ∈ R H 4 × W 4 × C \text{F}\in \mathbb{R}^{\frac{H}{4}\times \frac{W}{4}\times C} FR4H×4W×C C C C是通道数。然后 F \text{F} F输入进 3 个 2D 检测 heads,即 2D 热力图 H ∈ R H 4 × W 4 × B \text{H}\in \mathbb{R}^{\frac{H}{4}\times \frac{W}{4}\times B} HR4H×4W×B、2D 偏移量 O 2 d ∈ R H 4 × W 4 × 2 \text{O}_{2d}\in \mathbb{R}^{\frac{H}{4}\times \frac{W}{4}\times 2} O2dR4H×4W×2、2D size S 2 d ∈ R H 4 × W 4 × 2 \text{S}_{2d}\in \mathbb{R}^{\frac{H}{4}\times \frac{W}{4}\times 2} S2dR4H×4W×2 B B B是类别数。这样,我们可以得到 2D 边框预测。然后,根据这些 2D 框从特征图 F \text{F} F上使用 RoI Align 提取单个目标的特征, F o b j ∈ R n × 7 × 7 × C \text{F}_{obj}\in \mathbb{R}^{n\times 7\times 7\times C} FobjRn×7×7×C,其中 7 × 7 7\times 7 7×7是 RoI Align 的大小, n n n是 RoIs 的个数。最后,将这些目标特征 F o b j \text{F}_{obj} Fobj输入进 3D 检测 heads 获取 3D 参数。于是,我们就有了 3D 中心点映射偏移量 O 3 d ∈ R n × 2 \text{O}_{3d}\in \mathbb{R}^{n\times 2} O3dRn×2、3D 边框维度 S 3 d ∈ R n × 3 \text{S}_{3d}\in \mathbb{R}^{n\times 3} S3dRn×3、朝向角 Θ ∈ R n × k × 2 \Theta\in \mathbb{R}^{n\times k\times 2} ΘRn×k×2 k k k是 multi-bin 里面的个数)、visual depth D v i s ∈ R n × 7 × 7 \text{D}_{vis}\in \mathbb{R}^{n\times 7\times 7} DvisRn×7×7、visual depth uncertainty U v i s ∈ R n × 7 × 7 \text{U}_{vis}\in \mathbb{R}^{n\times 7\times 7} UvisRn×7×7、attribute depth D a t t r ∈ R n × 7 × 7 \text{D}_{attr}\in \mathbb{R}^{n\times 7\times 7} DattrRn×7×7、attribute depth uncertainty U a t t r ∈ R n × 7 × 7 \text{U}_{attr}\in \mathbb{R}^{n\times 7\times 7} UattrRn×7×7。有了这些参数,我们就可计算出最终的 3D 边框预测。

Decoupled Instance Depth

Visual Depth

表示物体表面在小 RoI 网格上的物理深度。每个网格的 visual depth 就是网格内所有像素的平均深度。单目图像里的 visual depth 有一个重要特性。对于一个单目系统,visual depth 高度依赖物体的 2D 框大小(远处的物体在图像上要小一些)以及图像中的位置(图像坐标系里的 v v v越小,表示深度越深)。所以,如果我们对图像做仿射变换,visual depth 也会随之变换,深度值应该随之缩放。这个过程就是 affine-sensitive。
在这里插入图片描述

Attribute Depth

表示从物体视觉表面到目标 3D 中心点的深度偏移量。它和物体的内在属性联系更加紧密,所以叫做 attribute depth。例如,当车辆朝向与 3D 空间的 z z z轴(深度方向)平行时,车尾的 attribute depth 就是车子长度的一半;当朝向与 x x x轴平行,则 attribute depth 是车子宽度的一半。Attribute depth 取决于物体的语义信息和内在特性,并且对于仿射变换是不敏感的,因为物体的内在特性不会随着仿射变换而变化。这个过程就是 affine-invariant。

作者使用 2 个 heads 分别预测 visual depth 和 attribute depth。有以下的好处:

  • 以一种合理并自然的方式将目标深度解耦,更能全面、准确地表示物体;
  • 网络针对不同类型的深度提取不同的特征,加速学习;
  • 深度解耦了,就能通过仿射变换进行有效的数据增广。

数据增广

在单目 3D 检测领域,很少用仿射变换做数据增广,因为变换后的深度信息是不知道的。在数据增广中,作者增加了随机裁剪和尺度缩放策略。图像上的 3D 中心映射点也进行相同的仿射变换。用图像上 y y y轴的缩放系数来对 visual depth 做缩放,因为 d = f ⋅ h 3 d h 2 d d=\frac{f\cdot h_{3d}}{h_{2d}} d=h2dfh3d f , h 3 d , h 2 d f,h_{3d},h_{2d} f,h3d,h2d分别是焦距、物体的 3D 高度和 2D 高度。Attribute depth 会保持不变,因为它对仿射变换无感。类似地,物体的其它内在特性如观测角、维度,都保持不变。
在这里插入图片描述

Depth Uncertainty and Aggregation

因为 3D 定位比较困难,2D 分类得分无法充分表示单目 3D 检测的置信度。本文将实例深度 uncertainty 解耦为 visual depth uncertainty 和 attribute depth uncertainty。只有当物体的 visual depth uncertainty 和 attribute depth uncertainty 都很低时,实例深度的置信度才。

假设 D v i s ∈ R n × 7 × 7 \text{D}_{vis}\in \mathbb{R}^{n\times 7\times 7} DvisRn×7×7里的每一个 visual depth d v i s d_{vis} dvis以及 U v i s ∈ R n × 7 × 7 \text{U}_{vis}\in \mathbb{R}^{n\times 7\times 7} UvisRn×7×7里其对应的 uncertainty u v i s u_{vis} uvis预测都服从 Laplace 分布 L ( d v i s , u v i s ) L(d_{vis},u_{vis}) L(dvis,uvis)。类似,attribute depth 的分布是 L ( d a t t , u a t t ) L(d_{att},u_{att}) L(datt,uatt),其中 d a t t ∈ D a t t ∈ R n × 7 × 7 d_{att}\in \text{D}_{att} \in \mathbb{R}^{n\times 7\times 7} dattDattRn×7×7 u a t t ∈ U a t t ∈ R n × 7 × 7 u_{att}\in \text{U}_{att}\in \mathbb{R}^{n\times 7\times 7} uattUattRn×7×7。因此,实例深度分布就是 L ( d ~ i n s , u ~ i n s ) L(\tilde{d}_{ins}, \tilde{u}_{ins}) L(d~ins,u~ins),其中 d ~ i n s = d v i s + d a t t \tilde{d}_{ins} = d_{vis}+d_{att} d~ins=dvis+datt u ~ i n s = u v i s 2 + u a t t 2 \tilde{u}_{ins}=\sqrt{u_{vis}^2 + u_{att}^2} u~ins=uvis2+uatt2 。然后用 D ~ i n s ( p a t c h ) ∈ R n × 7 × 7 \tilde{\text{D}}_{ins(patch)}\in \mathbb{R}^{n\times 7\times 7} D~ins(patch)Rn×7×7 U ~ i n s ( p a t c h ) ∈ R n × 7 × 7 \tilde{\text{U}}_{ins(patch)}\in \mathbb{R}^{n\times 7\times 7} U~ins(patch)Rn×7×7表示 RoI 内的实例深度以及 uncertainty。

为了获得最终的实例深度,首先将 uncertainty 转化为概率, P i n s ( p a t c h ) = exp ⁡ ( − U ~ i n s ( p a t c h ) ) {\text{P}}_{ins(patch)}=\exp(-\tilde{\text{U}}_{ins(patch)}) Pins(patch)=exp(U~ins(patch)),其中 P i n s ( p a t c h ) ∈ R n × 7 × 7 {\text{P}}_{ins(patch)}\in \mathbb{R}^{n\times 7\times 7} Pins(patch)Rn×7×7。然后聚合图块内的实例深度。对于第 i ∈ { i , . . . , N } i\in \lbrace i,...,N\rbrace i{i,...,N}个物体,我们有:
d i n s = ∑ D ~ i n s ( p a t c h ) i P i n s ( p a t c h ) i ∑ P i n s ( p a t c h ) i d_{ins}=\sum \frac{\tilde{\text{D}}_{ins(patch)_i}{\text{P}}_{ins(patch)_i}}{\sum {\text{P}}_{ins(patch)_i}} dins=Pins(patch)iD~ins(patch)iPins(patch)i

对应的实例深度置信度就是:

p i n s = ∑ ( P i n s ( p a t c h ) i ∑ P i n s ( p a t c h ) i P i n s ( p a t c h ) i ) p_{ins}=\sum \left( \frac{\text{P}_{ins(patch)_i}}{\sum \text{P}_{ins(patch)_i}}\text{P}_{ins(patch)_i}\right) pins=(Pins(patch)iPins(patch)iPins(patch)i)
因此,最终的 3D 检测置信度就是 p = p 2 d ⋅ p i n s p=p_{2d}\cdot p_{ins} p=p2dpins p 2 d p_{2d} p2d是 2D 检测置信度。

损失函数

2D 检测:延续了 CenterNet,2D 热力图 H \text{H} H表示图像上物体大概的中心位置。其大小是 H 4 × W 4 × B \frac{H}{4}\times \frac{W}{4}\times B 4H×4W×B H , W , B H,W,B H,W,B分别是输入图像的高度、宽度和类别数。2D 偏移量 O 2 d O_{2d} O2d表示相对于 2D 中心点的偏移。2D 大小 S 2 d S_{2d} S2d表示 2D 框的高度和宽度。跟 CenterNet 一样,损失函数由 L H , L O 2 d , L S 2 d \mathcal{L}_H,\mathcal{L}_{O_{2d}},\mathcal{L}_{S_{2d}} LH,LO2d,LS2d组成。

3D 检测

  • 对于 3D 物体的维度,使用了常用的变换和损失设计 L S 3 d \mathcal{L}_{S_{3d}} LS3d
  • 对于朝向角,网络预测观测角,使用 multi-bin 损失 L Θ \mathcal{L}_{\Theta} LΘ
  • 使用图像平面上的 3D 中心点投影和实例的深度来还原物体的 3D 坐标。通过预测关于 2D 中心点的 3D 投影的偏移量,实
    现 3D 中心点投影。损失函数是 L O 3 d = Smooth L 1 ( O 3 d , O 3 d ∗ ) \mathcal{L}_{O_{3d}}=\text{Smooth}L_1(O_{3d}, O_{3d}^*) LO3d=SmoothL1(O3d,O3d) ∗ * 表示对应的标签。
  • 通过将激光雷达的点云投影到图像上得到 visual depth,然后实例深度标签减去 visual depth 标签,得到 attribute depth 标签。Visual depth 损失是: L D v i s = 2 u v i s ∥ d v i s − d v i s ∗ ∥ + log ⁡ ( u v i s ) \mathcal{L}_{D_{vis}}=\frac{\sqrt{2}}{u_{vis}}\left\|d_{vis}-d_{vis}^*\right\|+\log(u_{vis}) LDvis=uvis2 dvisdvis+log(uvis) u v i s u_{vis} uvis是 uncertainty。

类似地,我们有 attribute depth 损失 L D a t t \mathcal{L}_{D_{att}} LDatt,实例深度损失 L D i n s \mathcal{L}_{D_{ins}} LDins。整体损失是:

L = L H + L O 2 d + L S 2 d + L S 3 d + L Θ + L D v i s + L D a t t + L D i n s \mathcal{L}=\mathcal{L}_H+\mathcal{L}_{O_{2d}}+\mathcal{L}_{S_{2d}}+\mathcal{L}_{S_{3d}}+\mathcal{L}_\Theta+\mathcal{L}_{D_{vis}}+\mathcal{L}_{D_{att}}+\mathcal{L}_{D_{ins}} L=LH+LO2d+LS2d+LS3d+LΘ+LDvis+LDatt+LDins

3. 有什么优点?

将实例的深度解耦为 visual depth 和物体的内在属性,网络能学到不同类型的深度特征。并且在数据增广时,能对图像有效地进行仿射变换,取得不错的效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习日记2023.5.22】 之 套餐模块完善

4. 功能模块完善之套餐模块 4.1 新增套餐 4.1.1 需求分析与设计 产品原型 后台系统中可以管理套餐信息,通过 新增功能来添加一个新的套餐,在添加套餐时需要添加套餐对应菜品的信息,并且需要上传套餐图片。 新增套餐原型: 当填…

自动化如何做?爆肝整理企业自动化测试工具/框架选择实施,你要的都有...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

web基础与HTTP协议

web基础与HTTP协议 一、域名概述二、网页的概念三、HTML四、web概述静态网页:动态页面动态页面与静态页面的区别 五、HTTP 一、域名概述 域名的概念:IP地址不易记忆 早期使用Hosts文件解析域名 – 主机名称重复 – 主机维护困难 DNS(域名系…

大学4年做出来这个算不算丢人

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

开发者关系工程师如何帮助开发者在Sui上构建

近期,我们与Sui开发者关系负责人Brian Hennessey-Hsien进行了对话,就Sui上的开源、去中心化和开发者成就等话题展开讨论。 日前,我们采访了Sui基金会的开发者关系负责人Brian Hennessey-Hsieh,共同探讨了其对于Web3中开发者发展历…

2009.03-2022.06华证ESG季度评级(季度)

2009.03-2022.06华证ESG评级(季度) 1、时间:2009.03-2022.06.15 2、来源:整理自Wind 3、指标:华证ESG(只有综合评级,无细分评级数据) 4、样本数量:A股4800多家公司 …

【数据安全-02】AI打假利器数字水印,及java+opencv实现

AIGC 的火爆引燃了数字水印,说实话数字水印并不是一项新的技术,但是这时候某些公司拿出来宣传一下特别应景,相应股票蹭蹭地涨。数字水印是什么呢,顾名思义,和我们在pdf中打的水印作用差不多,起到明确版权、…

拉货搬家货运APP开发分析和功能列表

作为国家经济发展的重要基础设施,物流行业正在面对转型升级的风口。巨大的市场体量,也迎来了激烈的市场竞争。为了从同质化的服务中脱颖而出,开拓更大的市场,并且解决线下司机的载货痛点,货运APP的开发必不可少。 开发…

firewalld防火墙

firewalld防火墙 1:firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。firewalld和iptables都是用来管理防火墙的工具(属于用户态&a…

学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!

目录 引言 (一)在本地整合出报告 1.在cmd分别安装pytest和allure-pytest 2.进入需要执行的代码所在的路径 3.运行测试报告,代码如下 4.解析此json文件,代码如下(新打开cmd进入路径) 5.打开此HTML文件…

在CTEX文档生成中使用WinEit编辑带有公式符号的中文文档应用举例

CTEX文档生成中使用WinEit编辑带有公式符号的中文文档应用举例 CTEX在编辑文档格式和排版时具有优秀的性能,可批量处理文档格式,该用格式时候也非常快捷。下面举例介绍CTEX文档生成中怎样使用WinEit编辑带有公式符号的中文文档。 1.需要的代码 .在WinEi…

TPlinker解读

参考: 关系抽取之TPLinker解读加源码分析 TPLinker 实体关系抽取代码解读 实体关系联合抽取:TPlinker TPLinker中文注释版 Tagging TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging,过程分为三部分: &…

springboot+java大学生新生入学报到报道系统+jsp004

新生报到系统分为学院管理员,宿舍管理员,财务管理员,辅导员,学生五种登录身份 学院管理员界面登入后台后有个人信息的展示,可对余下的四种身份信息进行增删改查,可进行对高考信息的导入导出,对报…

(三)ArcGIS空间数据的转换与处理——栅格数据变换

ArcGIS空间数据的转换与处理——栅格数据变换 目录 ArcGIS空间数据的转换与处理——栅格数据变换 1.地理配准2.平移3.扭曲4.旋转5.翻转6.重设比例尺7.镜像 数据变换是指对数据进行诸如放大、缩小、翻转、移动、扭曲等几何位置、形状和方位的改变等操作。对于 栅格数据的相应操…

chatgpt赋能python:Pythonsearchsorted:用于搜索排序数组的快速工具

Python searchsorted:用于搜索排序数组的快速工具 在Python编程中,有时需要在有序数组中快速查找值的位置。Python searchsorted工具提供了一种快速而高效的方法,可用于在已排序的数组中搜索值的位置。在本文中,将深入探讨Python…

震惊!人工智能引发灰色经济,ChatGPT变身罪魁祸首!

人工智能技术的日益发展和普及,其呈现出无边界的开发空间,引领出无数的商业应用,越来越多的领域开始依赖这一技术,各种应用场景日益丰富,而其内在的巨大潜力也被不断开发。随之而来的则是,因为技术的滥用和…

java泛型详解

一、什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运…

最全iOS 上架指南

一、基本需求信息。 1、苹果开发人员账户(公司已经可以无需申请,需要开启开发者功能,每年99美元) 2、开发好应用程序 二、证书 上架版本需要使用正式证书。 1、创建Apple Developer证书 2、上传证书Sign In - Apple 3、点击开发者…

TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

前言:建议看着图片,根据文字描述走一遍TCP通讯过程,加深理解。 目录 TCP通信时序: 1)建立连接(三次握手)的过程: 2)数据传输的过程: 3)关闭连…

【笔试强训编程题】Day5.( 统计回文 45842 ) 和( 连续最大和 58539)

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训编程题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!! 文章目录…