【IJCAI】CostFormer即插即用的MVS高效代价体聚合Transformer,FaceChain团队出品

一、论文题目:

CostFormer: Cost Transformer for Cost Aggregation in Multi-view Stereo,https://arxiv.org/abs/2305.10320

二、论文简介:

        多视角立体是三维重建的一种重要实现方式,该方式会从一系列同一场景但不同视角的二维影像中重建该场景的三维信息;近几年,深度学习已经广泛应用于基于学习的多视角立体,比如开山之作MVSNET及其后续的改进CasMVSNet,其核心是源像素和参考像素的匹配,而代价体聚合又是其中的关键步骤;相比于卷积神经网络,Transformer是一种基于自注意力机制的深度结构,其全局的注意力机制可以克服卷积神经网络有限的局部感受野问题,因此近两年已有方法把Transformer应用到多视角立体上,比如TransMVSNet把Transformer用于提取图像特征的特征金字塔网络,但在只采用卷积的代价体聚合上,仍然会由于卷积的缺陷而产生错误的匹配,因此如何把Transformer用于代价体聚合成为一个新的改进方向,相比于图像特征,代价体多了一个深度的维度,在设计自注意力机制的时候不仅需要像图像特征那样考虑空间维度,同时也要做到深度感知,但同时由于自注意力机制指数级别增长的复杂度,且代价体各个维度的值都比较高,直接把全局自注意力机制应用于高维度的代价体,很容易引起显存的耗尽以及推理时间的大幅增长。

       在此背景下,我们提出一种基于代价体Transformer的多视角立体三维重建方法,该方法设计了一种高效的Transformer,即CostFormer改善了卷积神经网络代价体聚合的缺陷,从而进一步改善整体重建的效果;CostFormer做到深度感知的同时也克服了全局自注意力机制指数级别增长复杂度带来的显存的耗尽以及推理时间的大幅增长。CostFormer是一种可即插即用于当前基于卷积神经网络的多视角立体方法。

三、方法:

1.)Overview:

按照已有的多视角立体网络搭建起基础结构,一般包括通过金字塔网络提取多层级的金字塔特征,可微的warping,代价体构建,代价体聚合正则,以及深度或视差回归;基于PatchMatchNetCostFormer结构如下:

2.)RDACT:

其中RDACT整体结构图如下图,由基于窗口的深度感知Transformer层(DATL)和深度感知的移位Transformer层(DASTL)以及重嵌入代价层(REC)堆叠而成

假定嵌入前的代价体C0,其通道数为G,通过深度感知的块嵌入层后,完成对对空间尺寸进行降采样并保持深度,假定嵌入后的代价体通道数为E。一般而言,深度感知的块嵌入层由3D卷积和LN组成;那么由第k层的DATL和DASTL对第k-1层的结果进行处理得到:

我们提出一种深度感知的窗口,该窗口从2维的空间窗口扩展而来,沿着空间和深度坐标,该窗口的大小为hs x ws x ds;假设一个嵌入后的代价体块宽,高,深分别为。该窗口滑动过整个代价体块,把这个代价体块切割成个小块,每个小块可以视作Transformer的token。假设其中的一个小块,其中G为特征通道数;那么Q KV由下式得到:

                    

其中是投影矩阵,Q, K和V都属于,那么在局部3维窗口内的深度感知自注意力1(DA-SA1)表示如下:

其中是由Q,K,V进行reshape而来。深度和空间感知的相对位置偏置B1

那么由多头深度感知注意力机制1和LN构成的DATL处理如下:

同理在局部深度维度轴线上的深度感知自注意力2(DA-SA2)的表示如下:

其中亦由Q,K,V reshape而来。深度感知的相对位置偏置B2;那么由多头深度感知自注意力机制1和2以及LN构成的DATL处理如下:

     

深度感知的相对位置偏置B1和B2都有沿着深度的维度,且在该维度上范围。注意力机制后是一个由两层全连接层,GELU激活函数组成的MLP模块,DATL接下来的处理如下:

                             

相比于全局的自注意力机制,这些深度感知的局部注意力机制大幅降低了计算复杂度和耗时,使得自注意力在高分辨率下计算成为可能,但由于这些固定位置的局部窗口相互之间没有交集,仍不能有效克服卷积神经网络受限感受野的问题,因此需要进一步通过移位让这些局部窗口相互间进行交互;在下一层级,这些窗口会沿着高,宽和深度轴进行移位,具体移位为,参照之前没移位的情况,新的深度感知自注意力机制将在这些移位后的窗口内进行计算,具体处理过程如下:

      

                           

其中DAS-MSA1为移位的多头深度感知自注意力1,DAS-MSA2为移位的多头深度感知自注意力2。

在注意力计算后,的特征通道数也为E,我们需要通过REC把它恢复到G,再和C0进行残差连接,得到RDACT的最终结果:

                     

一般而言,重嵌入代价层是一个输出通道数为G的3维卷积;特别的,如果E=G,那么重嵌入代价层就是保持层:

                                         

3.)RRT:

RRT整体结构图如下图:

聚合后的代价体将进一步进行深度回归,参照RDACT,我们把深度视作特征数,提出残差回归Transformer

          

               

其中是第k个回归Transformer层,是第k个移位回归Transformer层;这两种Transformer层都只在空间窗口上进行计算,是非深度感知的。RER是恢复深度信息的重嵌入层,通常情况下它是一个输出维度为D的二维矩阵,如果嵌入维度为D,那么该层也等同于保持层。

损失函数:

Final loss combines with the losses of all iterations at all stages and the loss from the final refinement module:

四、实验结果:

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

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

相关文章

c++算法学习笔记 (10) 位运算

1.求n的二进制位表示中第k位是几&#xff1a; #include <iostream> using namespace std; int main() {int n 10;for (int i 3; i > 0; i--){ // 求n的第i位cout << ((n >> i) & 1) << " ";} // 输出1 0 1 0return 0; } 2.lowbit…

解析JS加密解密中的生成器构造

前言 之前JS解密的客户&#xff0c;有一部分代码里是有生成器构造出来代码&#xff0c;一些基础比较薄弱的客户以及技术就看起来比较费劲看不懂了&#xff0c;这里特意写一篇文章为这部分客户服务。尽量言简意赅&#xff0c;以下是示例代码&#xff1a; function YV(YD) {ret…

【动态规划】【 数位dp】2827. 范围中美丽整数的数目

本文涉及知识点 数位dp 动态规划汇总 LeetCode2827. 范围中美丽整数的数目 给你正整数 low &#xff0c;high 和 k 。 如果一个数满足以下两个条件&#xff0c;那么它是 美丽的 &#xff1a; 偶数数位的数目与奇数数位的数目相同。 这个整数可以被 k 整除。 请你返回范围 [l…

仿懂车帝的二手车交易平台功能介绍

二手车交易平台app是一款功能丰富的二手车交易平台&#xff0c;以下是其主要功能介绍&#xff1a; 二手车信息展示&#xff1a;APP首页展示各类二手车信息&#xff0c;包括车型、品牌、价格等&#xff0c;用户可以轻松浏览并选择自己感兴趣的车辆。搜索与筛选功能&#xff1a;…

Ethereum, BSC, Polygon, Arbitrum, Base, OPBNB 链打符文代码

Ethereum, BSC, Polygon, Arbitrum, Base, OPBNB 代码创建了一个 Web3 实例,并根据配置文件中的 RPC URL 和链 ID 连接到区块链。 3. 接下来,代码定义了一些变量,如发送者钱包地址、发送者私钥、接收者钱包地址和输入消息。 4. `UpdateBalance` 函数用于获取发送者钱包…

哈希技术解析:从哈希函数到哈希桶迭代器的全面指南

文章目录 引言一、哈希表与哈希函数1、哈希表的基本原理2、哈希函数的作用与特点3、哈希冲突的处理方法 二、哈希桶及其迭代器1、 哈希桶a.定义哈希桶结构b.哈希函数c.哈希桶的插入、查找、删除 2、 哈希桶的迭代器a.类型定义与成员变量b.构造函数c.解引用与比较操作d.递增操作…

Liunx进程间通信

进程间通信 进程间通信进程间通信的基本概念进程间通信的目的 管道匿名管道进程池 命名管道 system V进程间通信system V进程间通信基本概念system V共享内存共享内存和管道的对比 system V 信号量信号量同步和互斥 进程间通信 进程间通信的基本概念 进程间通信就是在不同进程…

6-LINUX-- C 程序的编译与调试

一.环境搭建 1.gcc的安装 1>.切换到管理员模式 sudo su ----> 输入密码 2>.apt install gcc //C语言的编译环境 3>.apt install g //c编译环境的搭建 4>.install update //软件升级 2.gcc分步编译链接 &#xff08;1&#xff09;预编译 gcc -E…

计算机生物科技在基因编辑中的应用及其前景

一、引言 基因编辑&#xff0c;作为一种能够精准修改生物体基因组的技术&#xff0c;近年来受到了广泛的关注。 而计算机生物科技作为连接计算机科学与生物学的桥梁&#xff0c;为基因编辑技术的快速发展提供了强大的支持。通过利用计算机算法和数据分析方法&#xff0c;研究人…

Dashe Media全球新闻稿发布协助您实现传播目标-海外媒体宣发

亚太区新闻稿发布网络 Dashe Media 是唯一一家于亚太区拥有专有记者网络和网上新闻媒体发布网络的全球新闻通讯社 Dashe Media 在该地区的 26 个国家拥有 200,000 名记者和编辑数据库&#xff0c;涵盖 500 个新闻类别、68,000 个新闻媒体和 1,500 个在线新闻媒体合作伙伴&…

合并两个 Git 仓库,保存所有提交记录

将两个 Git 代码库合并成一个同时保留修改记录的过程&#xff0c;可以通过几个步骤完成。 这里提供一种常见的方法&#xff0c;使用git remote和git merge命令来实现。 假设场景 代码库A&#xff1a;原始代码库&#xff0c;希望将另一个代码库合并到这个库中。代码库B&#…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)

可以进行页面下拉操作并显示刷新动效的容器组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 从API version 11开始&#xff0c;Refresh子组件会跟随手势下拉而下移…

HarmonyOS 通知意图

之前的文章 我们讲了 harmonyos 中的 基础和进度条通知 那么 今天 我们来说说 任何给通知添加意图 通知意图 简单说 就是 当我们点击某个通知 如下图 然后 就会拉起某个 应用 就例如说 我们某个微信好友发消息给我们 我们 点击系统通知 可以直接跳到你们的聊天界面 好 回到…

JavaScript中的继承方式详细解析

什么是继承 继承是面向对象编程中的一个重要概念&#xff0c;它指的是一个对象&#xff08;或类&#xff09;可以获得另一个对象&#xff08;或类&#xff09;的属性和方法。在继承中&#xff0c;被继承的对象通常称为父类&#xff08;或基类、超类&#xff09;&#xff0c;继…

(css)vue 自定义背景 can‘t resolve

(css)vue 自定义背景 can’t resolve 旧写法&#xff1a; background-image: url(/assets/images/step-bg.jpg);background-size: 100% 100%; 新写法&#xff1a; background-image: url(~/assets/images/step-bg.jpg);background-size: 100% 100%; 解决参考&#xff1a;https…

深度学习PyTorch 之 transformer-中文多分类

transformer的原理部分在前面基本已经介绍完了&#xff0c;接下来就是代码部分&#xff0c;因为transformer可以做的任务有很多&#xff0c;文本的分类、时序预测、NER、文本生成、翻译等&#xff0c;其相关代码也会有些不同&#xff0c;所以会分别进行介绍 但是对于不同的任务…

【RabbitMQ | 第七篇】RabbitMQ实现JSON、Map格式数据的发送与接收

文章目录 7.RabbitMQ实现JSON、Map格式数据的发送与接收7.1消息发送端7.1.1引入依赖7.1.2yml配置7.1.3RabbitMQConfig配置类——&#xff08;非常重要&#xff09;&#xff08;1&#xff09;创建交换器方法&#xff08;2&#xff09;创建队列方法&#xff08;3&#xff09;绑定…

代码随想录算法训练营第27天|93.复原IP地址、78.子集、90.子集二

目录 一、力扣93.复原IP地址1.1 题目1.2 思路1.3 代码1.4 总结 二、力扣78.子集2.1 题目2.2 思路2.3 代码2.4 总结 三、力扣90.子集二3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣93.复原IP地址 &#xff08;比较困难&#xff0c;做起来很吃力&#xff09; 1.1 题目 1.2 思路 …

【数据结构练习题】栈——1.括号匹配 2.逆波兰表达式求值 3.出栈入栈次序匹配 4.最小栈

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ 文件目录 前言1.括号匹配1.1问题描述1.2解题思路1.3画图解释1.4代码实现2.逆波兰表达式求值 2.1问题描述2.2解题思路2.3画图解释2.4代码解释3.出栈入栈次序匹配 3.1问题描述3.2思路分析3.3画图解释3.…

【No.13】蓝桥杯二分查找|整数二分|实数二分|跳石头|M次方根|分巧克力(C++)

二分查找算法 知识点 二分查找原理讲解在单调递增序列 a 中查找 x 或 x 的后继在单调递增序列 a 中查找 x 或 x 的前驱 二分查找算法讲解 枚举查找即顺序查找&#xff0c; 实现原理是逐个比较数组 a[0:n-1] 中的元素&#xff0c;直到找到元素 x 或搜索整个数组后确定 x 不在…