【论文精读9】MVSNet系列论文详解-AA-RMVSNet

news2024/11/17 0:05:23

AA-RMVSNet,论文名为:AA-RMVSNet: Adaptive Aggregation Recurrent Multi-view Stereo Network,CVPR2021(CCF A)


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

一、问题引入

这里是引用

二、解决思路

这里是引用

三、论文模型

在这里插入图片描述

相比RMVSNet主要有三处改变:

  • 在特征提取部分增加视图内自适应聚合模块(intra-view Adaptive Aggregation)
  • 在代价体构建部分增加视图间自适应聚合模块(inter-view Adaptive Aggregation)
  • 在代价体正则化部分讲GRU改为RNN-CNN hybrid network结构

1.特征提取 【视图内自适应聚合模块(intra-view Adaptive Aggregation)】

动机:三维重建中使用普通CNN(使用固定的2D网格感受野)提取特征时,经常会在反射、低纹理或无纹理区域出现问题,希望可以使这些区域的卷积感受野大一些在纹理丰富的区域感受野小一些——可变形卷积核,图例如下:
在这里插入图片描述

为了在不同纹理丰富度的区域采样使用不同尺度的特征,设计视图内自适应聚合模块(inra-view AA)如下:
在这里插入图片描述

  • 特征提取的Encoder部分(灰白色部分)产生不同尺寸(1,1,1,1,1/2,1/4)和通道数(8,16,16,16,16)的特征图
  • 后三层尺度为[H, ,W, 16]、[H/2, ,W/2, 16]、[H/4, ,W/4, 16]的特征图分别送入3个使用可变形卷积核(3x3)、参数不共享的卷积层
  • 将三个特征层的输出尺度分别为[H, ,W, 16]、[H/2, ,W/2, 8]、[H/4, ,W/4, 8],进行x1,x2,x4的双线性插值来统一尺度为[H, ,W, 16(8)],并使用Concatenation操作进行连接最终得到[H, ,W, 16+8+8]的特征图。

以上过程通过公式表述和实现为
在这里插入图片描述

其中f(p)表示像素点p上的特征,wk和pk分别为普通卷积层中卷积核参数和固定偏移量,Δpk和Δmk为通过可变形卷积层网络自适应产生的偏移和调整权重,f’(p)为该点3层可变形卷积并插值、cancat之后对应最终的特征。

2.代价体构建 【视图间自适应聚合模块(inter-view Adaptive Aggregation)】

在上一步结合intra-view AA模块构建出各视图的特征图之后,按照正常的单应变化可以构建单个特征体,论文当中省略了由源视图特征体Fi(i=1,2,…,N-1)与参考视图特征体F0构建单个代价体的步骤,以下直接自N-1个代价体开始进行聚合
在多个特征体聚合为代价体时增加了视图间自适应聚合模块(inter-view AA),这一步思想应该借鉴了前边PVA-Net的VA模块,出于同样的动机即不同视图由于视角不同可能存在遮挡、光照等变化,所有视图的特征均匀贡献计算代价体则深度估计会存在问题目的是让各视图的特征在构建代价体时贡献权重不同,只不过与VA模块具体实现稍有差异。

为了让不同视角根据相似程度为本视角下特征赋予不同权重,设计视图间自适应聚合模块(inter-view AA)如下:在这里插入图片描述

  • 使用上一步的得到的各视图特征体c1 — cN-1([H,W,32,D]),沿各深度维度进行切片得到各深度假设下的特征图切片ci(d)([H,W,32])
  • 另N-1个视图的特征体沿每个深度方向进行切片,并将切片通过中间通道数分别为4,4,4,1的注意力权重网络最终输出一张逐像素的注意力权重图w,让每个深度切片与其做(1+w)的哈达玛积,即逐像素位置令特征值乘以权重得到结合注意力后的特征体深度切片
  • 对N-1个视图同一深度d切片下的注意力特征体求平均,得到最终代价体的深度d切片。

用公式表述和实现上述过程为:
在这里插入图片描述

⊙ \odot 表示哈达玛积,w(·)表示注意力权重网络输出的逐像素权重,通过这样最终的代价体上容易混淆匹配的像素将被抑制,而具有关键上下文信息的像素将被赋予更大的权重

其中使用1+w(·)而不直接使用w(·)的原因是可以避免过度的平滑化。

3.代价体正则化【循环代价体正则化(Recurrent Cost Regularization)】

代价体正则化步骤是利用空间上下文信息,将匹配代价转为在D个深度假设平面上的概率分布(也即概率体),该步骤采用RNN - CNN混合方式来进行正则化。

在这里插入图片描述

将上一步的代价体((H × W × D x 32))在深度维度上切片出D个深度代价体(H × W × 32):

  1. 水平方向,通过2D CNN 使用Encoder-Decoder 结构来聚合空间上下文信息和正则化
  2. 垂直方向,通过5个并行的RNN结构来将前一个ConvLSTMCell的中间输出传递给后一个ConvLSTMCell

通过这样的混合网络,既实现了空间上下文和深度方向上的信息聚合与正则化,同时减少了内存消耗(类似RMVSNet原理)
并行RNN中的ConvLSTMCell模块来自论文Dense Hybrid Recurrent Multi-view Stereo Net with Dynamic Consistency Checking(D2HC-RMVSNet),基本就是普通的LSTM模块引入,这里不展开介绍。

4.深度图推断&损失函数

这部分和RMVSNet一致,将深度推断看作逐像素的分类问题,利用交叉熵损失做Loss函数进行训练在这里插入图片描述

四、实验效果

在这里插入图片描述

  • 在DTU数据集上完整度最好,Overall与最佳的也旗鼓相当。
  • 与之前的RMVSNet和D2HC-RMVSNet(同属于使用循环神经网络类)相比在精度和完整性上都有明显改善
  • 这里并未与2020年的PVA-Net比较性能,看了一下精准损失低了0.003,完整损失高了0.003,overall持平…下图可视化倒是与PVA-Net进行了比较;也未与2020年的UCS-Net比较,它的精度损失高了0.038,overall损失高了0.013.…也不知是不是未发现😢

在这里插入图片描述

在DTU的可视化结果中可以观察到重建点云更完整,同时对于光照变化、或是边缘细节部分(红框)也恢复的更好

在这里插入图片描述

在Tanks数据集上排名第一(Rank是表示所有8个场景的平均度量,是最终排序的依据),相比在DTU上SOTA的CasMVSNet和CVP-MVSNet,在不同的场景下展现出了更强的鲁棒性和泛化性

在这里插入图片描述

与原始的循环MVS网络RMVSNet相比,AA-RMVSNet提高了整体重建质量,特别是在低纹理平面、遮挡区域和薄物体等具有挑战性的区域,这得益于其稳健的特征提取和视图聚合方法

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

  • Baseline使用通用的2D CNN进行特征提取,使用同样的混合LSTM结构进行代价体积正则化,不附加任何额外的模块。
  • 消融实验上来看两个聚合模块单独都可以显著降低深度误差,并且这两个模块在全AA - RMVSNet中是互补的,同时使用可以达到最佳性能
  • 从内存消耗上看,intra-view AA 增加了约1.74 GB的内存,将完整性提高了0.28,而inter-view AA 只增加了0.11 GB的内存和0.31的精度,整体误差由0.391下降到0.357
  • 完整的AARMVSNet只需要4.25 GB就可以获得800 × 600分辨率的稠密精确深度图,内存消耗相比RMVSNet更少,但未比较时间消耗😢

五、总结

  • 创新点上主要是三点,可变卷积核(intra-view AA)、不同视图代价聚合权重(inter-view AA)、以及代价体正则化的RNN-CNN模块,从效果上来说(intra-view AA)有,但内存消耗增加较多;(inter-view AA)比较有效,但思想其实与PVA-Net中的VA模块相同,只是具体操作方法变了下;RNN-CNN模块作为Baseline相比RMVNet倒是有一些提升。
  • 从效果上,只是与2020年的PVA-Net打平,甚至不及UCS-Net,但比较时都未与之比较
  • 内存消耗上确实比RMVSNet要少,但并未比较时间消耗
  • 总体感觉有创新,但效果不深明显,对比实验上有瑕疵,消融实验融合了内存消耗对比网络模型数量较少,且未比较时间消耗,让人有点怀疑是不是刻意回避不足之处😂

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

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

相关文章

【Java 快速复习】 Java 内存模型 并发问题本质

【Java 快速复习】 Java 内存模型 & 并发问题本质 在 Java 领域,我们经常会说两个名词大家要有所区分: JVM 内存模型:这个所说的是 JVM 内存的划分规则,如 堆、栈、元空间等Java 内存模型:这个所说的是线程和主内…

【计算机网络】应用层

应用层的许多协议都是基于客户服务器方式。 客户和服务器指通信中所涉及的两个应用进程。客户服务器方式描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。 P2P模式:整个网络中的传输内容不再被保存在中心服务器中&#xff…

怎么裁剪视频?手把手教你裁剪

这两年,随着网课的不断发展,我们可以很轻松的就在网上找到各种课程视频。可是有时候,一些视频里面的重点内容往往只有那几分钟,当我们回顾的时候,需要不断跳转,这就显得有些麻烦。其实我们可以将重点内容裁…

【代码随想录】二刷-回溯算法

回溯算法 《代码随想录》 什么是回溯算法? 回溯算法也可以叫做回溯搜索法,它是一种搜索方式。回溯是递归的副产品,只要有递归就会有回溯。 回溯法的效率: 回溯法的本质是穷举,穷举所有可能,然后选出我们想要的答案。(n…

如何使用virtualenv实现python环境的隔离?

有关更多的Python 开发内容,可访问:《 Python Flask开发指南》​​​​​​​ virtualenv可以帮助我们来创建一个Python的虚拟环境,虚拟环境可以独立并隔离外部的python环境,方便我们对于不同项目使用不同的python依赖,已经依赖版本的不同而导致的错误。本篇文章主要来了解…

2022全年度冰箱十大热门品牌销量榜单

自2022年年初以来,各地纷纷部署支持包括冰箱在内的家电大宗消费政策措施,其中家电补贴政策是刺激家电消费的主旋律。宏观经济政策环境改善,利好冰箱行业的长期发展。 根据鲸参谋数据统计,今年京东平台冰箱的年度累计销量达到1400多…

论文阅读笔记《Learning Combinatorial Solver for Graph Matching》

核心思想 本文提出一种基于学习的组合求解器来实现图匹配。之前基于学习的图匹配方法都是利用神经网络提取特征构建关联矩阵,然后再利用可微分的Sinkhorn算法求解匹配矩阵。但本文提出的方法没有显式的构建关联矩阵和求解匹配矩阵的过程,而是将其转化成关…

SpringBoot:核心模块盘点

spring-boot-project 是 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码,其中很多模块都是我们了解 spring-boot 的重点。 ~ 本篇内容包括:spring-boot-project 包介绍、Spring Boot 核心模块 文章目录一、spring-b…

SpringCloud-Geteway之限流,熔断(超详细篇)

目录 一,Sentinel--服务容错 1.1 高并发带来的问题 1. 使用压测工具,对请求进行压力测试 2.修改配置文件中tomcat的并发数 1.2 服务雪崩效应 1.3 常见容错方案 1.4 Sentinel入门 什么是Sentinel 微服务集成Sentinel 安装Sentinel控制台 实现一个接口的限…

QTextLine、QGlyphRun、QTextLayout

QGlyphRun 一、描述 此类提供对字体中内部字形的直接访问。在某些情况下,开发人员可以对特定字体中的字形绘制到屏幕上进行更低级的控制。 当Qt显示以Unicode编码的文本字符串时,它会将Unicode点转换为基于字体的字形索引列表和位置列表。QGlyphRun 提…

企业对于源代码加密需求分析

需求 随着企业信息化发展的日益增长,软件行业厂商之间的竞争也愈加白热化,加上国内对知识产权的不够重视、山寨模仿产品的横行。保护源代码、保证企业的核心竞争力,成为众多软件研发企业的第一要务。那么企业应该如何保证源代码的安全呢&…

[附源码]计算机毕业设计常见Web漏洞对应PC应用系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

HTTP缓存机制(Cache-Control)

文章目录HTTP缓存机制HTTP缓存机制 HTTP 协议通常应用于分布式信息系统,所谓分布式信息系统,是指以计算机网络为基础,将系统的数据与功能分别布置在不同的地方,然后再通过网络将数据与功能连接的信息系统。由于系统需要处理大量的…

世界杯期间我使用Python生成二维码“为中国队辟谣”

二维码介绍 二维码本质上,就是一段字符串,我们可以把任意字符串,制作成一个二维码图片。在生活中,使用二维码更多的是一个URL(网址)。 引入 qrcode库 qrocde库网址:qrcode PyPI 进入网址之后…

[附源码]计算机毕业设计贷款申请审核管理系统论文Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

本地字节序与网络字节序的相互转换(IP地址、端口号)

一般数据在内存中是按照字节存储的,存储的方式分为大端和小端。在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式。因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! 如果当前主机…

年产3000吨原味奶糖生产车间工艺设计

目 录 摘 要 I Abstract II 1绪论 1 1.1原味奶糖的概念及其功能特性 1 1.2国外原味奶糖的现状 3 1.3我国的原味奶糖现状及开发前景 4 1.4原味奶糖原料的生产情况 4 2工艺流程设计 6 2.1 原味奶糖的生产工艺 6 2.1.1 溶糖与混合 7 2.1.2 连续真空薄膜熬糖 7 2.1.3 混合 8 2.1.4 …

阿里国际站-唤端技术的探索与演进

作者:黄昭 阿里ICBU买家增长技术团队 近几年用户增长领域APP推广发展迅猛,而唤端就是其中的重要技术。通过唤端拉新/促活不仅能能够将三方流量规模做大,同时二方流量也能有效利用,给网站不断带来商机,本文将为大家详细…

UE4虚幻引擎关于事件分发器的使用!

UE4虚幻引擎关于事件分发器的使用! 首先,这次就讲一下,事件分发器,在UI,Pawn,子actor如何进行事件传递! 首先!我们如果要使用事件分发器的原因是什么! 第一&#xff0…

Django(11):后台管理系统

目录后台管理系统基本操作管理平台的基本操作数据模型的注册和管理数据模型管理后台管理系统操作Xadmin管理平台Django内置了自己的后台管理系统,包含数据库管理和良好的界面。后台管理系统基本操作 在我们前面创建Django项目时,默认会有许多应用组件&a…