论文阅读笔记:Digging Into Self-Supervised Monocular Depth Estimation

  • 1 背景
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 自监督训练
    • 4.2 优化自监督深度估计
      • 4.2.1 每个像素的最小重建损失
      • 4.2.2 自动掩码静态像素
      • 4.2.3 多尺度估计
      • 4.2.4 最终的训练损失
    • 4.3 额外考虑
  • 5 效果

1 背景

大规模获取每像素的GT深度数据具有挑战性。为了克服这一限制,自监督学习已成为执行单目深度估计的训练模型的一种有前景的替代方案。在本文中,作者提出了一系列改进,与竞争的自监督方法相比,这些改进共同产生了定量和定性改进的深度图。

生成高质量的颜色深度很有吸引力,因为它可以廉价地补充自动驾驶汽车中使用的激光雷达传感器,并实现新的单照片应用,例如图像编辑和 AR 合成。解决深度问题也是使用大型未标记图像数据集对下游判别任务的深度网络进行预训练的有效方法。然而,为监督学习收集具有准确GT深度的大型且多样化的训练数据集本身就是一个艰巨的挑战。作为替代方案,最近的几种自监督方法表明,可以仅使用同步立体对或单目视频来训练单目深度估计模型。

在这两种自监督方法中,单目视频是立体监督的一个有吸引力的替代方案,但它也带来了一系列挑战。除了估计深度之外,模型还需要在训练期间估计时间图像对之间的自我运动。这通常涉及训练一个姿态估计网络,该网络将有限的帧序列作为输入,并输出相应的相机变换。相反,使用立体数据进行训练使得相机姿态估计成为一次性离线校准,但可能会导致与遮挡和纹理复制伪影相关的问题。

2 创新点

提出了三种架构和损失创新,这些创新相结合,在使用单目视频、立体对或两者进行训练时,可以极大地改进单目深度估计:

(1)一种新颖的外观匹配损失,可以解决使用单目时出现的像素遮挡问题监督

(2)一种新颖且简单的自动掩蔽方法,用于忽略在单目训练中未观察到相对相机运动的像素

(3)多尺度外观匹配损失,以输入分辨率执行所有图像采样,从而减少深度伪影。

3 方法

自监督单目训练的研究通常探索日益复杂的架构、损失函数和图像形成模型,所有这些最近都有助于缩小与完全监督方法的差距。本文证明,一个令人惊讶的简单模型和相关的设计选择可以带来更好的预测。特别是,本文提出

(i)最小重投影损失,旨在稳健地处理遮挡

(ii)减少视觉伪影的全分辨率多尺度采样方法

(iii)自动掩蔽损失以忽略训练像素违反相机运动假设。

4 模块

本文的深度预测网络采用单一颜色输入 I t I_t It 并生成深度图 D t D_t Dt 。首先回顾单目深度估计自监督训练背后的关键思想,然后描述深度估计网络和联合训练损失。

4.1 自监督训练

自监督深度估计将学习问题定义为一种新颖的视图合成问题,通过训练网络从另一幅图像的角度预测目标图像的外观。通过限制网络使用中间变量(在本文的例子中为深度或视差)执行图像合成,可以从模型中提取可解释的深度。这是一个不适定问题,因为每个像素可能存在大量不正确的深度,在给定这两个视图之间的相对姿态的情况下,可以正确地重建新颖的视图。经典的双目和多视图立体方法通常通过强制深度图的平滑度以及在通过全局优化(例如,求解每像素深度)时计算补丁上的照片一致性来解决这种模糊性。

本文也将问题表述为训练时光度重投影误差的最小化。将每个源视图 I t ′ I_{t'} It 相对于目标图像 I t I_t It 的姿态的相对姿态表示为 T t → t ′ T_{t→t'} Ttt 。本文预测一个密集的深度图 D t D_t Dt,它可以最小化光度重投影误差 L p L_p Lp ,其中
在这里插入图片描述
这里 p e pe pe 是光度重建误差,例如像素空间中的 L 1 L1 L1 距离; p r o j ( ) proj() proj() I t ′ I_{t'} It 中投影深度 D t D_t Dt 的二维坐标, < > <> <> 是采样运算符。为了简化符号,假设所有视图的预先计算的内在函数 K K K 是相同的,尽管它们可以不同。按照[21],使用双线性采样对源图像进行采样,这是局部可微分的,并且按照[75, 15]使用 L 1 L1 L1 S S I M SSIM SSIM 制作光度误差函数 p e pe pe ,即
在这里插入图片描述

其中 α = 0.85 α = 0.85 α=0.85 。如[15]中所示,使用边缘感知平滑度
在这里插入图片描述

其中 KaTeX parse error: Undefined control sequence: \* at position 5: d_t^\̲*̲ = d_t/\bar{d_t… 是[62]中的平均归一化逆深度,以阻止估计深度的收缩。

在立体训练中,源图像 I t ′ I_{t'} It 是立体图像对中的第二个视图,它具有已知的相对姿态。虽然单目序列的相对姿势事先未知,但[76]表明可以训练第二个姿态估计网络来预测投影函数 p r o j proj proj 中使用的相对姿势 T t → t ′ T_{t→t'} Ttt 。在训练过程中,同时求解相机姿态和深度,以最小化 L p L_p Lp 。对于单目训练,使用时间上与 I t I_t It 相邻的两个帧作为源帧,即 I t ′ ∈ { I t − 1 , I t + 1 } I_{t'} ∈ \{I_{t−1}, I_{t+1}\} It{It1,It+1} 。在混合训练(MS)中, I t ′ I_{t'} It 包括时间相邻的帧和相反的立体视图。

4.2 优化自监督深度估计

现有的单目方法产生的深度质量低于最好的完全监督模型。为了弥补这一差距,本文提出了几项改进,可以显着提高预测深度质量,而无需添加需要训练的额外模型组件,如图3。
在这里插入图片描述

4.2.1 每个像素的最小重建损失

当计算多个源图像的重投影误差时,现有的自监督深度估计方法将重投影误差平均到每个可用的源图像中。这可能会导致像素出现问题,这些像素在目标图像中可见,但在某些源图像中不可见(“Figure 3” (Godard 等, 2019, p. 3) (pdf) (c))。如果网络预测此类像素的正确深度,则被遮挡的源图像中的相应颜色可能与目标不匹配,从而导致较高的光度误差损失。这些有问题的像素来自两个主要类别:由于图像边界处的自我运动而导致的视野外像素被遮挡的像素。视野外像素的影响可以通过在重投影损失中屏蔽此类像素来减少,但这并不能解决遮挡问题,其中平均重投影可能会导致模糊的深度不连续性。

本文提出了一种同时解决这两个问题的改进方案。在每个像素处,只使用最小值,而不是对所有源图像的光度误差进行平均。因此,最终的每像素光度损失是
在这里插入图片描述
图4为这种损失在实践中的示例。
在这里插入图片描述
使用最小的重投影损失可以显著减少图像边界处的伪影,提高遮挡边界的清晰度,并提高准确性,如表2。
在这里插入图片描述
图4中的 L L L R R R 反了,看着是按时序采集的意思。右上图中的颜色表示选择底部的哪些源图像进行式-4的匹配。

4.2.2 自动掩码静态像素

自监督的单目训练通常在移动摄像机和静态场景的假设下进行。当这些假设被打破时,例如当摄像机静止或场景中有物体运动时,性能可能会受到很大影响。对于通常在训练期间观察到的移动的物体,这个问题可以在预测的测试时间深度图中表现为无限深的“孔”,如图2。这激发了本文的第二个贡献:一种简单的自动掩码方法,可以过滤掉序列中从一帧到下一帧外观不会改变的像素。这具有让网络忽略与相机以相同速度移动的对象的效果,甚至可以在相机停止移动时忽略单目视频中的整帧。
在这里插入图片描述
本文也对损失μ应用了逐像素蒙版,选择性地加权像素。然而,与之前的工作相比,本文的掩码是二进制的,因此 μ ∈ { 0 , 1 } μ ∈ \{0, 1\} μ{0,1} ,并且是在网络的正向传递上自动计算的,而不是从对象运动中学习或估计的。作者观察到,在序列中相邻帧之间保持不变的像素通常表示静态相机、与相机相对平移相等的物体或低纹理区域。因此,将 μ 设置为仅包括翘曲图像的重投影误差 I t ′ → t I_{t'→t} Itt 低于原始未翘曲源图像 I t ′ I'_t It 的像素损失,即

在这里插入图片描述
其中 [] 是 Iverson 括号。在摄像机和另一个对象都以相似的速度移动的情况下, μ μ μ 可以防止图像中保持静止的像素污染损失。同样,当相机处于静态状态时,遮罩可以过滤掉图像中的所有像素,如图5。本文通过实验表明,这种简单且廉价的损失修改带来了显着的改善。
在这里插入图片描述

4.2.3 多尺度估计

由于双线性采样器的梯度局部性,为了防止训练目标卡在局部最小值,现有模型使用多尺度深度预测和图像重建。在这里,总损失是解码器中每个尺度上各个损失的组合。[12, 15] 计算每个解码器层分辨率下图像上的光度误差。作者观察到,这倾向于在中等较低分辨率深度图中的大型低纹理区域创建“孔”,以及纹理复制伪影(深度图中的细节错误地从彩色图像传输)。在光度误差不明确的低纹理区域中,深度中的孔可能以低分辨率出现。这使得深度网络的任务复杂化,现在可以自由地预测不正确的深度。

受立体重建技术的启发,提出了对这种多尺度公式的改进,其中将视差图像的分辨率和用于计算重投影误差的彩色图像的分辨率解耦。本文不是计算模糊的低分辨率图像上的光度误差,而是首先将较低分辨率的深度图(从中间层)上采样到输入图像分辨率,然后重新投影、重新采样并计算这个较高输入分辨率下的误差 p e pe pe ,如图3。此过程类似于匹配色块,因为低分辨率视差值将导致高分辨率图像中的整个像素“色块”变形。这有效地限制了每个比例尺的深度图,使其朝着相同的目标工作,即尽可能准确地重建高分辨率输入目标图像。

4.2.4 最终的训练损失

作者将每个像素的平滑度和掩蔽的光度损失( L = μ L p + λ L s L = μL_p + λL_s L=μLp+λLs )结合起来,并平均每个像素、尺度和批次。

4.3 额外考虑

本文的深度估计网络基于一般的 U-Net 架构,即编码器-解码器网络,具有跳跃连接,使其能够表示深度抽象特征和局部信息。作者使用 ResNet18 作为编码器,与现有工作中使用更大、更慢的 DispNet 和 ResNet50 模型相比,它包含 11M 参数。从 ImageNet上预训练的权重开始,并表明与从头开始训练相比,这提高了紧凑模型的准确性,如表2。本文的深度解码器输出为 sigmoid,其他位置为 ELU 非线性。作者将 σ 形输出转换为 D = 1/(aσ + b) 的深度,其中选择 a 和 b 以将 D 限制在 0.1 到 100 个单位之间。在解码器中使用反射填充代替零填充,当样本落在图像边界之外时,返回源图像中最近的边界像素的值。这显著减少了现有方法中发现的边界伪影,例如 [15]。

对于姿态估计,使用轴-角度表示来预测旋转,并将旋转和平移输出缩放 0.01。对于单目训练,使用三帧的序列长度,而姿态网络由 ResNet18 形成,经过修改以接受一对彩色图像(或六个通道)作为输入,并预测单个 6-DoF 相对姿态。以 50% 的几率执行水平翻转和以下训练增强:随机亮度、对比度、饱和度和色相抖动,范围分别为 ±0.2、±0.2、±0.2 和 ±0.1。重要的是,颜色增强仅适用于馈送到网络的图像,而不适用于用于计算 L p L_p Lp 的图像。馈送到姿态和深度网络的所有三个图像都使用相同的参数进行增强。

5 效果

本文的方法在KITTI 2015上与其他SOTA的对比效果可见表1。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YAML 数据格式详解

1. YAML 概念 YAML (YAML Ain’t Markup Language) 是一种人性化的数据序列化格式&#xff1a; 专注于数据而非标记&#xff08;与 XML 不同&#xff09;使用简洁的语法表示复杂数据结构可读性高&#xff0c;适合人类编写和阅读广泛应用于配置文件&#xff08;如 Docker Comp…

react扩展

首先补充一下上个章节的一点结尾内容。reducer是一个纯函数&#xff0c;纯函数指的是当我们在redux里面定义了我们需要共享的对象后&#xff0c;我们是不可以对共享的对象本身进行改变的。我们在获取更新后的共享数据时&#xff0c;要去重新定义一个新的变量来获取更新后的共享…

6.获取图片灰度与缩放

目录 一、Halcon 1. 获取像素坐标以及灰度 2. 拖动缩放 3.图像缩放的实现方式 二、VS联合编程 1.获取像素坐标和灰度 2.拖动缩放 一、Halcon 1. 获取像素坐标以及灰度 *1. 获取像素坐标 * 1. get_mposition * 2. halcon窗口事件自带坐标数据 * *2. 获取像素灰度 *…

无人机+AI:革新集装箱箱号识别的智能解决方案

在现代化物流体系中&#xff0c;集装箱箱号识别是货物追踪与管理的核心环节。然而&#xff0c;传统的人工巡检或固定摄像头识别方式存在效率低、覆盖范围有限、易受环境干扰等问题&#xff0c;难以满足日益增长的物流需求。基于无人机与AI技术的集装箱箱号识别系统&#xff0c;…

一种新的参数高效微调方法-LoRI

论文&#xff1a;LoRI: Reducing Cross-Task Interference in Multi-Task Low-Rank Adaptation LoRA 具体参考 1. 引言与背景&#xff1a;为什么需要 LoRI&#xff1f; 这篇论文提出了一种新的参数高效微调&#xff08;PEFT&#xff09;方法&#xff0c;名为 LoRA with Reduce…

Go网络编程:基于TCP的网络服务端与客户端

Go 语言的 net 包为网络编程提供了简洁高效的接口。我们可以使用它快速构建 TCP 网络服务&#xff0c;如聊天服务器、RPC、微服务通信等。 一、TCP简介 TCP&#xff08;Transmission Control Protocol&#xff09;是面向连接的、可靠的传输协议&#xff0c;通信模型为客户端-服…

【StarRocks系列】架构、核心概念

目录 一、架构&#xff1a;分布式 MPP 列式存储 向量化引擎 二、存储&#xff1a;高性能列式存储引擎 三、表设计&#xff1a;三类模型适配不同场景 四、数据写入&#xff1a;多种方式支持实时与批量 五、数据读取&#xff1a;极致优化的查询引擎 总结&#xff1a;Star…

从源码到生产:Apache 2.4.57 自动化安装实战指南(附脚本)

引言&#xff1a;为何选择源码安装 Apache&#xff1f; 在服务器运维场景中&#xff0c;源码编译安装 Apache HTTP Server 是实现精细化配置的重要方式。相比包管理器安装&#xff0c;源码安装可自定义模块组合、适配特定依赖环境&#xff0c;并精确控制版本。本文将通过自动化…

iOS开发中的安全实践:如何通过Ipa混淆与加固确保应用安全

随着移动应用技术的不断发展&#xff0c;开发者越来越重视应用的安全性&#xff0c;尤其是iOS应用。无论是面对大规模的数据泄露问题&#xff0c;还是在应用上线后避免被逆向破解&#xff0c;开发者们都需要采取一系列技术手段来保护应用。然而&#xff0c;很多开发者在应用开发…

JAVA实战开源项目:智慧生活商城系统 (Vue+SpringBoot) 附源码

本文项目编号 T 245 &#xff0c;文末自助获取源码 \color{red}{T245&#xff0c;文末自助获取源码} T245&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

GNU Octave 基础教程(8):GNU Octave 常用数学函数

目录 一、基本算术运 二、初等数学函数 三、三角函数与反三角函数 四、统计函数 五、复数与其他函数 ✅ 小结 &#x1f51c; 下一讲预告 GNU Octave 内置了大量数学函数&#xff0c;涵盖初等数学、线性代数、复数运算、统计函数等&#xff0c;非常适合科研、工程计算使用…

Go语言中的文件与IO:JSON、CSV、XML处理

在数据交换与存储中&#xff0c;JSON、CSV、XML 是常见格式。Go 标准库为这些格式提供了强大且易用的支持&#xff0c;涵盖结构体映射、读写文件、编码解码等操作。 一、JSON处理&#xff08;encoding/json&#xff09; 1. 基本使用&#xff1a;结构体 <-> JSON type U…

三种语言写 MCP

参考 https://zhuanlan.zhihu.com/p/1915029704936760261 https://www.5ee.net/archives/tmXJAgWz https://github.com/modelcontextprotocol/python-sdk https://github.com/modelcontextprotocol/typescript-sdk https://modelcontextprotocol.io/quickstart/server https:/…

Python训练营-Day38-Dataset和Dataloader类

在遇到大规模数据集时&#xff0c;显存常常无法一次性存储所有数据&#xff0c;所以需要使用分批训练的方法。为此&#xff0c;PyTorch提供了DataLoader类&#xff0c;该类可以自动将数据集切分为多个批次batch&#xff0c;并支持多线程加载数据。此外&#xff0c;还存在Datase…

SVN上传代码

SVN&#xff08;Subversion&#xff09;是一个常用的版本控制系统&#xff0c;提供了对代码管理和协作的支持。以下是SVN常见操作&#xff08;如获取代码、上传代码、合并冲突处理等&#xff09;的命令行流程及实例&#xff1a; 1. 获取代码&#xff08;Checkout&#xff09; 在…

【appium】2.初始连接脚本配置

连接配置 from appium import webdriver desired_caps {platformName: Android,automationName: UIAutomator2,deviceName: ZTEB880,appPackage: com.taobao.taobao,appActivity: com.taobao.tao.welcome.Welcome,noReset: True }driver webdriver.Remote(http://localhost:…

FliTik翻页时钟v1.1.25.36,支持安卓TV/手机/车机+windows电脑端

FliTik翻页时钟v1.1.25.36&#xff0c;支持安卓TV/手机/车机windows电脑端 FliTik翻页时钟是一款集高颜值与强大功能于一身的全平台数字时钟工具类应用&#xff0c;支持TV、iOS、安卓、PC以及鸿蒙系统。它不仅拥有精美的翻页动画…

以AI赋能创意未来:即梦3.0与Seedance1.0Lite重磅登陆POE!

近年来&#xff0c;随着人工智能技术的不断突破&#xff0c;AI模型的应用场景也在逐渐拓宽。在这一过程中&#xff0c;如何整合和利用现有的AI技术&#xff0c;实现更为便捷的创作服务&#xff0c;成为了许多科技企业关注的焦点。近日&#xff0c;全球知名的AI模型整合平台POE正…

云计算与5G:如何利用5G网络优化云平台的性能

想象一下&#xff0c;你正在用手机看视频、进行在线游戏&#xff0c;甚至是使用云存储来保存你的重要文件。所有这些背后&#xff0c;其实都离不开一个无形的力量——云计算。而今天&#xff0c;5G网络的出现&#xff0c;就像为这些云服务加装了一对翅膀&#xff0c;让它们飞得…

GPT-1 与 BERT 架构

GPT-1 架构特点 仅解码器架构&#xff1a;摈弃了传统transformer中的编码器层&#xff0c;而是直接用解码器和自注意力&#xff0c;同时抛弃掉了交叉多头注意力层&#xff0c;自注意力通过mask来完成计算。注意力块添加到12个&#xff0c;Attention的输出维数为762维&#xff0…