CL-MVSNet论文精读

本文是对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.mzph.cn/news/138768.shtml

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

相关文章

基于JavaWeb+SpringBoot+微信小程序的酒店商品配送平台系统的设计和实现

基于JavaWebSpringBoot微信小程序的酒店商品配送平台系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 本章内容概括了基于微信小程序的酒店商品配送平台的可行性分析、系统功…

MySQL中UUID主键的优化

UUID(Universally Unique IDentifier 通用唯一标识符),是一种常用的唯一标识符,在MySQL中,可以利用函数uuid()来生产UUID。因为UUID可以唯一标识记录,因此有些场景可能会用来作为表的主键,但直接…

ObjectArx动态加载及卸载自定义菜单

上节中我们介绍了如何制作自定义菜单即cuix文件:给CAD中添加自定义菜单CUIX-CSDN博客https://blog.csdn.net/qianlixiaomage/article/details/134349794在此基础上,我们开发时通常需要在ObjectArx程序中进行动态的添加或者删除cuix菜单。 创建ObjectArx…

浅析移动端车牌识别技术的工作原理及其过程

随着社会经济的发展与汽车的日益普及带来巨大的城市交通压力,在此背景下,智能交通系统成为解决这一问题的关键。而在提出发展无线智能交通系统后,作为智能交通的核心,车牌识别系统需要开始面对车牌识别移动化的现实需求。基于实现车牌识别移动化这一目标,一种基于Android移动终…

适用于4D毫米波雷达的目标矩形框聚类

目录 一、前言 二、点云聚类分割 三、基于方位搜索L型拟合 四、评价准则之面积最小化 五、评价准则之贴合最大化 六、评价准则之方差最小化 一、前言 对于多线束雷达可以获取目标物体更全面的面貌,在道路中前向或角雷达可能无法获取目标车矩形框但可以扫到两边…

物联网AI MicroPython学习之语法uzlib解压缩

学物联网,来万物简单IoT物联网!! uzlib 介绍 uzlib 模块解压缩用DEFLATE算法压缩的二进制数据 (通常在zlib库和gzip存档器中使用),压缩功能尚未实现。 注意:解压缩前,应检查模块内可…

力扣字符串--总结篇

前言 字符串学了三天,七道题。初窥kmp,已经感受到算法的博大精深了。 内容 对字符串的操作可以归结为以下几类: 字符串的比较、连接操作(不同编程语言实现方式有所不同); 涉及子串的操作,比…

Unity Mirror学习(一) SyncVars特性使用

官网中所说的网络对象,指的是挂了 NetworkIdentity组件的对象 官网中所说的玩家对象,指的是NetworkManager脚本上的PlayerPrefab预制体 这个概念对阅读官网文档很重要,我刚开始并不理解,走了歪路 SyncVars(同步变量&a…

【C++笔记】优先级队列priority_queue的模拟实现

【C笔记】优先级队列priority_queue的模拟实现 一、优先级队列的介绍与使用方式1.1、优先级队列介绍1.2、优先级队列的常见使用 二、优先级队列的模拟实现1.0、仿函数的介绍1.1、构造函数1.2、优先级队列的插入push1.3、优先级队列的删除(删除堆顶元素)1.4、获取堆顶元素1.5、判…

自然语言处理(一):RNN

「循环神经网络」(Recurrent Neural Network,RNN)是一个非常经典的面向序列的模型,可以对自然语言句子或是其他时序信号进行建模。进一步讲,它只有一个物理RNN单元,但是这个RNN单元可以按照时间步骤进行展开…

classification_report分类报告的含义

classification_report分类报告 基础知识混淆矩阵(Confusion Matrix)TP、TN、FP、FN精度(Precision)准确率(Accuracy)召回率(Recall)F1分数(F1-score) classi…

管理员模式运行cmd或则bat文件的时候,出现路径错误的问题

最近在使用Comfyui, 不清楚啥原因,有时候Git无法访问,有时候文件夹无法访问的。就想把它的运行bat命令直接用 管理员模式运行,给到最高的权限,试试。但就这么简单的问题,搜了半天,都是一大堆不靠谱的教程&a…

大数据毕业设计选题推荐-污水处理大数据平台-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

selenium+python做web端自动化测试框架实战

最近受到万点暴击,由于公司业务出现问题,工作任务没那么繁重,有时间摸索seleniumpython自动化测试,结合网上查到的资料自己编写出适合web自动化测试的框架,由于本人也是刚刚开始学习python,这套自动化框架目…

数字马力笔试面试复盘

笔试——10月9日19:00 单选:30题 16.如何获取AJAX 请求的响应状态码? A通过AJAX对象的 statusCode 属性获取 B通过AJAX对象的responseText 属性获取C通过AJAX对象的status 属性获取 D通过AJAX对象的responseCode属性获取 答案:可以通过AJAX…

osg点云加载与渲染

目录 效果 laslib 关键代码 完整代码 效果 las点云读取使用了laslib这个库。 laslib 关键代码 {// 这里演示读取一个 .txt 点云文件const char* lasfile path.c_str();std::ifstream ifs;ifs.open(lasfile, std::ios::in | std::ios::binary);liblas::ReaderFactory f;libl…

Spring Cloud学习(三)【Nacos注册中心】

文章目录 认识 NacosNacos 安装使用 Nacos 完成服务注册Nacos 服务分级存储模型集群负载均衡策略 NacosRule根据权重负载均衡Nacos 环境隔离(命名空间)Nacos 和 Eureka 的区别 认识 Nacos Nacos 是阿里巴巴的产品,现在是 SpringCloud 中的一…

Azure - 机器学习:自动化机器学习中计算机视觉任务的超参数

Azure Machine Learning借助对计算机视觉任务的支持,可以控制模型算法和扫描超参数。 这些模型算法和超参数将作为参数空间传入以进行扫描。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济…

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

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

C#开发的OpenRA游戏之世界存在的属性CombatDebugOverlay(3)

C#开发的OpenRA游戏之世界存在的属性CombatDebugOverlay(3) 这次来分析CombatDebugOverlay属性,这个属性只有在调试游戏的时候才会使用。当你设置这个属性的时候,就可以看到如下图的结果: 可以看到物品的周边都有一个圆圈,以及有一些十字的点位标志。 那些十字表示的点…