CL-MVSNet论文精读

news2025/1/17 0:17:26

本文是对CL-MVSNet: Unsupervised Multi-View Stereo with Dual-Level Contrastive Learning Kaiqiang Xiong, Rui Peng, Zhe Zhang, Tianxing Feng, Jianbo Jiao, Feng Gao, Ronggang Wang的阅读记录
Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), 2023, pp. 3769-3780

原文链接https://openaccess.thecvf.com/content/ICCV2023/html/Xiong_CL-MVSNet_Unsupervised_Multi-View_Stereo_with_Dual-Level_Contrastive_Learning_ICCV_2023_paper.html

发展背景

有监督MVS方法:
严重依赖于获取昂贵的大规模地面真实三维训练数据

无监督MVS方法:

  • Unsop MVSNet:第一个端到端无监督MVS框架
  • RC MVSNet:采用了渲染一致性网络来解决由视图相关的光度效应和遮挡引起的模糊性,但是可能存在无法区分的区域遭受显著的性能退化
  • CL-MVSNet:将图像层次和场景层次的对比学习集成到无监督的MVS框架中

多阶段自监督方法:
旨在通过过滤和处理推断的深度图来获得可靠的伪标签,用于监督后续阶段的模型训练。

MVS以前的方法存在的限制:
o 无法区分的区域
o 依赖于视图的效果

过去这些方法不能以端到端的方式进行训练,而且需要大量时间

文提出了一种新的双层对比学习方法,称为CL-MVSNet,模型将两个对比分支集成到无监督MVS框架中,以构建额外的监督信号。解决了传统方法存在的问题,主要通过以下:

  • 图像级对比分支-》以引导模型获得更多的上下文感知,从而在无法区分的区域中实现更完整的深度估计。
  • 场景级对比分支-》来提高表示能力,提高对视图相关效果的鲁棒性。
  • L0.5光度一致性损失,加入惩罚-》鼓励模型更多地关注准确的点

对比学习

硬阳性样本已被证实有利于促进对比学习
硬阳性样本:所谓的硬阳性样本,就是那些被模型错误地预测为负样本,但实际上应该是正样本的样本。
像素和对象级别的监督提供了一种直接定义阳性和阴性样本的方法
提出利用双层次对比学习策略来提高无监督MVS
图像级对比分支
场景级对比分支

L0.5光度一致性损失

在深度估计之后,具有不期望的深度预测的大多数点【普通点和坏点】将在深度融合之前被过滤掉
为什么不用L1或者L2 的原因-》L1(平等对待所有点)和L2(减少异常值,即坏点)这两个规范不能直接关注精确的点。

CL MVSNet的框架
在这里插入图片描述
它的框架结构如上图所示:

  • 常规分支:
    使用CasMVSNet 作为基础网络,根据光度一致性和几何一致性选择源视图,构建成本体积,进行正则化和深度回归,得到常规样本的深度估计和置信度掩码。
  • 图像级对比分支:
    使用Bernoulli分布的二值掩码对源视图进行遮挡,模拟局部光度一致性失效的情况,得到图像级对比样本,然后用相同的网络结构得到图像级对比样本的深度估计,最后用对比一致性损失来拉近常规样本和图像级对比样本的深度估计。
  • 场景级对比分支:
    随机选择源视图,构成场景级对比样本,然后用相同的网络结构得到场景级对比样本的深度估计,最后用对比一致性损失来拉近常规样本和场景级对比样本的深度估计。
  • L0.5光度一致性损失:
    在常规分支上,使用L0.5范数来计算重建图像和参考图像之间的光度一致性损失,这样可以使模型更加关注准确点,提高重建的精度。提出的L0.5光度一致性在重建图像和规则分支上的输入参考图像之间得到了加强,以实现更准确的重建。

骨干网络

CL-MVSNet的骨干网络是基于CasMVSNet的。在推理阶段,只使用骨干网络来获得深度预测。这个网络结构被集成到了一个无监督的多视图立体(MVS)框架中,用于构建监督信号。此外,还引入了L0.5光度一致性损失,以鼓励模型更多地关注准确的点。这种设计使得CL-MVSNet在处理不可区分区域和视角依赖效应的问题上具有更强的鲁棒性

采用与CasMVSNet相同的视图选择策略来构建常规样本,对于给定的1个参考图和N-1个原图从常规样本和相机参数,目标是用骨干网络估计对应的深度图,以下是具体过程:
1、特征提取(feature extraction)
构建特征体(Feature Volume):
N张图像被馈送到共享特征金字塔网络中在具有递增分辨率的三个阶段中生成2D像素级特征。在最粗糙的阶段,初始深度假设和3D特征体是根据通过可微单应性而来的特征构建的
在这里插入图片描述

2、 生成代价体(Cost Volume)
分组相关度量:将Nc个通道的N个特征体分成NG组,然后构造原始代价体C。然后,原始代价体C经历规则的3D UNet和softmax,从而产生概率量Pv。最后,通过加权和获得深度图D
在这里插入图片描述

3、使用置信掩码进行深度估计
在深度估计阶段生成了一个概率体积 Pv,用于测量深度假设的像素级置信度。然后,通过对关于深度估计的四个最近深度假设进行概率求和,可以获得概率图 Pm。通过将概率图 Pm 与某个阈值 γ 进行比较,可以生成一个二值置信度掩码 Mc,用于指示模型对于像素级深度估计的置信度。具体地,通过比较 Pm 和 γ,即 Pm > γ,可以得到 Mc

4、基本光度一致性损失
原图通过推断的深度图扭曲到重建参考图像,对重建参考图像和参考图像执行一致性
在通过逆扭曲计算重构参考图上的像素点在原图上的位置的过程中,生成二进制有效掩码Mi,指示重建图像Ii中的有效像素

然后通过公式对比出重构参考图和参考图之间的光度一致性损失
在这里插入图片描述

存在问题:无法在无法区分的区域(例如,具有低纹理或重复图案的区域)提供有效的监控信号。

为解决以上问题,本文引入了双层对比学习方法和L0.5光度一致性。

图像级对比度一致性

通过引入图像级对比分支来隐含地鼓励模型感知上下文的替代方案。

图像级别对比样本:
图像对比样本是通过对给定的常规样本{Ii} Ni=1进行人工变换来生成的。具体来说,对于一个源图像Ii,我们设置一个遮挡率α来构造一个二值像素级遮罩,模拟局部光度一致性失败的情况。然后,遮罩Mo用于遮挡图像Ii,如图4所示。简单地处理所有的源图像,就可以得到一个图像对比样本{I1, I′ 2 , I′ 3 , . . . , I′ N }。然后,这个困难的正样本将被送入网络,得到深度估计DIC。为了保证训练的稳定性,我们采用了一个课程学习策略,逐渐增加遮挡率α,从0增加到0.1。
图像级别对比一致性损失:见原文

场景级对比一致性

样本:
对于给定的参考图像I1,将参考图像I1与同一场景随机选取的N−1图像{Ii " }Ni =2组合,即可构造场景级对比样本。随后,DSC将推断出对比样本的深度图。值得注意的是,使用场景级对比样本构建的成本体积代表的是与常规3D场景相同的3D场景。因此,网络应该从场景级对比样本中获得与常规样本相同的深度估计。
场景级对比一致性损失:见原文

L0.5光度一致性

为了清晰起见,我们将推断的深度图中的点分为三类:
精确点
普通点
坏点

L1(平等对待所有点)和L2(减少异常值,即坏点)这两个规范不能直接关注精确的点。所以本文提出L0.5(由于其梯度性质,将该范数应用于光度一致性损失可以使精确点更加准确,将普通点转化为精确点,而不必关注坏点)光度一致性

总体损失:

见原文

CL-MVSNet存在的局限:

无法对物体边缘区域进行准确的深度估计

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

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

相关文章

数据分析实战 | K-means算法——蛋白质消费特征分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 ​编辑 八、模型评价 九、模型调参与预测 一、数据及分析对象 txt文件——“protein.txt”,主要记录了25个国家的9个属性,主…

3.30每日一题(多元函数微分学)

1、判断连续:再分界点的极限值等于该点的函数值; 如何求极限值: 初步判断:分母都为二次幂开根号,所以分母为一次幂;分子为二次,一般来说整体为0; 如何说明极限为零(常用…

Git 命令详解

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 C技能系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream we…

【教3妹学编程-算法题】2923. 找到冠军 I

3妹:2哥2哥,你看到新闻了吗?襄阳健桥医院院长 公然“贩卖出生证明”, 真是太胆大包天了吧。 2哥 : 我也看到新闻了,7人被采取刑事强制措施。 就应该好好查查他们, 一查到底! 3妹:真的…

华为ensp:为vlan配置ip

配置对应vlan的ip vlan1 interface Vlanif 1 进入vlan1 ip address 192.168.1.254 24配置IP为192.168.1.254 子网掩码为24位 这样就配置上ip了 vlan2 interface Vlanif 2 ip address 192.168.2.254 24 vlan3 interface Vlanif 3 ip address 192.168.3.254 24 查看结果 …

【C++入门】构造函数析构函数

目录 前言 1. 类的默认成员函数 2. 构造函数 2.1 什么是构造函数 2.2 构造函数的特性 3. 析构函数 3.1 什么是析构函数 3.2 析构函数的特性 前言 前边我们已经了解了类和对像的基本概念,今天我们将继续深入了解类。类有6个默认成员函数,即使类中什么都…

赛氪助力全国大学生数学竞赛山东赛区圆满举办

近日,全国大学生数学竞赛山东赛区比赛有序进行,赛氪已连续6年助力本项赛事蓬勃发展。在中国高等教育学会高校竞赛评估与管理体系研究专家工作组发布的《2022全国普通高校大学生竞赛分析报告》中,本赛事荣登观察目录。 全国大学生数学竞赛旨在…

Leetcode2834. 找出美丽数组的最小和

Every day a Leetcode 题目来源:2834. 找出美丽数组的最小和 解法1:贪心 从最小正整数 1 开始枚举,设当前数为 num,如果 nums 里没有 target - num,就说明可以添加 num,依次填满直到有 n 个数即可。 用…

2023年【危险化学品经营单位主要负责人】免费试题及危险化学品经营单位主要负责人证考试

题库来源:安全生产模拟考试一点通公众号小程序 2023年危险化学品经营单位主要负责人免费试题为正在备考危险化学品经营单位主要负责人操作证的学员准备的理论考试专题,每个月更新的危险化学品经营单位主要负责人证考试祝您顺利通过危险化学品经营单位主…

【2024提前批/秋招笔试汇总2】——大疆-嵌入式软件-2023.08.06

一、 单选题(40分) 1. 以下关于GPU的特点描述不准确的是: A.GPU无法使用共享内存结构,提高通信速度 B.GPU的并行数据处理可以大幅度提高运算能力 C.GPU使用高速全局内存可以进一步提升运算速度 D.GPU的计算能力比CPU强 2.下列关…

【PyQt】(自制类)处理鼠标点击逻辑

写了个自认为还算不错的类,用于简化mousePressEvent、mouseMoveEvent和mouseReleaseEvent中的鼠标信息。 功能有以下几点: 鼠标当前状态,包括鼠标左/中/右键和单击/双击/抬起鼠标防抖(仅超出一定程度时才判断鼠标发生了移动),灵…

Java面向对象(进阶)-- 面向对象特征之三:多态性

文章目录 一、多态的形式和体现(1)为什么需要多态性(polymorphism)?(2) 对象的多态性 二、 多态的理解(1)如何理解多态性(2)Java中多态性的体现(3&#xff09…

SpringMvc 常见面试题

1、SpringMvc概述 1.1、什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦&am…

CentOs7 NAT模式连接网络

1.配置动态网络 1.1 检查主机网卡配置 检查主机的网络设置 进入控制面板,找到网络共享中心 查看适配器是否都已经开启 1.2 设置虚拟机的网络配置 打开虚拟机网络配置设置,对网卡VMnet8 进行设置 记住网关 全部选择应用,确定 1.3 设置…

操作系统(一)基础知识及操作系统启动

文章目录 前言前置基础知识计算机组成CPU磁盘内核中断、异常、系统调用局部性原理 启动操作系统计算机加电是如何正常执行服务的?开机自检BIOS(Basic Input/Output System)BootLoader 小结 前言 本文主要涉及操作系统的简介、硬件结构、内存…

从Hadoop到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系 1、Hadoop时代的落幕2、Databricks和Snowflake做对了什么3、Hadoop与对象存储(OSD)4、Databricks与Snowflake为什么选择对象存储5、对象存储面临的挑战 1、Hadoop时代的落幕 十几年前,Hadoop是解决大规模数据分析的“白…

C++17中std::optional的使用

模版类std::optional管理一个可选的(optional)存储值(contained value)&#xff0c;即可能存在也可能不存在的值。std::optional的一个常见用例是存储可能失败的函数的返回值。与其它方法相反(例如std::pair<T, bool>),std::optional可以很好地处理构造成本高昂的对象&am…

ETW HOOK原理探析

ETW HOOK研究 文章目录 ETW HOOK研究前言原理探究内核开启ETW日志HOOK ETW修改ETW日志上下文代理GetCpuClock函数寻找SSDT和SSDT Shadow 总结参考 前言 关于ETW是什么我就不多说了&#xff0c;可以通过微软的相关文档了解到。据网上得知这项技术最早被披露于2345的驱动中&…

Netty--ByteBuffer

2. ByteBuffer 有一普通文本文件 data.txt&#xff0c;内容为 1234567890abcd 使用 FileChannel 来读取文件内容 Slf4j public class ChannelDemo1 {public static void main(String[] args) {// FileChannel// 1. 输入输出流&#xff0c; 2. RandomAccessFile// try (F…

反转链表 --- 递归回溯算法练习三

目录 1. 分析题意 2. 分析算法原理 2.1. 递归思路&#xff1a; 1. 挖掘子问题&#xff1a; 3. 编写代码 3.1. step 1&#xff1a; 3.2. step 2&#xff1a; 3.3. step 3&#xff1a; 3.4. 递归代码&#xff1a; 1. 分析题意 力扣原题链接如下&#xff1a; 206. 反转链…