深夜破防!《男生女生一起愁愁愁》电视剧HD在线观看:这不就是正在焦虑的我们吗?

核心内容摘要

当“他”遇上“她”:解锁情感宇宙的奇妙代码
18岁以下禁入网站访问限制与安全警示,保护未成年人健康上网

柚子猫糖心:当治愈香气邂逅喵星人的软萌,点亮你的生活每一刻

原文towardsdatascience.com/monocular-depth-estimation-with-depth-anything-v

b6775abc9f?sourcecollection_archive---------4-----------------------#

神经网络是如何从二维图像中学习估计深度的https://medium.com/neural.avb?sourcepost_page---byline--54b6775abc9f--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--54b6775abc9f-------------------------------- Avishek Biswas·发表于 Towards Data Science ·阅读时间10 分钟·2024 年 7 月 24 日–什么是单目深度估计https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/53c47ae75f37e0bef19e2c77b

pngDepth Anything V2 算法作者插图单目深度估计MDE是训练神经网络从单幅图像中提取深度信息的任务。

这是一个激动人心且充满挑战的机器学习与计算机视觉领域因为预测深度图要求神经网络仅凭二维图像来形成三维的理解。

在本文中我们将讨论一个新的模型叫做Depth Anything V2及其前身Depth Anything V1。

Depth Anything V2 在深度估计领域超越了几乎所有其他模型在处理复杂图像时展现了令人印象深刻的结果。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/26476d8feb1529cf50ab27a0b30729f

pngDepth Anything V2 演示来源作者从 Depth Anything V2 演示页面录制的屏幕录像本文基于我制作的同主题视频。

这里是视频链接适合喜欢视觉媒介的学习者。

对于喜欢阅读的朋友继续往下看为什么我们要关心 MDE 模型良好的 MDE 模型有许多实际应用如帮助机器人导航和避障、无人机以及自动驾驶汽车。

它们还可以用于视频和图像编辑、背景替换、物体移除和创建三维效果。

此外它们在增强现实AR和虚拟现实VR头戴设备中也非常有用可以为用户创造交互式三维空间。

进行单目深度估计MDE有两种主要方法本文仅介绍其中一种训练 MDE 模型已经出现了两种主要的方法一种是判别方法网络试图将深度作为监督学习目标进行预测另一种是生成方法如条件扩散其中深度预测是一个迭代的图像生成任务。

Depth Anything 属于第一类判别方法今天我们将讨论的是这一部分。

欢迎来到 Neural Breakdown让我们深入探讨深度估计传统数据集与 MiDAS 论文为了全面理解 Depth Anything让我们首先回顾一下 2019 年的 MiDAS 论文它为 Depth Anything 算法提供了前身。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c35232fe74fc443615630d9de12c652e.png来源MIDAS论文的截图许可证免费MiDAS 通过结合不同的数据集来训练 MDE 模型这些数据集包含标注的深度信息。

例如KITTI数据集用于自动驾驶提供户外图像而NYU-Depth V2数据集则提供室内场景。

了解这些数据集是如何收集的非常重要因为像 Depth Anything 和 Depth Anything V2 这样的新模型解决了数据收集过程中固有的多个问题。

如何收集现实世界中的深度数据集这些数据集通常是通过立体摄像头收集的两个或更多的摄像头以固定距离放置从略微不同的视角同时拍摄图像从而实现深度信息的提取。

NYU-Depth V2 数据集使用 RGB-D 摄像头它不仅捕捉像素颜色还记录深度值。

一些数据集利用激光雷达LiDAR通过投射激光束来捕捉场景的三维信息。

然而这些方法存在一些问题。

由于获取这些数据集的高运营成本标注数据的数量有限。

此外标注可能会有噪音且分辨率较低。

立体摄像头在各种光照条件下表现不佳无法可靠地识别透明或高度反射的表面。

激光雷达昂贵并且激光雷达与 RGB-D 摄像头的范围有限生成的深度图分辨率低且稀疏。

我们能否使用未标注图像来学习深度估计利用未标注的图像来训练深度估计模型将是非常有益的因为网上有大量这样的图像。

2023 年原始 Depth Anything 论文提出的主要创新是将这些未标注数据集整合进训练流程。

接下来的部分我们将探讨这一点是如何实现的。

Depth Anything 架构原始的Depth Anything (V

模型发布于 2023 年采用了三步训练过程。

在深入每个部分之前让我们先对该算法进行一个高层次的概览。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b59c38e97f10cfa343bac2b3e428fc

pngDepth Anything V1 算法作者插图步骤 1教师模型训练首先名为 TEACHER 的神经网络模型被训练用于监督式深度估计使用了五个不同的公开数据集。

从深度到视差空间的转换TEACHER 模型初始化时使用了预训练的 Dino-V2 编码器然后在合并后的标注数据集上进行训练。

训练多个数据集时的一个主要挑战是绝对深度的差异。

为了解决这个问题深度值被转化为视差空间**d 1 / t**并在每个深度图中进行归一化处理——离最近像素为 1离最远像素为 0。

通过这种方式所有数据集共享相同的输出空间从而使得模型可以预测视差。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/feb773be7a55da3e9a247bc

png不同的深度估计数据集提供的深度值具有不同的尺度。

我们需要将它们对齐以使输出空间相同。

视差可以让我们将所有深度值归一化到 0 和 1 之间作者插图这两个损失函数用于训练这些模型尺度位移不变损失和梯度匹配损失这两个损失函数也在 2019 年的 MiDAS 论文中得到了应用。

尺度位移不变损失使用简单的均方误差损失来比较预测图像与真实图像之间的差异时存在一个问题。

假设图像中三个像素的真实深度值分别是

1、

5 和

1而我们的网络预测的是

0.

9、

6 和

3。

尽管预测值不完全相同但预测深度与真实深度之间的关系是相似的只有一个乘法和加法因子的差异。

我们不希望这种尺度和位移影响我们的损失函数——在应用均方误差损失之前我们需要对两个图像进行对齐。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/84703dc474e959b2a4de1549e58249df.png尺度位移不变损失作者插图MiDaS 论文建议将真实深度和预测深度进行归一化以确保零平移和单位尺度。

计算中位数和标准差然后相应地调整深度图的尺度和位移。

对齐后应用均方误差损失。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/8a6dd80e0cf700348801e9c879cb35a

pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/84a74de5ee9b690b8f57509e828181af.pngSSI 损失来源MiDAS 论文许可证免费

梯度匹配损失https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5c5a5575969a4594c1abe8a4a352f

png如果没有梯度匹配损失深度图可能会变得过于模糊失去锐利感作者插图仅使用 SSI 损失可能会导致平滑的深度图无法捕捉相邻像素之间的明显区别。

梯度匹配损失通过将预测深度图的梯度与真实深度图的梯度对齐帮助保留这些细节。

首先我们计算预测的和地面真实深度图在 x 轴和 y 轴上的梯度然后在梯度层面应用损失。

MiDaS 还使用了一个具有四个尺度级别的多尺度梯度匹配损失。

预测和地面真实深度图被下采样四次并在每个分辨率上应用损失。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b0ff56b585ba50ea0d90f590e51805e

png梯度匹配损失。

该损失应用于多个下采样的深度图未显示。

(插图作者提供)最终损失是尺度不变损失和多尺度梯度匹配损失的加权和。

虽然 SSI 损失鼓励模型学习一般的相对深度关系但梯度匹配损失有助于保持场景中的锐利边缘和精细信息。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e2e92b97e1ef6e0478d89fd6f1aa09c

png在 MIDAS 和 Depth Anything V1 中训练深度估计模型所使用的损失函数插图作者提供步骤 2 — 伪标签无标签数据集使用我们训练好的教师模型我们现在可以为数百万张无标签图像添加注释创建一个庞大的伪深度标签数据集。

这些标签被称为伪标签因为它们是 AI 生成的可能并不代表实际的地面真实深度。

我们现在拥有大量伪标签图像来训练一个新的网络。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/caede365e9a8d6d752dbe1cad7b4c9db.png伪标签图像请注意这张屏幕截图实际上来自 Depth Anything V2 论文而非 V1来源Depth Anything V2 Paper许可证免费步骤 3 — 训练学生网络https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b59c38e97f10cfa343bac2b3e428fc

png回顾 Depth Anything V1 算法。

我们现在处于步骤 3。

插图由作者制作我们将在标签数据集和伪标签数据集的结合上训练一个新的神经网络学生网络。

**然而仅仅在教师网络提供的注释上训练网络并不会使模型超越基础教师模型的能力。

**为了使学生网络更强大采用了两种策略使用图像增强进行重度扰动并引入辅助语义保持损失。

重度扰动使用的一个有趣的扰动是 Cut Mix 操作。

它涉及通过二进制掩膜将一对随机的无标签图像结合起来用图像 B 替换图像 A 中的一个矩形区域。

最终的损失是来自两个地面真实深度图的两部分的合成 SSI 和梯度匹配损失。

这些空间失真还与颜色失真结合帮助学生网络应对开放世界图像的多样性。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d248f0a505eebf438fa29e5c540cde

pngCut Mix 操作插图作者提供辅助语义保持损失网络还通过一个辅助任务进行训练称为语义辅助感知。

使用像 Dino-V2 这样的强大预训练计算机视觉模型它已经通过自监督方式在数百万张图像上进行了训练。

给定一张图像我们的目标是减少由新学生模型生成的嵌入与预训练 Dino-V2 编码器之间的余弦距离。

这使得我们的学生模型能够捕捉到更大、更通用的 Dino-V2 模型的一些语义感知能力并利用这些能力来预测深度图。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3240ebbb1b601d8cf1aec0cd5932a

png语义辅助感知作者插图通过结合空间畸变、语义辅助感知以及标注和未标注数据集的力量学生网络能够更好地泛化并在深度估计上超过原始的教师网络以下是来自 Depth Anything V1 模型的一些令人难以置信的结果Depth Anything V2尽管 Depth Anything V1 的结果令人印象深刻但它在处理透明物体和捕捉细粒度细节方面仍存在困难。

Depth Anything V2 的作者认为模型性能的最大瓶颈不是架构本身而是数据的质量。

大多数使用传感器捕获的标注数据集可能会有噪声忽略细粒度细节生成低分辨率的深度图并且在光照条件以及反射/透明物体的处理上存在困难。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/94bb158d8593a17797ed2214b00abd

png真实世界传感器数据集的问题作者插图Depth Anything V2 舍弃了来自真实世界传感器如立体相机、激光雷达和 RGB-D 相机的标注数据集而仅使用合成数据集。

合成数据集是通过图形引擎生成的而非通过设备捕获的。

例如使用 Unity 游戏引擎创建渲染图像和深度图的虚拟 KITTI 数据集用于自动驾驶。

还有一些室内数据集如 IRS 和 Hyper-sim。

Depth Anything V2 使用了五个包含接近 595K 张逼真图像的合成数据集。

合成数据集 vs 真实世界传感器数据集合成图像确实有其优缺点。

它们非常准确具有高分辨率输出能够捕捉最细微的细节并且透明和反射表面的深度可以轻松获得。

合成数据集直接获取所有所需的 3D 信息因为图形引擎本身创建了场景。

从缺点方面来看这些图像可能无法完全捕捉我们在现实场景中会遇到的图像。

这些数据集的场景覆盖面也不够多样且仅为现实世界图像的一个较小子集。

Depth Anything 2 结合了合成图像和数百万未标注图像的优势训练出了一个 MDE 模型其性能超越了我们迄今为止见过的大多数模型。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/217dc74172e0dee404d98a287ddc

png合成或计算机生成数据集的优缺点图示作者提供和 V1 类似V2 中的教师模型首先在标注数据集上进行训练。

然而在 V2 中它仅在合成数据集上进行训练。

在第二步教师模型为所有未标注图像分配伪深度标签。

最后在第三步学生模型仅在伪标注图像上进行训练——不使用任何真实标注数据集也不使用合成数据集。

在这一阶段由于之前提到的分布偏移合成数据集没有被使用。

学生网络在由教师模型标注的真实世界图像上进行训练。

就像 V1 中一样辅助的语义保留损失与尺度-平移不变性损失和梯度匹配损失一同使用。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/53c47ae75f37e0bef19e2c77b

pngDepth Anything V2 架构图示作者提供视频链接形象地解释这些概念这里有一个视频逐步解释了本视频中讨论的所有概念。

你也可以以视频形式学习本文中涉及的主题Depth Anything V1 vs Depth Anything V2原版的 Depth Anything 强调了在 MDE 训练流程中使用未标注图像的重要性。

它引入了知识蒸馏流程包括教师模型训练、伪标签化未标注图像然后在标注和未标注图像的结合上训练学生网络。

强空间和颜色扭曲的使用以及语义辅助感知损失有助于创建更通用和鲁棒的嵌入。

这导致了为复杂场景生成高效且高质量的深度图。

然而Depth Anything V1 仍然在处理反射表面和细节时存在问题因为来自现实传感器的深度标签噪声大且分辨率低。

Depth Anything V2 通过忽略真实世界传感器数据集专门使用通过图形引擎生成的合成图像来训练教师网络从而提升了性能。

然后教师网络为数百万未标注图像进行标注学生网络仅在这些伪标注数据集上进行训练并使用真实世界图像。

通过这些技术Depth Anything V2 现在能够预测精细级别的深度图并更有效地处理透明和反射表面。

相关链接MiDAS:arxiv.org/abs/

1

01341Depth Anything:depth-anything.github.io/Depth Anything V2:depth-anything-v

github.io/KITTI 数据集:www.cvlibs.net/datasets/kitti/NYU V2:cs.nyu.edu/~fergus/datasets/nyu_depth_v

html虚拟 KITTI:datasetninja.com/virtual-kittiYoutube 视频:youtu.be/sz30TDttIBA

91网站官方版-91网站官方版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123