news 2026/1/12 11:15:13

Monodepth2:自监督单目深度估计的改进-k学长深度学习专栏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Monodepth2:自监督单目深度估计的改进-k学长深度学习专栏

本文来源:k学长的深度学习宝库,点击查看源码&详细教程。深度学习,从入门到进阶,你想要的,都在这里。包含学习专栏、视频课程、论文源码、实战项目、云盘资源等。


1、Monodepth v2 的背景和动机
在 Monodepth(2017)之后,研究者们证明了自监督学习可以让模型从单目图像中学习深度,而不需要昂贵的激光雷达或人工标注。作者明确解释了提出 v2 的动机,主要是针对 Monodepth v1 的局限性 做改进。核心动机包括:

  1. 解决“无相机运动”场景带来的干扰
    在 KITTI 的完整数据集中,有不少序列是采集车辆在红绿灯前停车时获取的,此时相机没有运动。如果直接用 v1 方法训练,光度一致性约束会失效,模型会被误导。 改进:Monodepth2 引入 自动遮罩(auto-masking),自动检测并忽略这些无效帧对,从而避免错误监督
  2. 提高视差学习的鲁棒性
    Monodepth v1 的重投影损失在存在遮挡或动态物体时容易出错。 改进:Monodepth2 使用 最小重投影损失(minimum reprojection loss),在多个可能的重建结果中选择误差最小的作为监督信号,避免被遮挡区域影响
  3. 增强深度预测的细节保真
    Monodepth v1 多尺度训练时,低分辨率的深度图在上采样后会丢失细节。 改进:Monodepth2 使用 全分辨率多尺度(full-resolution multi-scale) 策略,在更高分辨率上直接计算光度损失,从而保留更多几何细节
  4. 整体性能和稳定性的提升
    作者通过消融实验表明,这些新组件协同工作时(完整的 Monodepth2),性能明显优于 v1,并且在 KITTI 上超越了当时的大部分方法
    ✅ 一句话总结: Monodepth2 的动机是为了解决 Monodepth v1 在 无相机运动、动态物体、遮挡和分辨率不足 等情况下的局限性,通过 自动遮罩 + 最小重投影损失 + 全分辨率多尺度监督,提升了训练的鲁棒性和预测深度的精度。

2、Monodepth v2 的核心方法和创新点
2.1、三大核心方法
(1) 最小重投影损失(Minimum Reprojection Loss)
问题:在单目视频里,有些像素在一帧能看到,在另一帧却被遮挡。普通的重建误差会惩罚模型“看不见的地方”,导致错误。
方法:Monodepth v2 提出在计算误差时,对同一像素来自不同源视角的重建,只取最小的那个误差。
直觉:避免因为遮挡导致的“冤枉惩罚”。
比喻:小朋友考试时,老师出两道差不多的题,他只需要答对其中一道,就不会被扣分。这样即使有一道题他看不到(被遮挡),也不算错。
(2) 自动掩码(Auto-Masking Loss)
问题:如果相机停着不动,或者场景里的物体(车、人)和相机同步移动,画面几乎没变化。这时候重建误差很小,模型就会以为“随便预测都对”。
方法:Monodepth v2 引入一个“自动掩码”,检测出这种情况下的像素,把它们从训练中排除。
直觉:只学那些真的能提供深度信息的像素。

(3) 全分辨率多尺度预测(Full-Resolution Multi-Scale Prediction)
问题:老方法在低分辨率层计算损失,容易出现“纹理复制伪影”(比如地砖纹路直接当成深度)。
方法:v2 在每一个尺度预测时,都把预测结果“上采样”到原始分辨率再计算损失。这样每个层级都在真实清晰的画面上接受监督。
直觉:保证模型学到的深度边界更加锐利。
比喻:以前学生画素描时先在小图上粗略练习,结果习惯了糊涂画。现在老师要求:不管在哪个阶段,都必须在大画布上画,边缘要清晰。
2.2、创新点总结
Monodepth v2 的创新点主要体现在损失函数和训练策略上,而不是复杂的新网络结构。
最小重投影:解决了遮挡像素的冤枉惩罚。
自动掩码:避免了静态或同步移动场景下的学习错误。
全分辨率多尺度:抑制了纹理复制伪影,让预测更锐利。
👉 这让 Monodepth v2 在保持简单结构的同时,大幅提升了鲁棒性和精度。
2.3、形象化总结
你可以把 Monodepth v2 想象成:
一个学生在画立体画,老师给了三条新规矩:
看不清的地方可以不画(最小重投影),
题目和答案一模一样的题不用做(自动掩码),
任何时候都要在大画布上画清楚(全分辨率多尺度)。
结果,这个学生不但画得更稳、更准,而且细节也清晰了。

3、Monodepth v2 的主要缺陷
虽然 v2 已经比 v1 好很多,但它仍然不是“完美”的,论文讨论部分也提到了限制 :

  1. 绝对尺度拿不准(单目先天的“量纲”问题)
    和 Monodepth v1 一样,Monodepth2 只能学到相对深度,仍需要额外的尺度信息(比如相机基线长度、已知的 LiDAR 点)才能恢复绝对深度。

依赖亮度恒常/朗伯反射假设,遇到反射与高光就“翻车”

右边深度图中,绿色圈出的地方出现了明显错误:
原因是该区域有 扭曲(形变)、强反射或高饱和的颜色。
这种情况下,光度一致性假设失效:左右相机或前后帧看到的颜色/亮度差别太大,模型无法通过“像素匹配”来正确估计深度。
结果:深度估计变得不稳定或完全错误。
👉 通俗理解:像车窗玻璃、金属车身、阳光反射的区域,左右眼看到的画面根本对不上,网络就“懵了”,学不到正确的深度。

边界模糊、形状复杂、细长结构仍然难
现象:边界不清楚或几何形状复杂的物体(细杆、栅格等)容易被错判或糊掉。论文在“失败案例”里明确展示了这类问题。

深度图中圈出的两个问题:
左边:物体边界模糊,导致网络无法准确识别“哪是物体、哪是背景”,结果深度过渡不清晰。
右边:树叶或路边标志这种 形状复杂的物体,网络难以精确建模其几何细节,深度预测出现了畸形。
原因在于:自监督信号主要依赖外观重建,它对 边界清晰度和小物体几何 的建模能力有限。
👉 通俗理解:
模糊边界像是拍照时“虚焦”,网络分不清哪里该断开。
形状复杂的树枝、树叶,对网络来说就像“乱麻”,重建监督不足以让它学会复杂几何。

仍依赖于相机标定和固定基线
Monodepth2 的自监督训练依赖于双目数据(或单目视频)以及精确的相机内参。
跨域问题严重:如果测试集的相机焦距、基线、分辨率与训练集不同,预测质量会明显下降,需要额外微调。

4、后续的哪些模型是如何基于此进行改进
🔹 DPT (Dense Prediction Transformer)
论文:Ranftl et al., “Vision Transformers for Dense Prediction”, ICCV 2021.
核心思想:把 Vision Transformer (ViT) 引入到 像素级预测任务(深度估计、语义分割、超分辨率)。
特点:
用 Transformer 代替 CNN 来捕捉 全局上下文,克服 CNN 只关注局部感受野的问题。
Backbone 使用 ViT / DeiT,加上专门设计的 token-to-pixel 解码头。
训练时混合了多个数据集(室内 NYU、室外 KITTI、MegaDepth 等),获得强泛化能力。
效果:DPT 在 单目深度估计 (Monocular Depth Estimation) 上超过了之前的 CNN 方法(包括 Monodepth2),尤其在跨数据集泛化上表现很好。
🔹 MiDaS
论文:Ranftl et al., “Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer”, TPAMI 2022.
核心思想:利用 多数据集训练(KITTI、NYU、ScanNet、MegaDepth 等),得到一个“泛用深度模型”。
特点:
不依赖严格的几何监督,而是用不同来源的数据(相对深度、稠密深度、稀疏深度)混合训练。
模型在 零样本 (zero-shot) 场景下泛化极强,可以在从未见过的数据集上预测出合理的深度。
效果:成为工业界和研究界 通用单目深度估计模型,常被用作预训练 backbone。
🔹 AdaBins
论文:Bhat et al., “AdaBins: Depth Estimation using Adaptive Bins”, CVPR 2021.
核心思想:把深度预测从 回归问题 → 分类问题。
做法:
把深度范围切分成多个 自适应区间 (adaptive bins)。
模型先预测每个 bin 的边界,再对像素做 softmax 分类,从而得到深度。
优势:解决了直接回归深度时容易出现数值不稳定的问题,尤其是远处的深度预测更准确。
🔹 PackNet-SfM
论文:Guizilini et al., “3D Packing for Self-Supervised Monocular Depth Estimation”, CVPR 2020.
核心思想:改进网络结构,使其能更好保留分辨率和几何信息。
特点:
设计了 packing-unpacking 卷积层,在下采样时保留更多几何信息。
同时学习 深度 + 相机位姿(类似 SfMLearner)。
效果:在 KITTI 上显著超过 Monodepth2,尤其在精细结构(边缘、物体细节)上更好。
🔹 ManyDepth
论文:Watson et al., “The Temporal Opportunist: Self-Supervised Multi-Frame Monocular Depth”, CVPR 2021.
核心思想:利用 多帧(视频)上下文 来提升单目深度估计的稳定性。
特点:
在训练和推理时同时使用 多帧图像,借助时序一致性。
提出 Depth Hints 技术,用稀疏深度或几何先验辅助训练。
效果:在 KITTI 等视频场景中显著优于单帧方法(Monodepth2)。

本文来源:k学长的深度学习宝库,点击查看源码&详细教程。深度学习,从入门到进阶,你想要的,都在这里。包含学习专栏、视频课程、论文源码、实战项目、云盘资源等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/24 18:50:48

购买服务器,选择按流量计费的含义,优缺点分析~

在阿里云、腾讯云等平台购买云服务器时, 带宽计费方式通常有两个选项: 按固定带宽 或 按使用流量计费。 很多人被“按流量计费”吸引—— “带宽可任选高达1-200Mbps,用多少付多少”,听起来很灵活。 但背后的风险,你真…

作者头像 李华
网站建设 2025/12/24 18:48:34

[Linux外设驱动详解]PWM Backlight 驱动详解

PWM Backlight 驱动详解 1. 概述 pwm_bl.c 是 Linux 内核中基于 PWM 的背光控制驱动程序。该驱动通过 PWM(脉冲宽度调制)信号来控制 LCD 屏幕的背光亮度,是嵌入式系统中常用的背光控制方案。 文件位置: linux-4.19.125/drivers/video/backlight/pwm_bl.c 主要功能: 通过…

作者头像 李华
网站建设 2025/12/24 18:46:54

GPT 系列学习总结(1-3)

GPT(Generative Pre-Trained Transformer): GPT 系列是 OpenAI 的一系列预训练模型,GPT 的目标是通过 Transformer,使用预训练技术得到通用的语言模型(目前已经公布论文的有 GPT-1、GPT-2、GPT-3) 核心架构:仅解码器(…

作者头像 李华
网站建设 2025/12/24 18:45:20

当测试遇到产品经理:用测试思维评审需求文档的核心方法论

一、需求评审的测试思维转型 传统认知中,测试是开发流程的末端环节。但现代敏捷实践要求测试人员前置介入需求评审,通过四大核心思维重构评审逻辑: 可测性思维:立即识别模糊表述(如"快速响应""用户体验…

作者头像 李华
网站建设 2026/1/4 18:01:01

我发现LLM解析中医脉象数据慢性病管理效率提升30%

📝 博客主页:Jax的CSDN主页 目录当AI开始读我的病历:一位医疗从业者的困惑与狂想 一、从"AI不会看X光"到"AI比我还懂患者" 二、药物研发的"魔法时刻":当AlphaFold遇上咖啡因 三、当AI开始"揣测…

作者头像 李华