【论文精读6】MVSNet系列论文详解-CIDER

news2024/9/30 3:30:45

CIDER全名:Learning Inverse Depth Regression for Multi-View Stereo with Correlation Cost Volume,AAAI 2020(CCF A)


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

一、问题引入

  • 针对问题:还是可扩展性(scalability),即代价体构建和正则化消耗的内存资源过大。
    在这里插入图片描述
  • 如上图所示,深度回归问题设定(depth regression)下存在的不鲁棒问题——将深度推断看作深度回归问题,在深度空间均匀采样深度平面,但其在成像平面级线上所对应的点并非均匀分布
    • 靠近相机中心的深度假设,其对应的特征可能不在源图像的深度特征中
    • 多个远离相机中心的深度假设,所对应的源图像特征可能是同一个非常相似的,因为距离越远采样点逐渐逼近

二、创新点

  • 受立体匹配(stereo matching)当中组相关(group-wise correlation)方法的启发,提出了一个平均组相关相似性度量(average group-wise correlation similarity measure)来构建一个轻量级代价体。不仅减少了内存消耗,同时降低了在代价体滤波时的计算压力。
  • 基于以上有效的代价体表示,提出一个级联(cascade) 3d Unet模块以正则化代价体来提高性能。
  • 先前方法将深度图推断看作一个深度回归问题或是逆深度分类问题(inverse depth classification problem),本文将其改为一个逆深度回归任务(inverse depth regression task),从而实现亚像素精度估计(sub-pixel estimation)同时可以被应用到更大尺度的场景。
    • 深度回归(depth regression),在深度空间均匀采样深度平面且能达到亚像素精度,但不鲁棒
    • 逆深度分类(inverse depth classfication),无法达到亚像素精度,经常导致阶梯效应

三、论文模型

在这里插入图片描述

1.深度特征提取

与MVSNet一样采用权重共享的深度网络提取特征。

2.代价体构建

在这里插入图片描述

  • 首先指出原始MVSNet在代价体进行正则化时第一步是将特征通道数由32->8,且有人实验发现8通道即可达到相似精度,因此直接构建8通道代价体减少计算量和内存消耗
  • 本质上该步骤还是计算相似度,但将MVSNet中的方差计算相似度替代为内积计算相似度
    • 方差是所有源、参考特征图对应位置都平等参与计算得到方差,方差越小越相似
    • 平均组关联则是对32通道特征分为8组,让源视图的各组与所有源视图的对应组做内积计算出相似度图,最后在利用均值方法把各组某个深度下的相似度计算平均值

2.1 单应变换

详细讲述了MVSNet中代价体构建的真正过程,即将参考图上各像素坐标转为源视图下的坐标值(变量是参考视图的深度d),并将源视图下对应坐标的深度特征值赋给参考图的对应坐标下。建议看原论文加深理解

2.2 平均组关联度量(average group-wise correlation similarity measure)

S i , j g = 1 32 / G ⟨ F r e f g , F ~ i , j g ⟩ S^{g}_{i,j}=\frac{1}{32/G}\langle{F^{g}_{ref}},{\tilde{F}^{g}_{i,j}}\rangle Si,jg=32/G1Frefg,F~i,jg

首先,将源视图和参考视图的32通道深度特征的分为G组(g=1,2,…,G),Frefg代表参考视图在第g组的特征,Fi,jg‘代表源视图下对应的组特征,i代表第i张源视图,j代表深度,<>代表内积操作,因此对参考视图的每个假设深度j下,其第g组特征对应源视图i可计算组相似度图Si,jg

2.3 代价体生成

(1)利用2.2的组关联相似度量,对每张源视图i,在每个深度j下可构建G张相似度图Si,jg,则对于D个深度平面下最终构成代价体Vi尺度为 [G, H/4, W/4, D];
(2)为了适应任意张源视图输入采用平均的方式将N-1张源视图特征体通过各组上平均获取最终的代价体(尺度不变),即 V = 1 N − 1 ∑ i = 1 N − 1 V i V=\frac{1}{N-1}\sum^{N-1}_{i=1}V_{i} V=N11i=1N1Vi

3.代价体滤波(Cost Volume Filtering)

在这里插入图片描述

  • 使用一个级联的3D Unet网络来正则化代价体以获取概率体,包含两个模块
    • 一个残差模块和回归模块学习更好的特征表示
    • 两个级联的Unet,通过自顶向下/自底向上的重复处理结构学习更多的上下文信息
  • 论文强调,由于代价体表示带来的巨大内存消耗,之前的MVSNet和R-MVSNet都没有用过这样的结构,因而使得他们聚合的上下文信息有限。

4.逆深度回归(Inverse Depth Regression)

这里是引用
这部分本质上是改变了选取深度采样值的方法(均匀深度采样->逆深度采样)

4.1 深度均匀采样存在的问题

论文指出,MVSNet通过将深度图推断看作深度回归问题均匀采样深度平面,并使用soft argmin的方式实现了亚像素估计(深度值连续,简单理解就是包含小数点),但这还是存在问题的——深度空间的均匀采样在成像平面的级线上对应的像素点距离并不均匀,如下图所示,距离相机平面越远,同样距离的3D点对应在另一视角下的2D点间距离逐渐逼近,这就导致了文首提到的两个问题

  • 靠近相机中心的深度假设,其对应的特征可能不在源图像的深度特征中
  • 多个远离相机中心的深度假设,所对应的源图像特征可能是同一个非常相似的,因为距离越远采样点逐渐逼近
    在这里插入图片描述

4.2 逆深度采样

为了解决上图当中的深度均匀、像素距离不均匀的问题,使分布在源视图级线上的像素点尽可能均匀分布,在深度采样时使用离散的inverse depth采样方式来选取深度假设平面,公式表述为:
在这里插入图片描述
通过这样选取的深度值与原来相比,最小最大深度不变,深度样本数不变,改变的是当中每一个深度假设的值——原来可能是在【1,100】上均匀采样得到【1,2,3…100】,但这种采样结果可能为【1,3,5.5,8…100】,虽然深度间隔不一致了,但是它们在对应深度对应到源视图上各点的像素距离是逼近均匀分布的,而这种采样方式就称为“逆深度设置”(inverse depth setting)

4.3 逆深度回归

通过4.2的逆深度方式对深度假设值进行采样后,通过正常的单应变换以及组相关代价体的构建、滤波得到概率体,随后进行各像素点的回归深度。
在这里插入图片描述
这一步骤不是直接求各像素点上概率与当前深度假设的期望,而是先用期望求一个亚像素序数k(代表最终的期望深度层
在这里插入图片描述
然后再利用该序数k代表的期望深度层,代入逆深度采样的公式来求得最终的深度值

引入这个亚像素序数K,就是先判断当前像素点期望属于第几个逆深度采样的层(可能带小数),然后再代入逆深度公式确定最终深度;与直接对深度期望感觉没有很大的区别或者是必要性??希望理解的朋友留言提醒一下😢😢

5.损失函数

在这里插入图片描述
还是使用平均绝对误差计算推测深度图和真实深度图的损失,只不过对3个阶段输出的深度图损失做了一个甲醛。

四、实验效果

在这里插入图片描述在这里插入图片描述

在DTU数据集上取得了最佳的完整度和overall,但精度还不如MVSNet。

在这里插入图片描述

在Tanks数据集上效果都不如R-MVSNet,尽管论文说这是R-MVSNet在网络输出之后细分优化所带来的加成。

在这里插入图片描述

  • AGC是指加了Average Group-wise Correlation,IDR是指加了Inverse Depth Regression
  • 在Tanks数据集上的消融实验结果如上图,从数据上来说并不比R-MVSNet好,内存消耗相比MVSNet小但比R-MVSNet大
  • 论文指出亮点在于相比R-MVSNet,CIDER对于边缘部分和模糊区域的重建效果更好(比如雕塑、树的边缘部分,以及深度均匀的区域

五、总结

  • 从理论上看,这篇论文观察并指出了“深度均匀采样并不代表对应搜索像素点均匀分布”的现象,并使用逆深度采样的方式减轻这样的问题
    • 但个人理解,其实这个现象(离相机越远,同样的深度间隔对应的两个搜索点间距离变小)是摄影几何本身的一个特点,并不会影响重建的精度——当你均匀采样深度平面且到了深度较大时候(在另一个视角下靠近视平面右边缘),同样深度间隔对应的像素点本身就很相似,你使用逆深度采样、只是采样的深度间隔改变了,但并不会使这个对应过程更精确
      • 反映在DTU数据集上,使用逆深度采样的方法精度甚至不如初始的MVSNet,说明这个理解应该是合理的。
    • 那么这个逆采样的作用在哪?它在于提升了搜索不同特征像素点的个数。即均匀采样到后期深度其实都是对应到很近似特征的几个点上,而逆采样保证你所“试探”的深度值对应的二维像素点的特征都是不同的(相隔较远),因此提高了可试探特征的数量,更容易找到真实的深度对应。
      • 反映在DTU数据集上,逆深度采样的方法较高的提高了重建完整度,我认为就是因为它的搜索范围增大带来的提升。
  • 从结果上来看,DTU精度不如MVSNet,但完整度、overall最佳;Tanks上比不过RMVSNet(尽管说是由于后续细分优化),内存消耗、时间消耗也都说不上是最好,只是在边缘区域的重建效果更好一些;
  • 作为2020年的一篇MVSNet优化,在效果上也未与2019另外几篇好的(PointMVSNet、P-MVSNet、MVSCRF)作比较
  • 可能是因为AAAI比较偏向与理论型选手?这篇论文的组平均相关度量构建代价体当然算一个创新点,但其中的分组、内积代表相似度其实并不是太新,重点在于强调为什么需要逆深度采样(两个均匀),但逆深度好像也是之前就有的?最好效果上也只是提高了完整度,内存消耗和时间上没有太大提升😢😢

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

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

相关文章

理解 CNN

理解 CNN 注意&#xff1a;下面提到的图像指位图 目录理解 CNNCNN人类的视觉原理几个关键层卷积层(fliter、kernel)池化层 (pooling)激活层(activate)全连接层(Linear)pytorch实现TextCNN卷积传播图解不同视角看CNN参考CNN 卷积神经网络-CNN 最擅长的就是图片的处理。它受到人…

[附源码]JAVA毕业设计机房预约系统(系统+LW)

[附源码]JAVA毕业设计机房预约系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

Spring Data JPA 中的分页和排序

让我们学习如何使用 在 Spring 数据 JPA 中使用分页和排序有效地处理大量记录。 什么是分页和排序&#xff1f; 大多数情况下&#xff0c;来自数据库的结果集可能会让人不知所措。它可能会让人不知所措&#xff0c;以至于系统崩溃&#xff0c;因为它们无法在一次传递中处理那…

2019-10《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布

本系列博客合计 21 篇&#xff0c;每篇都将解析一张《信息资源管理》真卷&#xff0c;并附带答案解析与背诵技巧。 搜索 梦想橡皮擦&#xff0c;擦姐整理 全国 2019 年 10 月自学考试信息资源管理试题&#xff08;02378&#xff09; 单选题 1,信息技术是应用信息科学的原理和…

Linux基本工具——yum

Linux基本工具软件包管理器yum什么是软件包Linux的软件包yum的三板斧yum的扩展软件包管理器yum 工具的本质就是指令 什么是软件包 我们平时用手机与电脑的时候&#xff0c;如果想安装一个软件就需要去下载它的安装包&#xff08;软件包&#xff09;&#xff0c;下载安装包的…

前端怎么才能找到项目做?

前言 一般找项目最常用的就是在Github上&#xff0c;题主已经具备了html、css、js和vue的知识体系&#xff0c;那么在github或者找一些项目教程视频来实践是锻炼的最好途径&#xff0c;下面我整理了一些在github和B站上找了一些前端的经典项目&#xff0c;希望对你有所帮助~ …

Kotlin 开发Android app(十六):ContentProvider的使用

android的四大组件&#xff0c;已经介绍了两个&#xff0c;这一节介绍ContentProvider。前面的广播可以进行 app内的通讯&#xff0c;如果需要进行app之间的通讯&#xff0c;在android 中使用的是ContentProvider。ContentProvider 也分为三种&#xff0c;一&#xff0c;作为数…

物通博联持续参与京东方(BOE)工厂数字化项目

创新引领 数字驱动 京东方科技集团股份有限公司&#xff08;BOE&#xff09;创立于1993年&#xff0c;是全球领先的半导体显示技术、产品与服务提供商&#xff0c;核心业务包括显示器件、智慧系统和健康服务。产品广泛应用于手机、平板电脑、笔记本电脑、显示器、电视、车载、…

php万年历源代码!源代码![上一年、上一月、下一月、下一年、附加当天日期加背景颜色]-私聊源码

//当前年 $year isset($_GET[year])?$_GET[year]:date(Y); //echo $year; //制作当前月的变量 $monthisset($_GET[month])?$_GET[month]:date(n); //本月有多少天 $day date(t,mktime(0,0,0,$month,1,$year)); //本月从1号开始是星期几 $w date(w,mktime(0,0,0,$month,1…

python处理csv文件

如何使用python处理csv文件 素材准备 ​ csv⽂件其实就是⽂本⽂件&#xff0c;遵循了⼀定的格式&#xff0c;常⻅的csv⽂件⼀般是⽤逗号来隔开列&#xff0c;⽤换⾏符隔开不同的⾏&#xff0c;注意这⾥的符号都是英⽂符号。我们可以直接⽤open函数来打开csv⽂件&#xff1b; …

.net----数据库的访问ADO.NET、DataAdapter和DataSet

数据库的访问前言ADO.NET的概述ADO.NET数据源访问处理数据类库的两个组件&#xff1a;引用System.Data.dll和System.Xml.dll使用ADO.NET连接和操作数据库使用数据提供程序访问数据库操作的典型步骤&#xff1a;&#xff08;1&#xff09;建立数据库连接&#xff08;2&#xff0…

艾美捷曲妥珠单抗Trastuzumab参数和相关研究

曲妥珠单抗是一种重组人源化单克隆抗体&#xff0c;特异性地作用于人表皮生长因子受体-2(HER2)的细胞外部位。此抗体含人IgG1 框架&#xff0c;互补决定区源自鼠抗p185 HER2 抗体&#xff0c;能够与HER2 绑定。 HER2 原癌基因或C-erbB2 编码一个单一的受体样跨膜蛋白&#xff0…

Tyramide Cy5.5,Cyanine5.5 Tyramide,花青素Cy5.5酪酰胺远红色近红外发射染料

​一、理论分析&#xff1a; 中文名&#xff1a;花青素Cy5.5 酪酰胺 英文名&#xff1a;Cyanine5.5 Tyramide&#xff0c;Cy5.5 Tyramide&#xff0c;Tyramide Cy5.5 CAS号&#xff1a;N/A 化学式&#xff1a;C48H52CIN3O2 分子量&#xff1a;738.4 二、产品详情&#xff1a; 外…

【D3.js】1.20-给 D3 元素添加工具提示

title: 【D3.js】1.20-给 D3 元素添加工具提示 date: 2022-12-02 15:04 tags: [JavaScript,CSS,HTML,D3.js,SVG] 继续增强交互性&#xff1a;给元素添加悬停提示。 一、学习目标 如何给元素添加悬停提示&#xff1f; 通过title元素&#xff1a;增加title元素&#xff0c;通过.…

HTML+CSS+JS网页设计期末课程大作业——海贼王(8个页面)动漫网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

vector类的常用接口说明

目录 一、(constructor)构造函数声明 二、vector的迭代器 三、vector的增删改查 四、insert和erase&#xff0c;以及查找find&#xff08;find不属于vector&#xff0c;是stl提供的算法&#xff09; 五、三种遍历方式 六、源代码 vector是可变大小数组的序列容器 一、(c…

海豚调度器分布式部署

前置准备 服务器 node01,node02,node03三台服务器&#xff08;本教程服务器系统版本Linux version 3.10.0-1160.el7.x86_64&#xff09; node01作为master&#xff0c;api&#xff0c;alert节点&#xff0c;node02和node03作为worker节点 安装包下载 下载dolphinscheduler和…

RFID数据采集成为MES系统精准数据

随着信息化、自动化成为企业发展趋势&#xff0c;制造执行系统(MES)是连接计划层和现场控制层之间的纽带&#xff0c;成为企业制造战略重要技术手段。MES生产执行系统主要在生产过程层及管理层之间加强数据集成与分析的力度&#xff0c;拓展优化技术应用的范围&#xff0c;真正…

猿创征文|Python学习工具千千万,我心中的TOP10

前言&#xff1a; 大家好&#xff0c;我是是Dream呀&#xff0c;在我们平时的开发和生活中&#xff0c;每天都在使用、寻找、贡献、创作各类开发者工具&#xff0c;包括开源服务、付费软件、API等。好的工具可以极大帮助我们提升效率&#xff0c;服务业务。作为一名资深的Pytho…

MFC下拉框控件用法

目录 一、属性方式设置下拉框内容 1.Combo Box下拉框 2.Data属性 3.Type属性 4.Sort属性 二、初始化OnInitDialog设置下拉框内容 1.添加Combo Box下拉框变量 2.AddString方法添加选项 3.SetCurSel设置默认显示内容 4.InsertString方法插入内容 4.DeleteString删除指…