【论文精读10】MVSNet系列论文详解-PatchmatchNet

news2024/11/25 2:29:24

PatchmatchNet,论文名为:PatchmatchNet: Learned Multi-View Patchmatch Stereo,本篇论文结合了较多过往文章的优化思想和类似模块,因此可能要更复杂一些。


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

一、模型结构

  • 这篇论文模型部分是按照模块功能来划分介绍(初始化、传播、评估),但由于是分Stage的由粗到细推断、且每个Stage当中会迭代多个iteration,因此直接按模块理解起来很绕,为方便理解以下讲解部分按照时间顺序来介绍一个完整的训练流程(Stage3 - Stage 0)
    在这里插入图片描述

二、训练流程

在这里插入图片描述

在这里插入图片描述

  • Stage 1 的 第一个iteration,对于深度样本的选取只使用了 Initinalizaiton模块(Local Perturbation、Adaptive Propagation在下一个iteration才使用)
  • 可微单应变换和MVSnet一致
  • 组关联模块来自CIDER 2.代价体构建部分,即将特征体的32通道分为G个组,然后与参考视图的特征体按组计算出G张相似度图(其实就是逐特征通道做内积,然后一组内的加在一起取平均作为相似度)
  • 随后基于与参考视图上各像素点特征的相似情况,使用1X1X1的卷积来计算出一张包含各像素权重的权重图
  • 将各源视图的特征体乘以权重后取平均来构建聚合的匹配代价体(之所要加上权重,是因为参考视图中有些像素点可能由于遮挡等问题,在某张源视图中并不存在对应点,这时候该视图下提供的该像素点的特征(即错误的),如果被均匀的计算方差来代表整体匹配代价那可肯定会造成误差;而通过预先计算各视图下各像素点是否与参考视图下足够相似(即能够匹配)来赋予较大权重,匹配度低赋予较小权重,就可以减少由遮挡、光照等不同视角变换时误匹配带来的损失
  • 随后通过1x1x1的卷积来变换通道数(将 【宽、高、组(Group)、深度】变为 【宽、高、深度】的代价体,其实就是聚合Group维度,来使得每个假设深度下存在一张匹配代价图,即各像素点若在该深度下,则具体的匹配代价为C(h,w,d)
  • 在利用各像素点在各深度下匹配代价(匹配代价越小越可能在该深度)计算估计深度之前,考虑周围在同一物体平面上的点的深度可能是很相似的,因此使用卷积网络在参考视图的特征图上去做卷积,为每一个像素点输出周围N个像素点来一起计算该像素点深度(如图中abc所示,b为传统直接取周围固定间距的8个点,而自适应选取的意思就是让神经网络根据各像素点与周围点特征,选取周围可变距离的8各点,可以看到在物体边缘纹理丰富处间距小,而纹理稀疏处间距大,这就是自适应的含义),其中wk和dk是周围各点对中心点深度影响的权重,具体值则是根据在特征图和深度图上计算相似度得到的
  • 得到最终考虑周围点深度的代价体之后,对各深度下各像素点的匹配代价值取负号即变为概率体P(即匹配代价越小在该深度概率越大),随后通过MVSNet的求期望方式得到该点的最终深度推断值

在这里插入图片描述

  • 在经过Iteration 1 之后产生了深度图(H/8, W/8),之后Stage 3 的多个iteration 都可以用上一个iteration的深度图来选取新的深度样本,其中用于做单应变换的深度样本值来自两个模块的总和 ——
    • 局部扰动(Local perturbation) 从以上一个iteration的深度图上各像素深度值为中心,[RK* (dmax-dmin)]即原始深度范围*RK的区间上均匀采样深度值Rk随Stage推进逐渐变小,因为推断的深度越来越精确且可以减少内存和时间消耗
    • 自适应传播(Adaptive Propagation)类似上一步的可变卷积核概念,只不过这一次不是利用周围点来计算当前点深度,而是直接选取周围区域可变距离的k个点的深度值作为深度假设,这样每个点都可能逐渐利用到周围点的深度并逐渐扩展到所有点,也是**“传播”一词的含义所在**
  • 在确定深度假设值之后,和前边iteration的单应变换及之后的步骤一致,迭代的推断出新的深度图,直到迭代至设定的n次则Stage 3结束

在这里插入图片描述

  • 在Stage 2 iteration 1,深度采样类似于之前的Stage 3 iteration2,但深度图来自上一个Stage,因此需要做一个插值后再进行
  • 之后的iteration则和Stage 3 iteration2后续完全一致
  • Stage 1也与上两步一致

在这里插入图片描述

  • 论文最后一步没有再使用Patchmatch,而是用了一个优化网络做最后一次优化并恢复深度图至输入图像的尺度

在这里插入图片描述

三、总结

  • 整体来看PatchmatchNet使用了之前MVSNet中多种优化的技巧(多尺度由粗到细优化、组关联度、考虑视图间遮挡因素、可变卷积等),并且引入传播的概念来让各点试探周围同物体表面的深度值
  • 更离谱的是看supplementary还发现很多再读论文觉得明白时、但其实没有考虑到的问题——比如文中由于各点深度采样可能来自initialization的随机选取、或是基于上一次深度推断的local perturbation(加上局部扰动)、亦或是直接选取来自周围同表面点的深度,因此导致构建的“代价体”和MVSNet里边直接取D个统一深度假设平面的代价体时不一样的,它的代价体由于各像素点的深度取值不同,因而假设深度D个数一致但具体值不同导致代价体不规则,因而直接使用之前模型常用的3D U-Net来进行正则化时无益的(因为同一深度层周围像素点的深度值可能不同、各像素深度维度具体取值也不同,UNet聚合空间上下文及深度维度的作用无法发挥)…只能说太强了🤦‍♂️
  • 从结果上来说,它的精度不是最好却在第一阶梯,但完整度损失直接降低了20%达到0.277,均衡损失也在第一阶梯;更重要的是它的内存、时间消耗非常少
    在这里插入图片描述
  • 论文写作上也有值得学习之处,不仅英语语法和语句高级感十足,而且对模型各模块开头先讲一个听起来很有道理的故事动机,然后引入具体的模块实现,这种写作逻辑读起来引人入胜

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

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

相关文章

【嵌入式linux】修改网口MAC地址

使用带有网络功能的设备时,如果局域网内可能会连接很多台设备,为了保证网络通信正常,要确保每台设备的硬件MAC地址都不相同,一般在批量生产的时候可以根据产品序列号(sn号)固化每台设备的MAC地址,防止出现MAC冲突的问题…

【云原生】Prometheus PromQL讲解与实战操作

文章目录一、PromQL介绍二、四种指标类型1)counter(计数器)2)gauge (仪表类型)3)Histogram(直方图类型) 和 Summary(摘要类型)三、表达式四种数据…

8Manage PMO:多项目管理工作经验分享

在现代企业日常项目管理中,同时开展不同业务项目可说已经是“家常便饭”,项目经理手上开展多个项目,便需要兼顾各项目的人力资源、进度、问题、风险等。而在这种情况下,面对多项目管理该如何有效进行管理,有没有多项目…

换天空的几个方式技巧

1.魔棒工具 现将图层复制一层,用魔棒工具选中被复制的一层图中的天空将他删除。(如果天空有一些未选中的位置,那么我们按住shift用鼠标去点击需要删除的位置他就会一起选中) 这个就是我们删除之后的效果。 然后我们打开一张需要加…

体验了一下火爆全球的 ChatGPT,我震惊了

这几天,要说编程圈最热的话题,莫过于OpenAI的ChatGPT,写小说,写代码,找BUG,写论文,画漫画,谱曲……简直没有它干不了的事。 趁着下班时间,我也光速注册体验了一下&#…

VS Code 1.74 发布!

欢迎来到 VS Code 11月更新,此版本更新包括自定义资源管理器自动显示、隐藏活动栏和面板徽章、合并编辑器撤消/重做、管理不安全的存储库、Go to Definition on return、远程隧道等等,让我们一起看看完整更新吧! 自定义资源管理器自动显示 引…

Linux Centos离线地图开发

相关教程: 1、如何搭建离线地图开发环境 视频教程 2、下载离线地图数据(金字塔瓦片数据) 视频教程 3、下载离线地图地形数据库(实现地表高低起伏) 4、添加离线地图数据到本地服务器 (含3D) 视频…

NamedParameterJdbcTemplate —— SqlParameterSource实现具名参数查询

文章目录NamedParameterJdbcTemplate —— SqlParameterSource实现具名参数查询一、数据库准备二、java Bean实体类准备三、要执行的SQL语句四、定义业务接口service五、定义一个SqlParameterSource实现具名参数的实体类六、定义controller接口七、业务实现(1&#…

基于java+springboot+mybatis+vue+mysql的疫苗接种管理系统

项目介绍 该系统的应用可以减少工作人员的劳动强度,提高工作效率与管理水平,具有很大的价值。它可以使疫苗接种管理系统上操作简单,成功率高,使网上疫苗接种管理系统的管理向一个更高层次前进。 本系统尝试使用springboot在网上…

动态规划及马尔可夫特性最佳调度策略(Matlab完整代码实现)

📋📋📋本文目录如下:⛳️⛳️⛳️ 目录 1 概述 2 Matlab代码实现 3 写在最后 1 概述 动态规划是一种机器学习方法,它利用环境、计算资源和马尔可夫特性等知识来创建在环境中最佳执行的策略。有了这项强大的技术&#…

存储器层次结构

实际的软件开发过程中,常会遇到服务端请求响应时间长,吞吐率不够。 分析对应问题时,你肯定听过“主要瓶颈不在CPU,而在I/O”,存储很重要。 1 存储器的层次结构 存储器系统是通过各种不同方法和设备,一层层…

人肝HepG2细胞膜

人肝HepG2细胞膜 主要组成:细胞膜组分(真核或原代细胞)、高分子内核材料、功能因子 制备方法:薄膜包覆法 粒径控制:100-150 nm 平均电位:~ -20 mV 包载因子:影像分子、免疫分子等功能因子 包装…

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2151 权值计算2. MT2152 黑客小码哥3. MT2153 来给单…

论文投稿指南——中文核心期刊推荐(机械、仪表工业3)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

pikachu靶场-3 跨站请求伪造(CSRF)

跨站请求伪造(CSRF) Cross-site request forgery简称为”CSRF“ 在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接) 然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成…

Java基于springboot+vue+elementUI某高校学院资产管理系统

项目介绍 独立学院资产管理系统主要设计的用户范围是:注册用户、管理员。每一个角色在系统中即可看作是不同的子系统,其所拥有的功能权限是不一致的。系统架构包括后台数据库的建立和维护以及应用程序。系统的主要功能模块主要有登录功能模块&#xff0c…

01_01_Go语言基础知识

01_01_Go语言基础知识定义变量内建变量类型强制类型转换常量与枚举要点总结条件语句if 举例switch 举例for 循环函数指针数组定义变量 使用 var 关键字 使用 var 关键字, 可以放在函数内, 或直接放在包内均可 // 定义 a, b, c 三个变量 类型都是 bool 变量可以不赋初始值 v…

别搞错了,nonTransitiveRClass 不能解决资源冲突!

前言 nonTransitiveRClass:非传递性 R 类的属性,在 gradle.properties 文件里使用。 不少开发者可能听过它,但了解可能仅限于是对 R 文件做了优化,甚至以为它可以解决资源冲突!但它到底做了什么优化、能否解决资源冲突…

【序列召回推荐】(task2)序列召回GRU4Rec模型

学习总结: 一般的RNN模型我们的输入和输出是什么,我们对RNN输入一个序列 X[x1,x2,...,xn]X [x^1,x^2,...,x^n]X[x1,x2,...,xn] ,注意我们序列中的每一个节点都是一个向量,那么我们的RNN会给我们的输出也是一个序列 Y[y1,y2,...,…

【python黑帽子】——(一)搭建扫描器入门介绍

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…