深度学习论文: Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data

深度学习论文: Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data
Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data
PDF: https://arxiv.org/abs/2401.10891.pdf
代码:https://github.com/LiheYoung/Depth-Anything
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

本文提出了名为Depth Anything的实用单目深度估计(MDE)方案,旨在构建能够处理各种任务环境图像的简单而强大的基础模型。方案从三个关键维度进行优化:首先,通过数据引擎实现大规模无标注数据的收集与自动标注,显著提升数据覆盖率和降低泛化误差;其次,利用数据增广工具创造更具挑战性的优化目标,增强模型对额外视觉知识的探索能力,提升特征鲁棒性;最后,设计辅助监督信息,使模型能够继承预训练Encoder中的丰富语义先验信息。
在这里插入图片描述

2 Depth Anything

本文提出了一种结合有标签和无标签图像训练的单目深度估计方法,以实现更优的性能。

首先,利用一个有标签的数据集来训练一个初始的“老师模型”T。这个模型通过监督学习的方式,从有标签的数据中学习深度估计的能力。

接着,利用这个已经训练好的老师模型T,对无标签的数据集进行预测,从而生成伪标签(pseudo-labels)。这些伪标签虽然不如真实的标签准确,但它们提供了关于无标签图像中深度信息的近似估计。

最后,结合有标签的数据集(包含真实标签)和经过伪标签标记的无标签数据集,共同训练一个“学生模型”S。通过这种方式,学生模型S能够同时从真实标签和伪标签中学习到深度估计的知识,从而进一步提升其性能。

这种方法充分利用了有标签和无标签数据集的各自优势,有效提升了单目深度估计的准确性和泛化能力。
在这里插入图片描述
本文所构建的有标签与无标签数据集,相比于MiDaS v3.1,该方案使用的有标签数据集更少(6 vs 12)。
在这里插入图片描述

2-1 Learning Labeled Images

采用类似于MiDaS的方法进行单目深度估计模型的训练。在训练中,深度值通过特定公式转换到视差空间,并进行归一化处理。同时为了适应多数据集训练,引入了仿射不变损失来忽略样本的比例和偏移差异。

为了增强模型的泛化能力和鲁棒性,

  • 除了使用标记图像,还利用了大量易于获取且多样化的未标记图像。
  • 此外,为了加强模型的编码器部分,使用了DINOv2的预训练权重进行初始化,
  • 并利用预训练的语义分割模型来识别并处理图像中的天空区域,将其视差值设为最远点。

2-2 Unleashing the Power of Unlabeled Images

在单目深度估计(MDE)领域,利用未标记图像可以显著扩展数据覆盖范围并提升模型的泛化能力。本文提出一种方法,从互联网和公共数据集中收集大规模的未标记图像,并利用一个预训练的MDE模型为这些图像生成深度图的近似值。

在技术实现上,采用了一种基于教师-学生架构的策略。首先,利用已有的MDE教师模型T对未标记图像集进行预测,生成一个伪标记数据集。随后,将这个伪标记数据集与已有的标记图像集相结合,共同用于训练学生模型S。

然而,当标记图像的数量已经足够时,从额外的未标记图像中获取的额外信息可能会变得相对有限。特别是,由于教师和学生模型通常共享相同的预训练参数和架构,它们在未标记数据集Du上往往会做出类似的预测,无论是正确的还是错误的。

为了克服这一挑战,引入了数据增强技术。通过应用如颜色失真和CutMix空间失真等数据增强方法,增加了图像的多样性,从而迫使学生模型S从未标记图像中学习到更多样化的视觉特征和知识。这种策略有助于提升学生模型在未标记数据上的性能,进而增强整个单目深度估计系统的泛化能力。

2-3 Semantic-Assisted Perception

通过整合DINOv2模型的强大语义能力,提出了一个辅助特征对齐损失,用于改善深度估计模型的性能。该损失在深度模型的特征与DINOv2编码器的特征之间引入了对齐,同时保持了对深度信息的敏感性。

但是使用RAM、GroundingDINO和HQ-SAM模型进行语义分割,但未能提高深度估计性能,因为将图像解码到离散类空间损失了过多语义信息。因此引入DINOv2模型,利用其强大的语义能力通过辅助特征对齐损失来改善深度估计。特征对齐损失通过测量深度模型提取的特征与DINOv2编码器特征之间的余弦相似度来计算。

但是处于对特征对齐的考虑,不直接要求深度模型产生与DINOv2完全相同的特征,因为深度估计需要更精细的区分。同时引入容忍度α,仅当两个特征之间的余弦相似度低于α时才计算损失,允许深度模型保持其特有的深度感知能力。

因此提出的特征对齐损失不仅提高了深度估计性能,还使编码器在语义分割任务上表现出色,显示出作为多任务编码器的潜力。

3 Experiment

3-1 Zero-Shot Relative Depth Estimation

在这里插入图片描述

3-2 Fine-tuned to Metric Depth Estimation

在这里插入图片描述
在这里插入图片描述

3-3 Fine-tuned to Semantic Segmentation

在这里插入图片描述

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

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

相关文章

揭秘最酷的Matplotlib 风格库!

相信大家对Matplotlib多少有些了解,对于数据研究,最终的研究结果都尽可能利用可视化呈现,使其更加直观通俗易懂。而Matplotlib作为python家族中最为著名的绘图工具,其风格实在是有些无聊,有时会让人觉得科研工作者在可…

React中的JSX应该怎么用

什么是JSX JSX Javascript XML,JSX是一个 JavaScript 的语法扩展。 JSX可以很好地描述 UI 应该呈现出它应有交互的本质形式并且其完全可以和JavaScript融合在一起使用。而且具有 JavaScript 的全部功能。JSX 可以生成 React “元素”。 JSX代码示例: …

MicroBlaze IP核中Local Memory Bus (LMB)接口描述

LMB(Local Memory Bus)是一种同步总线,主要用于访问FPGA上的块RAM(Block RAM,BRAM)。LMB使用最少的控制信号和一个简单的协议,以保证块RAM能在一个时钟周期内被存取。所有的LMB信号都是高电平有…

【服务器03】之【Navicat完整版破解】

首先清掉电脑所有Navicat组件 虽然被卸载掉了但是没有彻底清理掉Navicat组件 在原装盘里找到Navicat清楚碎片 清空之后开始下载 navicat16 https://www.alipan.com/s/GTvP93mn3sU 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需…

AI Workflow的敏捷开发:持续创新与优化的艺术

在人工智能的浪潮中,AI Workflow作为大模型落地的关键实践,正逐渐成为技术领域的新宠。然而,随着技术的发展,我们面临着一系列挑战,如何有效地应对这些挑战,实现AI Workflow的敏捷开发,成为了一…

fyne的VBox布局02

VBox布局02 最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。box布局将所有元素排列在单行或单列中,并带有可选的空格以帮助对齐。 一步一步实现一个如下界面布局,这个界面可以使用VBox布局来实现。 这次添加了2个复…

【C语言】自定义类型

目录 一、结构体: 1、结构体的声明: 2、结构体的自引用: 3、结构体变量的定义和初始化: 4、结构体内存对齐: 5、结构体传参: 6、位段: 二、枚举类型: 三、联合体&#xff1a…

【设计模式深度剖析】【10】【行为型】【状态模式】

👈️上一篇:访问者模式 | 下一篇:解释器模式👉️ 设计模式-专栏👈️ 文章目录 状态模式定义英文定义直译如何理解呢? 状态模式的角色Context(环境类)State(抽象状态类)Concret…

Java | Leetcode Java题解之第169题多数元素

题目: 题解: class Solution {public int majorityElement(int[] nums) {int count 0;Integer candidate null;for (int num : nums) {if (count 0) {candidate num;}count (num candidate) ? 1 : -1;}return candidate;} }

Netdata介绍

前言 Netdata是一款用于Linux系统的实时性能监测工具,它提供了web界面的视角,使得用户可以通过可视化的方式清晰地了解系统和应用程序的实时状态。 Netdata具有以下几个显著特点: 实时性:Netdata能够实时监测系统和应用程序的性…

Android-Android Studio-FAQ

1 需求 2 接口 3 Android Studio xml布局代码补全功能失效问题 最终解决方案就是尝试修改compileSdk 为不同SDK版本来解决问题,将原本34修改为32测试会发现xml代码补全功能有效了! 参考资料 Android Studio xml布局代码补全功能失效问题_android studi…

电压调整+无功优化!考虑泄流效应的风电场并网点电压系统侧增援调控方法程序代码!

前言 在发电侧能源结构转型的背景下,中国在可再生能源发电技术上的快速发展使得电网中风电并网比例不断增大。风能资源的有效利用缓解了电力紧张,但由于风速的不确定性,风电场引起的公共耦合点(point of common coupling&#xf…

vue3项目使用Electron打包成exe的方法与打包报错解决

将vue3项目打包成exe文件方法 一、安装 1.安装electron npm install electron --save-devnpm install electron-builder --save-dev 2.在vue项目根目录新建文件index.js // index.js// Modules to control application life and create native browser window const { app…

Map-JAVA面试常问

1.HashMap底层实现 底层实现在jdk1.7和jdk1.8是不一样的 jdk1.7采用数组加链表的方式实现 jdk1.8采用数组加链表或者红黑树实现 HashMap中每个元素称之为一个哈希桶(bucket),哈希桶包含的内容有以下4项 hash值(哈希函数计算出来的值) Key value next(…

基于SSM+Jsp的水果销售管理网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

Linux 五种IO模型

注:还有一种信号驱动IO,使用较少暂不讨论; 一,区分阻塞、非阻塞和同步、异步 看了很多文章对这两组概念解释和对比,说的太复杂了,其实没必要,两句话就能说清楚。 首先,对于读数据rec…

探索监管沙箱在金融科技行业中的应用

一、引言 随着金融科技的快速发展,传统金融机构与科技企业之间的竞争也日趋激烈。为了平衡金融科技创新与风险防控,各国监管机构纷纷引入监管沙箱(Regulatory Sandbox)机制。监管沙箱作为一个受监督的安全测试区,允许金…

Linux字节对齐小程序

#include <stdio.h> // 默认对齐 struct DefaultAligned { char c; int i; }; // 按1字节对齐 #pragma pack(push, 1) struct OneByteAligned { char c; int i; }; #pragma pack(pop) // 恢复之前的对齐设置 int mai…

Python日志管理利器:如何高效管理平台日志

一、为什么需要日志管理&#xff1f; 日志是应用程序的重要组成部分&#xff0c;它记录了应用程序的运行状态、错误信息以及用户交互等关键信息。良好的日志管理可以帮助开发人员及时发现和解决问题&#xff0c;提高应用程序的稳定性和可靠性。 项目在本地开发调试时&#xf…

基于Sringboot+Vue的校园招聘系统【原创】【开源】

浏览器&#xff1a;Chrome或360浏览器 系统环境配置 前置条件&#xff1a;系统已经安装了Mysql5.7、Mysql工具&#xff08;Navicat&#xff09;、JDK1.8、Maven3.6.1、vue3.0以下开发环境、 Intellij Idea、 Chrome或360浏览器 1、导入数据库 2、编译前端代码vue 编译&…