【论文精读3】MVSNet系列论文详解-P-MVSNet

news2025/3/1 6:52:06

P-MVSNet全名为“P-MVSNet: Learning Patch-wise Matching Confidence Aggregation for Multi-View Stereo”,名字当中反映了论文的核心模块即基于学习方法的分块匹配置信聚合模块,乍一看有点难理解,但看完本文肯定很清楚啦。


本文是MVSNet系列的第3篇,建议看过【论文精读1】MVSNet系列论文详解-MVSNet之后再看便于理解。

一、问题引出

1.构建代价体的方差法存在问题

论文认为在构建代价体时使用方差法,即在对应像素点的特征间做方差的方法不利于逐像素的密集匹配,例如:

when the features of a pixel in adjacent non-reference images are very similar but do not match the corresponding feature in the reference image, a low matching cost will be generated for this pixel, which potentially tends to give it a wrong estimation in the depth map。
即最终推断深度图时基于参考图像,但可能存在非参考图上某像素的特征非常近似、而与参考图上该像素特征并不匹配的情况,由于方差计算各视图的特征作用平等,最终参考图像的深度图上该点深度值可能会出现问题

因此,在构建代价体(本文称为匹配置信体MCV)时应该强调参考图中像素点特征的重要性,该问题在下文2.1部分给出了一种类似方差的计算方法。

2.代价体直接soft argmin对噪声缺乏鲁棒性

the constructed plane-sweep volume contained in the corresponding frustum is essentially anisotropic – we can infer the corresponding depth map along the depth direction of the matching cost volume, but cannot get the same information along other directions. This fact can be used to guide the regularization of matching confidence volume.
即当前代价体可以沿深度方向推断深度信息,但无法在同深度上与邻域特征的深度信息进行混合、交流。

论文因此提出了基于学习的分块匹配置信体聚合模块(详见下文2.2部分),简单来说就是将原来的基本单位像素(pixel-wise)变成3x3的像素块(patch-wise),并让在同深度不同patch块、不同深度的3个邻域patch块进行信息交流和聚合。

二、网络模型

1.特征提取网络

该部分与MVSNet思路一致,都是共享参数的卷积神经网络来提取深度视觉特征,不过最终输出的特征图通道数为16而非32.

在这里插入图片描述

2.学习分块匹配置信度(Learning patch-wise matching confidence)

传统MVSNet基于Plane Sweeping方法得到的代价体在本文中被称为像素级匹配置信体(pixel-wise Matching Confidence Volume)。
本文利用与方差法稍有区别的公式计算出该像素级匹配置信体(pixel-wise MCV),并指出为了增强匹配的鲁棒性和精度使用学习的方法将其聚合为分块匹配置信体(patch-wise MCV)。

2.1 计算pixel-wise MCV

原代价体(pixel-wise MCV)被表述为M=M(d,p,c),它反映了某代价体上某点p的关于深度d和特征通道c的置信度——假设p为特征图第c层的某像素,其真实深度为d的可能性,因此代价体M是一个形状为[Z, H/4, W/4, C]的张量,Z代表深度样本数,C代表特征图通道数。该置信度计算方法为:
pixel-wise MCV置信度计算公式
即将参考特征图F0上的点p投影至领域特征图Fj上的对应点p’,计算两者差值的平方(对所有邻域源图像的特征图),求和后取平均值作为e的负指数。
该方法与MVSNet的取方差法区别在于,方差法中各视图下的对应特征点起到了均等的作用,而该方法是让各源图像对应点与参考图特征点求差值,因此强调了参考图上特征的作用

2.2 学习方法聚合patch-wise MCV

在该步骤,论文通过学习方法(即卷积神经网络)将M(pixel-wise MCV)转为M*(patch-wise MCV),即以patch为基本单位,一个patch是指以点p为中心的3x3像素块,具体的神经网络公式表述如下:
pathch聚合的神经网络公式
先看第二个公式,Ma包含了两块:

  • ρ1是使用1x1x1为卷积核的3D卷积块(后跟BN和ReLU),这块的作用是聚合各点在不同通道的匹配置信信息
  • Ω1是指一个以p为中心的3x3patch块,ρ2是使用1x3x3为卷积核的3D卷积块(后跟BN和ReLU),该部分作用是混合每个patch内的匹配信息

第一个公式在Ma的基础上通过网络训练出最终的M*(patch-wise MCV)

  • Ω2是沿深度方向上相邻3个patch块的集合(union),ρ3是使用3x3x3为卷积核的3D卷积块(后跟BN),作用是在深度方向上聚合多个patch块的置信信息,最终使用tanh函数激活来正则化置信度。

3.深度图推断

  • 该过程分为三步,首先将得到的patch-wise MCV(M*)放入混合3D UNet得到隐式概率体(Latent Probability Volume,LPV),随后使用在LPV深度方向上进行softmax得到概率体,最终使用soft argmin方法对LPV沿深度方向求期望推断深度图。

  • 此外,论文不仅推断[H/4,W/4]的深度图,同时还利用上采样和一组网络层获取更大尺寸的patch-wise MCV(M*),并使用以上三步推断获得更高分辨率的深度图。

  • 该过程中的数字2和1分别代表尺度大小,L2是指[H/4, W/4]的正常尺度,L1是指[H/2, W/2]尺度。

3.1 Hybrid 3D Unet获取隐式概率体

与普通的3D Unet相比,论文所使用的Hybrid 3D Unet不同之处是使用了两种不同尺寸的卷积核,所在网络层也被叫做各向异性3D卷积块(anisotropic 3D convolutional block)和各向同性3D卷积块(isotropic 3D convolutional block),简单理解就是3x3x3这种各个方向尺度都相同的卷积核具有各向同性,而1x3x3这种就是各向异性。

Hybrid 3D Unet网络结构图如下所示:
Hybrid 3D Unet网络结构图

  • 在较浅层,分别使用两种各向异性的卷积核1x3x3和7x1x1进行卷积:

    • 1x3x3主要是在同一个采样深度平面上融合信息
    • 7x1x1可以在深度方向上扩大感受野,以较低的计算成本利用全局信息
  • 在较深层和输出层使用各向同性(正常的)3x3x3卷积核来融合更多上下文信息

3.2 隐式概率体V2 -> 概率体P2

对上一步输出的隐式概率体V2,沿深度使用softmax,得到各点沿深度方向概率和为1的概率体P2

3.3 概率体P2->深度图DL2

使用soft argmin操作概率体P2,即沿深度方向求各点深度期望推断深度图DL2

3.4 更高分辨率深度图推断

  • (1)利用特征提取步骤中解码获得的特征图F‘0[H/2, W/2, C],与3.1得到的隐式概率体V2上采样后的隐式概率体V2’[H/2, W/2, Z]沿通道方向级联得到一个尺寸为[H/2,W/2, C+Z]的网络输入
  • (2)输入通过一个包含三个2D卷积层的网络,分别输出通道数为C+Z、Z、Z,其中前两层附加了BN和ReLU操作,最后输出隐式概率体V1
  • (3)对隐式概率体V1重复3.2和3.3的操作得到具有更高分辨率的深度图DL1

4.Loss损失函数

对于深度回归问题使用真实深度图和预测深度图(L1和L2分辨率)的差异来设计损失函数,即
在这里插入图片描述
对深度图L1和L2上的有深度标签的点ɸ求深度差值的均值,并使用α来控制两项的重要性。

5.点云重建(后处理操作)

由于重建结果包含多个深度图,论文指出"a concern is that they may not agree well with each other on common regions due to errors in the estimated depths."
即 “一个令人担忧的问题是,由于估计深度的误差,它们在共同区域上可能不太一致。”为了剔除错误预测的深度,论文引入两个滤波准则,其实就是MVSNet中的两种后处理准则稍加变化和应用,然后对不同深度图进行融合并重建点云。

  • 深度置信度准则(depth-confidence criterion) 去除明显不可信的预测
  • 深度一致性准则(depth-consistency criterion) 舍弃相邻图像间不一致的深度值

深度置信度准则部分论文说的很清楚,就是将概率体深度方向最大的概率值(对L1置信度则是加上L2上采样后的置信度)作为置信度图上某点p的值,实验时若小于0.5则舍弃该点(不可信)。

而深度一致性准则就是像MVSNet一样做重投影并使其满足2视图一致性(MVSNet要求3视图一致性),特殊的地方在于第一次投影点p时给出了选择另一视角下对应点p’(用来做重投影的点)的不同方案,如下图
在这里插入图片描述

  • (a)最近邻深度:选择离真实对应点p’距离最近的点a,论文红色部分表述应该有问题
  • (b)标准双线性深度:直接使用双线性插值获取并使用点p’(在真实相机参数可用情况下选择)
  • (c) 深度一致优先深度:使用与点p对应3D点P真实深度最接近的点q(论文提出在真实相机参数时使用)

三、总结

  • 这篇论文对于一些模型的操作步骤讲解清晰,很多MVSNet没有详细讲的细节给出了说明,建议基础不好的朋友阅读原文以加深对MVS系列的理解
  • 起了很多新名字,“代价”cost几乎都被换成了“置信”confidence,MCV,LPV等等,以及各向同性isotropic、各向异性anstropic,其实都是已有或很简单的概念但都给了令人眼前一黑的名字…初看有点唬人
  • 论文两个核心板块,本质都是在卷积核的尺寸上做文章
    • 基于学习的分块置信体代价聚合,通过设计特定卷积网络对通道、patch、深度之间的置信信息进行混合、聚合,通过1x1x1,1x3x3,3x3x3的卷积核来实现
    • 混合3DUnet模块将置信体变成概率体,通过对普通的3DUnet的浅层卷积核做变化,提出各向异性的1x3x3融合同深度特征通道信息、7x1x1扩大深度感受野,最后再在深层用各向同性3x3x3融合上下文信息
    • 从消融实验的结果来看,这两者还是挺有用的,为我们操作卷积核提供了一个不错的实验思路

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

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

相关文章

mysql 数据库使用分享(多图解析)

1、大体流程 1.1 一些概念 1.1.1 RDBMS 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,类似excel 1.1.2 OLAP 和 OLTP OLTP(Online transactionprocessing):在线/联机 事务 处理。主要是对数据库中的数据…

PTA:字符串加密

输入一个原始字符串(长度小于80),然后输入一个5位的数字字符串作为加密密钥,对原始字符串中的每个字符根据其位置(对5取模)变换为加上数字字符串中的数字的字符。如输入原始字符串student,然后输…

Linux学习-36-文件系统管理-硬盘结构

10 Linux文件系统管理 之前在安装Linux的时候已经对 Linux 的分区方法和文件系统进行了介绍。不过那种分区方法是在安装系统的同时使用图形界面进行分区,如果添加了一块硬盘,那么当然要有不重新安装系统就可以分区的方法。文件系统即分区:原…

通达信接口进行二次编程开发步骤

大家都知道通达信接口是比较流行的快速通达信数据excel接口,能够提供多家券商,包括通达信数据excel接口、量化回测平台等。 通达信接口API接口说明(部分) 今天小编主要讲一下,关于通达信接口进行二次编程开发步骤如下…

【Linux】基本指令合集

1、ls 指令 功能: 显示当前目录下的所以子目录和文件 常用选项: -a:显示目录下的所以文件和以 . 开头的隐藏文件 -l:查看文件,ls -l等价于ll -R:显示所以子目录下的文件 -t:以时间排序 举例: …

PyCharm 的初始设置

目标 1、恢复 PyCharm 的初始设置 2、第一次启动 PyCharm/ 3、新建一个 Python 项目 4、设置 PyCharm 的字体显示 5、PyCharm 的升级以及其他 6、PyCharm 的官方网站地址是: PyCharm: the Python IDE for Professional Developers by JetBrains 01. 恢复 Py…

PMP有用吗,PMP含金量,如何转型项目经理?

先说一句,pmp是有用的,含金量也挺高的,也可以转型项目经理的,我再分别说明一下。 1、PMP有用么? 从本质来说,应该是pmp学习项目管理有没有用。 参加PMP认证与考试的过程是一个系统学习和巩固项目管理知识…

小白速点,计算机的存储规则你知道多少

计算机的存储规则 以前的认知 ​ 我们知道计算机中所有的文件都是存储在硬盘上的。当我们在编辑一个文档的时候,点击了保存按钮,那么文件中所有的数据都会保存在硬盘上。 但是他是怎么存储的呢?咱们就需要来学习一下。 计算机的二进制 ​…

三驾马车、四大赛道,元宇宙如何领跑数字经济?

进入2022年,全球互联网巨头继续加快布局元宇宙步伐,国内互联网企业也争相申请注册元宇宙相关商标,抢占数字经济发展先机。 党的十八大以来,发展数字经济逐渐上升为国家战略。多名业内权威人士表示,元宇宙或将引领全球数字经济发展,亟须尽快出台政策,破解制约元宇宙发展的法律…

隐式神经表示做超分:Local Texture Estimator for Implicit Representation Function

文章目录1. Local Texture Estimator for Implicit Representation Function1. 通过隐式神经网络表示方法 实现 超分辨率。2. 在编码器和解码器之间作者引入一个 local texture estimator3. 代码分析整体框架生成图像特征,编码器是一个常规的卷积网络,文…

vue3【生命周期讲解-详】

一、通过配置项的形式使用生命周期钩子 父组件&#xff1a; <template><button click"isShowDiv!isShowDiv">切换显示隐藏</button><Test v-if"isShowDiv"></Test> </template><script> import Test from ./…

怎么查看LinkedIn领英号用了多久?

怎么查看LinkedIn领英号用了多久&#xff1f; 1.第一步&#xff0c;点击“我”&#xff0c;点击设置和隐私 2.第二步&#xff0c;点击“数据隐私”&#xff0c;再点击“管理您的资料和活动” 3.往更早的时间去翻找&#xff0c;最早的就是注册时间 LinkedIn领英有什么开发…

Appium学习日记(三)——Windows系统测试桌面应用

Appium学习日记&#xff08;三&#xff09;——Windows系统测试桌面应用 一、环境搭建 1-1、WinAppDriver环境搭建 &#xff08;1&#xff09;开启开发者选项中的“开发人员模式” &#xff08;2&#xff09;Windows sdk下载安装 下载地址&#xff1a;https://developer.mi…

网络编程基础与套接字

&#x1f389;&#x1f389;&#x1f389;写在前面&#xff1a; 博主主页&#xff1a;&#x1f339;&#x1f339;&#x1f339;戳一戳&#xff0c;欢迎大佬指点&#xff01; 目标梦想&#xff1a;进大厂&#xff0c;立志成为一个牛掰的Java程序猿&#xff0c;虽然现在还是一个…

一次 G1 堆大小不均问题的排查及解决

现象 生产服务中&#xff0c;存在部分服务在 JVM 参数、POD 规格、物理机规格 一致&#xff0c;负载流量差异不大的情况下&#xff0c;出现在内存使用上差异较大的情况。下面是一些基本信息的收集和整理。 JVM 参数 -XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:ParallelGCThre…

网络爬虫是什么?怎么学python爬虫

网络爬虫又称网络蜘蛛、网络机器人&#xff0c;它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页&#xff0c;并将所需要的数据抓取下来。通过对抓取的数据进行处理&#xff0c;从而提取出有价值的信息。 认识爬虫 我们所熟悉的一系列…

【Linux操作系统】crontab设置自动运行脚本

文章目录1 介绍2 修改系统时区3. 设置crontab定时任务3.1 相关命令3.2 自动运行shell脚本3.3 Crontab命令在线验证工具&#xff1a;3.4 Crontab日志路径1 介绍 最近要在linux机器上做量化策略&#xff0c;目前需要每天爬取一些数据&#xff0c;于是就写了一个python的策略放到…

【计算机硬件组成】基础知识(必备)

一、计算机硬件组成 ​ 从外观上来看&#xff0c;微型计算机主要包括CPU、主板、硬盘、内存、显卡、鼠标、键盘、机箱、电源、光驱。 我们就来重点说一说其中我们平时最耳目能详的&#xff1a;CPU、主板、硬盘、内存这些硬件。 1&#xff0c;CPU ​ 也叫中央处理器&#xf…

Linux安装MongoDB(简单详细)

目录MongoDB 安装环境1、下载 MongoDB 的linux安装包2、上传 MongoDB 安装包到linux系统中&#xff1a;3、解压 MongoDB 安装包4、创建 MongoDB 必要目录5、移动 MongoDB 安装目录6、设置 MongoDB 环境变量7、添加 MongoDB 配置文件8、启动和关闭 MongoDB启动报错的解决&#x…

【Java 数据结构】双向链表

篮球哥温馨提示&#xff1a;编程的同时不要忘记锻炼哦&#xff01;圆圆的脑袋&#xff0c;大大耳朵&#xff0c;天天敲代码&#xff0c;找找找bug 目录 1、什么是双向链表 2、实现一个双向链表 2.1 实现前的约定 2.2 addFirst 方法 2.3 addLast 方法 2.4 addIndex 方法…