Depth Anything——强大的单目深度估计模型

概述

单目深度估计(Monocular Depth Estimation, MDE)是一项在计算机视觉领域中非常重要的技术,它旨在从单张图像中恢复出场景的三维结构。这项技术对于机器人导航、自动驾驶汽车、增强现实(AR)和虚拟现实(VR)等应用至关重要。

"DepthAnything"是TikTok、香港大学和浙江大学共同研发的一种先进单目深度估计技术。这项技术能够从2D图像中提取深度信息,并将其转换为3D影像。与传统的MDE技术相比,"DepthAnything"在提高深度图质量方面取得了显著进步,这使得它能够更准确地估计场景的深度信息。

这种技术的应用前景非常广泛:

  1. 增强现实(AR)和虚拟现实(VR):通过将2D图像转换为3D,可以为用户创造更加沉浸式的体验。
  2. 机器人和自动驾驶汽车:更准确的深度估计可以帮助机器人和自动驾驶汽车更好地理解周围环境,从而提高它们的导航和决策能力。
  3. 内容创作:摄影师和视频制作者可以使用这项技术将普通2D内容转换为3D,增加作品的吸引力和互动性。

"DepthAnything"模型的成功研发,不仅展示了单目深度估计技术的进步,也为相关领域的研究和应用提供了新的可能性。随着技术的进一步发展和优化,我们可以期待它在未来的实际应用中取得更好的效果,并为多个行业带来便利。

代码:https://github.com/LiheYoung/Depth-Anything
论文:https://arxiv.org/abs/2401.1089

Depth Anything

论文提出的"Depth Anything"技术,是单目深度估计(MDE)领域的一个重要进展。它通过以下几个关键点来实现鲁棒和高效的深度估计:

  1. 数据引擎设计:通过创建一个数据引擎来自动收集和标注大规模无标签数据(约62M),显著扩大了数据集的覆盖范围,这有助于减少模型的泛化误差。

  2. 数据增强策略:利用数据增强工具来创建更具挑战性的优化目标,迫使模型寻找额外的视觉知识,从而获得更鲁棒的特征表示。

  3. 辅助监督:开发了一种辅助监督机制,强制模型从预训练的编码器中继承丰富的语义先验,而不是依赖于辅助性的语义分割任务,这有助于实现更好的场景理解。

  4. 零样本能力评估:在六个公共数据集和随机捕获的照片上广泛评估了模型的零样本能力,展示了其出色的泛化能力。

  5. 微调提升性能:通过使用NYUv2和KITTI的度量深度信息对模型进行微调,进一步提升了模型的性能,达到了新的最先进水平(SOTA)。

  6. 深度条件控制网:更好的深度模型导致了更好的深度条件控制网,这对于许多应用场景来说是一个重要的优势。

论文的主要贡献可以总结为:

  • 强调了大规模、低成本和多样化的无标注图像数据扩展对于MDE的重要性。
  • 提出了一种有效的联合训练方法,通过提供更困难的优化目标,让模型学会使用额外的知识。
  • 展示了从预训练编码器继承语义先验的有效性,而不是依赖辅助任务。

算法框架

本文提出了一种利用带标签和未标记图像进行单目深度估计(MDE)的方法,称之为“Depth Anything”。方法包括以下步骤:

  • 学习带标签图像(Learning Labeled Images):通过使用来自六个公共数据集的1.5M带标签图像,采用与MiDaS相似的深度值变换和归一化方法,采用仿射不变损失进行多数据集联合训练,构建了一个师傅模型T。

  • 释放未标记图像的力量(Unleashing the Power of Unlabeled Images):与传统方法不同,该方法强调利用大规模未标记图像提高数据覆盖。通过利用互联网或各种任务的公共数据集,构建了一个多样化和大规模的未标记集。通过师傅模型T为未标记集生成伪标签,然后利用带标签图像和伪标签图像的组合,训练了一个学生模型S。在训练中,采用强烈的颜色和空间扭曲来激励学生模型主动寻求额外的视觉知识。

  • 语义辅助感知(Semantic-Assisted Perception):引入了辅助语义分割任务,通过为未标记图像分配语义分割标签,提供了高级语义相关信息。然而,为了更好地处理深度估计任务,采用了DINOv2模型在语义相关任务中的优秀性能,通过辅助特征对齐损失将其强大的语义能力转移到深度模型中。

本文方法通过联合利用带标签和未标记图像,充分利用大规模未标记数据的优势,通过深度模型的自我挑战和语义辅助感知,实现了更强大的单目深度估计性能。方法在多个数据集上进行了评估,并取得了令人满意的结果。

实验与测试

在六个公开数据集与随机拍摄图片上评估了Depth Anything模型的zero-shot能力;通过度量深度信息微调达成新的SOTA;更优的深度模型进而引申出更优的深度引导ControlNet。

总结

本研究引入了Depth Anything模型,该模型在稳健的单目深度估计方面展现了高度实用性。通过强调廉价且多样化的未标记图像的价值,并采用两种有效策略,即在学习未标记图像时设定更具挑战性的优化目标以及保留预训练模型的丰富语义先验,使得该模型在零样本深度估计方面表现出色。此外,该模型还可作为有望初始化下游度量深度估计和语义分割任务的有效工具。

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

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

相关文章

在vscode中远程连接linux进行开发

目录 引言 配置过程 1.本机安装OpenSSH 2.本机生成RSA公钥和私钥 3.将rsa公钥添加到远程linux的authorized_keys文件中 4.vscode安装Remote - SSH插件 5.在vscode中ssh连接服务器 6.在本地vscode操作远程linux文件进行开发 7.在vscode上给远程linux机器需安装插件 常…

设计模式 之 —— 抽象工厂模式

目录 什么是抽象工厂模式? 定义 特点 抽象工厂模式(java代码示例) 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…

[Meachines] [Easy] Sense PFSense防火墙RCE

信息收集 IP AddressOpening Ports10.10.10.60TCP:80,443 $ nmap -p- 10.10.10.60 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http lighttpd 1.4.35 |_http-title: Did not follow redirect to https://10.10.10.60/ |_http-server-header…

Nginx进阶-常见配置(二)

一、nginx 日志配置 nginx 日志介绍 nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_format 命令来定义,日志对于统计和排错是非常有利的,下面总…

Java语言程序设计——篇十一(3)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始

目录 一、电路的基本原理:电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…

C# Unity 面向对象补全计划 之 单例模式

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 了解我的专栏C#面向对象与进阶:http://t.csdnimg.cn/mIitr,尤其是关于类的那篇文章即…

jupyter支持跨机器远程访问

1. 远程访问场景 本地往往缺少GPU设备,为了让我们的代码能在有GPU设备的机器上运行,就需要在远程机器上启动jupyter notebook, 这意味着我们要在本地机器的浏览器上访问远程机器上的jupyter notebook。但是直接按ip访问会报如下错误: 因为ju…

ctfshow-web入门-sql注入(web176-web180)

目录 1、web176 2、web177 3、web178 4、web179 5、web180 1、web176 1 order by 4-- 闭合后简单判断了下字段数是 3 测试联合查询注入,存在关键字的过滤,包括 select 和 union (后面经过测试实际只过滤了 select) 大小写绕…

Star-CCM+负体积网格检查与出现原因

要使网格可用于有限体积计算,每个网格单元必须具有正体积,否则初始化过程将失败,且模拟计算无法运行。 负体积网格单元可能会以多种不同的方式出现,但必须修复或从网格中移除,才能继续执行任何后续操作。 要检查体网…

力扣hot100-二叉树

文章目录 概要二叉树的基本概念常见的二叉树类型常用的二叉树遍历二叉树的常用技巧 题目:二叉树的中序遍历方法1--递归遍历方法2--使用栈 概要 二叉树(Binary Tree)是一种树形数据结构,其中每个节点最多有两个子节点,…

docker安装与container基本使用

安装 Homebrew 的 Cask 已经支持 Docker for Mac, mac用户狂喜 brew install --cask --appdir/Applications docker其他入门用法可参考 Docker Hello World- 菜鸟教程 或网上自行搜索博客学习。本文主要记录我运行go-zero-mall用到的一些注意点。当然,gonivinck项…

本地项目提交到Gitee

在项目目录 右键 git bash here 可以在黑屏输入命令 也可以在项目里面 命令都是一样的 要排除哪些 git add . 添加所有文件 git commit -m "Initial commit" 提交到本地 git remote add origin https://gitee.com/xxxx/xxxx.git 添加远程仓库 …

【多线程】线程的五种创建方法

文章目录 线程在 Java 代码中编写多线程程序Thread 标准库 创建线程的写法1 . 继承 Thread 类代码回调函数休眠操作:sleep()抢占式执行观察线程jconsoleIDEA 内置调试器 2 . 实现 Runnable 接口代码 3. 匿名内部类创建 Thread ⼦类对象代码匿名内部类 4.匿名内部类创…

PCB设计经验——布线原则

1.连线精简——避免直角布线 导线也应看作一种元器件,有自己的电阻,电感,电容 PCB走线在直角转弯的地方,信号前后部分相互影响,导致分布电容增加,对信号上升沿和下降沿有延缓影响。从阻抗的角度来说&#…

海康笔试题

1. 2. 块设备:磁盘设备驱动、SD设备驱动 字符设备:终端设备驱动 网络设备:网络设备驱动 (1)linux操作系统驱动程序分为三大类:字符设备驱动、快设备驱动和网络设备驱动 (2)字符设…

渗透测试--DHCP饿死实验

实验拓扑 实验步骤 Router Router(config)#int f0/0 Router(config-if)#ip address 192.168.100.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#exitRouter(config)#ip dhcp pool NAME Router(dhcp-config)#network 192.168.100.0 255.255.255.0 Route…

过期知识:thinkphp5 使用migrate给现有的数据表新增表字段

个人开发网站记录, 这个文章主要是个以后健忘的我看的. 我在搞我的画笔审核 , 发现数据表的画笔数据在审核驳回的时候还是软删除好一些, 免得用户找不到之前上传的画笔数据, 后期也可以考虑重新显示给用户,让用户可以修改画笔信息重新提交审核. 这个时候想起了…

脚拉脚模型笔记

脚拉脚模型 ⌈♪⌋例题: 辅助线(中点)做法: 倍长中线Rt △ △ △ 斜边中线等腰 △ △ △ 三线合一中位线 需要:两个等腰三角形,顶角互补 共__底点__ 底角需要连接 解: ∵ D Q 1 / 2 A B O…

【Qt】QDial和QSlider

QDial QDial类用于创建一个旋转式的圆形控件,通过鼠标点击旋转、方向键或者pageUp和pageDown调整一个值。常用在需要进行连续调整的场景,比如音量控制、亮度控制、透明度调节等 常见属性 属性说明value持有的值minimum持有值所能到达的最小值maximum持有…