用于稀疏自适应深度细化的掩码空间传播网络 CVPR2024

目录

  • Masked Spatial Propagation Network for Sparsity-Adaptive Depth Refinement (CVPR 2024)
  • 用于稀疏自适应深度细化的掩码空间传播网络
  • 1 介绍
  • 2 算法流程
    • 2.1 问题建模
    • 2.2 Guidance Network
    • 2.3 MSPN 模块
  • 3 实验结果
    • 3.1 稀疏度自适应深度细化对比试验
    • 3.2 深度补全对比试验

Masked Spatial Propagation Network for Sparsity-Adaptive Depth Refinement (CVPR 2024)

用于稀疏自适应深度细化的掩码空间传播网络

论文地址:CVPR官网 arxiv

项目链接:github地址

摘要:深度补全的主要功能是弥补硬件传感器提供的稀疏深度测量点数量不足且不可预测的问题。然而,现有的深度补全研究假设稀疏性(即点数或 LiDAR 线数)在训练和测试过程中是固定的。因此,当稀疏深度的数量发生显著变化时,补全性能会大幅下降。为了解决这一问题,我们提出了稀疏自适应深度细化(SDR)框架,该框架使用稀疏深度点来优化单目深度估计。针对SDR,我们提出了掩码空间传播网络(MSPN),它能够通过逐步传播稀疏深度信息至整个深度图,有效地处理不同数量的稀疏深度点。实验结果表明,MSPN在SDR和传统深度补全场景中都达到了当前最先进的性能表现。

1 介绍

图像引导的深度补全是一项通过利用稀疏深度测量和RGB图像来估计密集深度图的任务;它通过估算深度来填充未测量的区域。由于许多深度传感器(如LiDAR和飞行时间相机(ToF))只能提供稀疏的深度图,这项任务变得尤为重要。随着深度信息在自动驾驶和各种3D应用中的广泛应用,深度补全已经成为一个重要的研究课题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

近年来,随着深度神经网络的成功,基于学习的方法通过利用大量训练数据显著提升了性能。这些方法尝试融合多模态特征,如表面法线或提供重复的图像引导。尤其是,基于亲和性的空间传播方法被广泛研究。

深度补全的主要功能是弥补现有深度传感器的局限性,但传统的深度补全研究通常假设稀疏性在训练和测试中是固定的。然而,实际上稀疏性会显著变化,因为在透明区域、镜子以及黑色物体上很难测量到深度。此外,传感器缺陷也会影响测量的数量。传统的空间传播方法在深度细化时通常对所有像素进行同时处理,而不考虑稀疏深度测量点的位置。因此,当只有少量稀疏深度点可用时错误的深度信息可能会在细化过程中传播。

在本文中,我们提出了一个稀疏自适应深度细化(SDR)框架,该框架根据深度测量的稀疏性自适应地优化单目密集深度估计。此外,我们提出了掩码空间传播网络(MSPN),用于将稀疏深度点的信息传播到未测量的区域。首先,我们使用现成的单目深度估计器从输入的RGB图像中估计一个初始深度图。接下来,一个引导网络使用输入图像、稀疏深度和初始深度图生成引导特征。最后,利用这些引导特征,所提出的 MSPN 通过迭代细化生成一个优化的深度图,如图1所示。

所提出的SDR框架能够在不同数量的稀疏深度点下进行训练,使其更加适用于实际应用。此外,所提出的MSPN通过根据稀疏测量生成自适应传播掩码,在 SDR 场景中比传统方法表现显著更好。此外,MSPNNYUv2KITTI 数据集上的传统深度补全任务中也提供了最先进的性能表现。

本文的贡献如下:

  • 我们开发了 SDR 框架,该框架利用可变数量的稀疏深度测量点来优化单目深度估计。
  • 针对 SDR,我们提出了 MSPN,以逐步传播稀疏深度信息,从而处理不同数量的稀疏深度点。
  • MSPNSDR 和传统深度补全场景中均提供了最先进的性能表现。

2 算法流程

图2 整体网络架构

2.1 问题建模

如上图2所示本文提出的模型输入为 图像 I ∈ R 3 × H × W \mathbf{I} \in \mathbb{R}^{3 \times H \times W} IR3×H×W 和稀疏深度图 S ∈ R H × W \mathbf{S} \in \mathbb{R}^{H \times W} SRH×W ,最终输出为密集深度图 D ∈ R H × W \mathbf{D} \in \mathbb{R}^{H \times W} DRH×W

该模型总共分为三部分包括:

  • 用于预测初始深度 D 0 ∈ R H × W \mathbf{D^0}\in \mathbb{R}^{H \times W} D0RH×W 的单眼深度估计模型 MDE
  • 用于融合不同模态的特征并生成指导特征 G ∈ R C × H × W \mathbf{G}\in \mathbb{R}^{C \times H \times W} GRC×H×W的指导网络 Guidance network
  • 用于迭代传播稀疏深度信息MSPN 模块

首先,RGB图像 I \mathbf{I} I 被输入到 MDE 中已得到初步的深度图 D 0 \mathbf{D^0} D0 ;接着,RGB图像 I \mathbf{I} I、稀疏深度图 S \mathbf{S} S 和初步深度图 D 0 \mathbf{D^0} D0 被输入到 Guidance network 用于生成指导特征 G \mathbf{G} G;最后,深度图 D n \mathbf{D^n} Dn 、 掩码 M n \mathbf{M^n} Mn 和指导特征 G \mathbf{G} G 被输入到 MSPN 模块多次迭代逐步输出更精细的深度图。其中,$\mathbf{M^0}=\Xi\left ( \mathbf{S}\right ) $ , Ξ \Xi Ξ表示指示函数,对于每个稀疏深度点输出 1,否则输出 0。(MDE模型采用了论文提供的预训练模型)

2.2 Guidance Network

图3 Guidance Network结构

Guidance Network 中,输入信号 I \mathbf{I} I S \mathbf{S} S D 0 \mathbf{D^0} D0 分别生成 481616 个通道的特征,这些特征通过拼接和卷积进行混合。混合后的特征被送入一个编码器-解码器网络。作为编码器,我们采用 PVT-Base,它处理一个 64 × H × W的张量,输出大小为 512 × H/32 × W/32 的编码特征。解码器由五个模块组成,每个模块执行 3 × 3 转置卷积、层归一化、ReLU 激活函数和 NAF 模块操作。每个解码器模块中的通道数保持不变。

提取高频特征

如红框中所示,通过从3×3卷积结果中减去1×1卷积结果来提取高频特征,类似于论文中的方法。

2.3 MSPN 模块

MSPN 的输入为 D n \mathbf{D^n} Dn M n \mathbf{M^n} Mn 输出 D n + 1 \mathbf{D^{n+1}} Dn+1 M n + 1 \mathbf{M^{n+1}} Mn+1 ,不断迭代并细化深度图。首先,使用 S \mathbf{S} S 替换 D n \mathbf{D^n} Dn 中的深度值得到 D ~ n \mathbf{\tilde{D} ^n} D~n ,公式如下:
D ~ n = ( 1 − M 0 ) ⊗ D n + M 0 ⊗ S \mathbf{\tilde{D} ^n}=(1-\mathbf{M ^0})\otimes \mathbf{D ^n}+\mathbf{M ^0}\otimes \mathbf{S} D~n=(1M0)Dn+M0S
其中,$\otimes $ 代表元素乘法。接着,确定细化过程中的参考像素细化的强度。传统的空间传播方法集中于选择参考像素。然而,可靠的像素远少于不可靠的像素,因此当仅提供少量稀疏深度时,这些方法的效果较差。为此,我们设计了基于掩码注意力动态滤波器,该滤波器计算每个像素与其周围像素之间的注意力得分。

首先,分别生成 查询特征 Q ∈ R L × H × W \mathbf{Q}\in \mathbb{R}^{L \times H \times W} QRL×H×W 和键特征 K ∈ R L × H × W \mathbf{K}\in \mathbb{R}^{L \times H \times W} KRL×H×W
Q n = f Q ( [ D ~ n , G ] ) , K n = f K ( [ D ~ n , G ] ) ⊗ M n \mathbf{Q^n} = f_\mathbf{Q}([\mathbf{ \tilde{D}^n}, \mathbf{G}]), \mathbf{K^n} = f_\mathbf{K}([\mathbf{\tilde{D}^n}, \mathbf{G}]) \otimes \mathbf{M^n} Qn=fQ([D~n,G]),Kn=fK([D~n,G])Mn
其中, f Q f_\mathbf{Q} fQ f K f_\mathbf{K} fK 都由一个 1×1 的卷积层和 LN层组成; [ ⋅ ] [\cdot ] [] 代表通道维度拼接。由于 D ~ n \mathbf{\tilde{D} ^n} D~n 尚未细化,所以, K n \mathbf{{K} ^n} Kn是可靠和不可靠像素特征的混合。因此,在计算 K n \mathbf{{K} ^n} Kn 时,我们会对不可靠的像素特征进行掩码处理。也就是公式中最后需要把 f K f_\mathbf{K} fK 的结果与 M n \mathbf{M^n} Mn 进行元素乘法。

图4 pixel-to-window attention

接着,接下来,我们计算 Q n \mathbf{Q^n} Qn 和 $\mathbf{K^n} $ 之间的注意力得分。设 q ∈ R L \mathbf{q} \in \mathbb{R}^{L} qRL 为 $\mathbf{Q^n} $ 中位于位置 ( i , j ) (i,j) (i,j) 的查询像素特征。同时,设 W k ∈ R L × p 2 \mathbf{W_k} \in \mathbb{R}^{L\times p^2} WkRL×p2 表示 $\mathbf{K^n} $ 中以 ( i , j ) (i,j) (i,j) 为中心的 p × p p \times p p×p 窗口内的键特征。请注意,我们计算的是像素到窗口的注意力,以使用其邻近像素来细化像素 ( i , j ) (i,j) (i,j)。更具体地说,像素到窗口的注意力 a ∈ R p 2 \mathbf{a} \in \mathbb{R}^{p^2} aRp2 计算如下:
a = softmax ( q T W K + b ) \mathbf{a} = \text{softmax}(\mathbf{q^T} \mathbf{W_K} + \mathbf{b}) a=softmax(qTWK+b)
其中, b ∈ R p 2 \mathbf{b} \in \mathbb{R}^{p^2} bRp2 代表 w × w w\times w w×w 窗口中的相对位置偏置,通过对 $\mathbf{Q^n} $ 的所有像素执行注意力操作,获得注意力特征 A n ∈ R p 2 × H × W \mathbf{A^n}\in \mathbb{R}^{p^2 \times H \times W} AnRp2×H×W

然后,使用 A n \mathbf{A^n} An D ~ n \mathbf{\tilde{D}^n} D~n,我们生成了一个精细化的深度图 R n ∈ R × H × W \mathbf{R^n}\in \mathbb{R}^{\times H \times W} RnR×H×W。令 KaTeX parse error: Got function '\tilde' with no arguments as subscript at position 11: \mathbf{W_\̲t̲i̲l̲d̲e̲{D}} W M \mathbf{W_M} WM 分别表示 D ~ n \mathbf{\tilde{D}^n} D~n M n \mathbf{M^n} Mn 中以 ( i , j ) (i,j) (i,j) 为中心的 p × p p \times p p×p 窗口。精细化后的深度像素 r \mathbf{r} r R n \mathbf{R^n} Rn 中的计算方式为:
r = ∑ t = 1 p 2 a t ⋅ W D ~ , t \mathbf{r} = \sum_{t=1}^{p^2} \mathbf{a}_t \cdot \mathbf{W}_{\mathbf{\tilde{D}},t} r=t=1p2atWD~,t
t t t 代表窗口中的第 t t t 个元素。图4展示了 pixel-to-window 注意力机制的处理过程。

最后,深度图 D n + 1 \mathbf{D^{n+1}} Dn+1 和掩码 D n + 1 \mathbf{D^{n+1}} Dn+1 分别由下面的两个公式生成:
D n + 1 = ( 1 − M n ) ⊗ D ~ n + M n ⊗ R n \mathbf{D}^{n+1} = (1 - \mathbf{M}^n) \otimes \mathbf{\tilde{D}}^n +\mathbf{M}_n \otimes \mathbf{R}_n Dn+1=(1Mn)D~n+MnRn

m n + 1 = ∑ t = 1 p 2 a t ⋅ W M , t \mathbf{m}_{n+1} = \sum_{t=1}^{p^2} \mathbf{a}_t \cdot \mathbf{}W_{\mathbf{M},t} mn+1=t=1p2atWM,t

3 实验结果

3.1 稀疏度自适应深度细化对比试验

在图 5 和图 6 中,实线表示单个模型在不同稀疏深度数量下的评估结果;相反,每个符号表示为固定数量的稀疏深度分别训练并评估的模型。我们可以从图 5 和图 6 中得出以下结论:

  • 通过比较图 5 中的实线,可以看出,所提出的 MSPNNYUv2 数据集上的所有稀疏深度数量下都优于其他方法。
  • 具体而言,一些方法专门针对较多的稀疏深度,随着稀疏深度的减少,它们的性能显著下降。相反,一些方法专门针对较少的稀疏深度,而当稀疏深度增加时,它们的性能仅有少量改善。
  • 另一方面,MSPN 展现出与那些为特定稀疏深度训练的符号标记方法类似的性能。这表明 MSPN 在不同的稀疏深度数量下都能产生稳健的结果。
  • 在图 6 中,MSPNKITTI 数据集上,当稀疏深度小于 64 行时,显著优于其他方法。
  • 对于 KITTI 数据集,那些专门针对某个特定激光雷达线数的方法在较少线数下表现不佳。相反,MSPN 利用单目深度估计结果,无论线数多少,都能有效进行深度补全。
  • 总体而言,MSPN 比传统算法在不同稀疏深度数量下生成更可靠的深度图,这表明 MSPN 更适合真实世界的应用。

图5 不同方法在NYUv2数据集上的性能对比图6 不同方法在KITII数据集上的性能对比

3.2 深度补全对比试验

虽然 MSPN 的主要关注点是 SDR(稀疏深度自适应精化),但我们也评估了 MSPN 在常规深度补全场景下的性能。对于这种常规深度补全,我们在引导网络中添加了另一个解码器头来预测初始深度图,并且不像之前的工作那样使用单目深度估计器。关于常规深度补全的详细网络结构见补充文档。

我们使用固定数量的稀疏深度来训练和测试我们的模型。对于 NYUv2 数据集,我们从真实深度中随机采样 500 个稀疏深度点,并训练网络 72 个周期。对于 KITTI 数据集,我们分别为 16 和 64 条激光雷达线条训练专门的模型,同样训练 72 个周期。为了在 KITTI 上进行公平比较,我们使用提供的 10k 子集进行训练。

下面两个表分别比较了在 NYUv2KITTI 数据集上的性能。可以看到,所提出的 MSPN 在常规深度补全任务上也提供了最先进的性能。图 7 通过定性分析将结果与进行了比较,可以看出 MSPN 更有效地填充了具有挑战性的区域,并提供了更精细的细节。

图7 在NYUv2数据集上的深度补全结果

图8 在KITTI数据集上深度补全结果

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

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

相关文章

背包问题(如何定义dp状态)

前言:我们要如何定义dp的定义呢,我们不能像正常那样,定义为花费了 i 钱得到的最大收益,我们这一题需要的是收益为 i 的时候的最小花费,那么我们就需要定义为达到收益为 v 的时候的最小花费 这一题有一个难点就是&#…

C++初阶:STL详解(三)——vector的介绍和使用

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 前言: 前面我们刚刚了解了strin…

VTD激光雷达(2)——02_OptiX_Lidar

BRDF公式计算强度,关键是材料 表面凹凸不平可以在三维模型中建立 ;一般是建模是平的,在软件中设置 第二章图片有水 问题PBR和非PBR的区别

【Linux】-基本指令(上)

🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:深入代码世界,了解掌握 Linux 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 与Windows环境不同,我们…

【算法】动态规划—最长公共子序列

最长公共子序列问题就是求出两个字符串的LCS长度,是一道非常经典的面试题目,因为它的解法是典型的二维动态规划。 比如输入 str1 "babcde", str2 "acbe",算法应该输出3,因为 str1 和 str2 的最长公共子序列…

视频格式转为mp4(使用ffmpeg)

1、首先安装ffmpeg,下载链接如下 https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1.1-full_build.7z 安装后确保ffmpeg程序加到PATH路径里,cmd执行ffmpeg -version出现下图内容表示安装成功。 2、粘贴下面的脚本到文本文件中,文件后缀…

基于对数变换的图像美白增强,Matlab实现

博主简介:matlab图像处理(QQ:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于对数变换的图像美白增强,用matlab实现。 一、案例背景和算法介绍 这次案例是美白算法&…

re题(20)BUUCTF [GWCTF 2019]pyre

BUUCTF在线评测 (buuoj.cn) Python解包及反编译: PyInstaller Extractoruncompyle6 - 知乎 (zhihu.com) python撤消: Pycharm撤销操作和代码跳转后退回操作以及消除波浪线操作快捷键_pycharm怎么反撤销-CSDN博客 把.pyc文件变成py文件 把.py文件用记事本打开 cod…

每日OJ_牛客_BC64 牛牛的快递

目录 牛客_BC64 牛牛的快递(简单模拟) 解析代码1 解析代码2 牛客_BC64 牛牛的快递(简单模拟) 牛牛的快递_牛客题霸_牛客网 描述 牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部…

Qt ORM模块使用说明

附源码:QxOrm是一个C库资源-CSDN文库 使用说明 把QyOrm文件夹拷贝到自己的工程项目下, 在自己项目里的Pro文件里添加include($$PWD/QyOrm/QyOrm.pri)就能使用了 示例test_qyorm.h写了表的定义,Test_QyOrm_Main.cpp中写了所有支持的功能的例子: 通过自动表单添加…

【代码随想录Day14】二叉树Part02

226.翻转二叉树 题目链接/文章讲解/视频讲解:代码随想录 遍历二叉树,交换每个节点的左右子树。 class Solution {public TreeNode invertTree(TreeNode root) {preorder(root);return root;}public static void preorder(TreeNode root) {if (root nu…

基于微信小程序的学生公寓电费信息管理系统+ssm(lw+演示+源码+运行)

基于微信小程序的学生公寓电费信息管理系统 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序被…

服务器上PFC配置丢失问题排查与解决方案

现象 基于nccl的多轨通信算力中心出现交换机端口出入方向丢包 分析 机间通信使用RoCE网络,为了避免因丢包导致大量重传报文影响训练性能,我们基于PFC和ECN在交换机和服务器配置搭建了无损网络,理论上是不允许丢包的,现在出现交…

TryHackMe 第1天 | Introduction to Cyber Security

偶然之间了解到了TryHackMe这个网站,尝试跟着其中的学习路径进行学习,发现还是挺适合入门网络安全这一领域的。但是这个网站包含了很多内容,如果不用一些东西记录下来,那么很容易忘记,所以打算在此记录一下学习过程。 …

JUC学习笔记(三)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 八、共享模型之工具--JUC8.1 AQS 原理1. 概述2 实现不可重入锁自定义同步器自定义锁 3.心得起源目标设计1) state 设计2)阻塞恢复设计3)队列…

linux 操作系统下date 命令介绍和使用案例

linux 操作系统下date 命令介绍和使用案例 在 Linux 操作系统中,date 命令是一个用于显示和设置系统日期和时间的基本工具。它不仅可以显示当前的日期和时间,还允许用户以不同的格式输出日期,并进行日期计算 1. date 命令简介 date 命令用…

神经网络_使用tensorflow对fashion mnist衣服数据集分类

from tensorflow import keras import matplotlib.pyplot as plt1.数据预处理 1.1 下载数据集 fashion_mnist keras.datasets.fashion_mnist #下载 fashion mnist数据集 (train_images, train_labels),(test_images, test_labels) fashion_mnist.load_data()print("t…

C++广义表的介绍及创建方法-附C语言实现代码

1. 简介 数组可以存储不允许再分割的数据元素,如字符’X’,数字11,当然它也可以存储数组,二维数组就是一个例子,你可以理解二维数组的每一行的元素是一列中的对应元素的组合。 广义表是一种线性表,或者说…

JVM HotSpot 虚拟机: 对象的创建, 内存布局和访问定位

目录 前言 对象的创建 对象的内存布局 对象的访问定位 前言 了解JVM的内存区域划分之后, 也大致了解了java程序的内存分布模型, 也了解它里面的内存区域里面的类型和各个类型的作用, 接下来我们进一步从对象创建到访问的角度, 来看看这些内存区域之间是怎么关联起来的. …