【ECCV 2022】《Transformers as Meta-learners for Implicit Neural Representations》

news2024/11/20 14:15:58

文章目录

  • 一、动机
  • 二、相关工作
  • 三、方法
  • 四、实验部分
  • 五、Does the INR Exploit Data Structures?
  • 六、结论

一、动机

\quad 与像素、体素和网格等离散数据表示相比,INRs不需要依赖于分辨率的二次或三次存储。它们的表示能力并不依赖于网格分辨率,而是依赖于神经网络的能力,神经网络可以捕获底层数据结构并减少表示的冗余,因此提供了一个紧凑(compact)而强大的连续(continuous)数据表示。

\quad 但是,INRs有以下几个挑战:1)如果每个INR都是独立地从随机初始化开始学习,那么优化可能会很慢;2)如果给定的观测值是稀疏的,并且没有强先验,学习到的INR不能很好地推广到不可见的坐标。

\quad 从高效构建INRs的角度出发,《Implicit neural representations with periodic activation functions》提出学习一个latent space,其中每一个INR可以被一个超网络的single vector解耦。可是,a single vector可能没有足够的能力捕捉复杂3D目标的细节。在重建时,single-vector modulated INRs最常用于表征局部,《Modulated periodic activations for generalizable local functional representations》。

\quad 这篇工作启发于《MetaSDF》、《Learned init》,他们使用meta-learning来学习INRs。这些工作无需基于网格的表征,在没有single-vector bottleneck的情况下,可以高效、精确地推断INR weight。但是the computation of higher-order derivatives和a learned fixed initialization使它们不够灵活。

\quad 因此,这篇文章提出使用Transformer作为INRs的hypernetwork。主要贡献如下:

  • 提出一个Transformer hypernetwork来推断INR的整体权重。
  • 对生成的INR结构进行了分析。

二、相关工作

\quad Hypernetworks for INRs. 根据给定的观测结果直接建立一个INR通常需要执行梯度下降步骤,这是低效的,并且不能很好地推广到稀疏观测结果中(这句话描述的是传统的INR)。解决这个缺点的一个常用方式是,为INRs学习一个latent space,其中,每个INR对应于一个可以被超网络解码的latent vector,这一类的工作有《Occupancy networks》、《DeepSDF》、《Implicit neural representations with periodic activation functions》、《Scene representation networks》。这样的方法的缺点是,一个single vector的表征能力是有限的,无法表征细节。为了解决这个问题,最近的许多工作通过重新访问离散表示,以混合方式定义表征来解决这个问题,但这样仍然对应于基于网格的表示,会受分辨率的限制。

\quad Meta-learning. 尽管MetaSDF和Learned Init已经展现出有希望的结果,但是他们只学习了一个fixed initialization,并且需要test-time optimization。这篇文章展示了用一个Transformer meta-learner来直接构建完整的INR是可行的,并且它比一个fixed initialization更灵活。

三、方法

\quad 在元学习中,目标是训练一个meta-learner从给定的观察结果中推断出目标网络f_θ的权值θ。一个典型的方法是MAML,初始化θ_0是一个可学习的组件,经过n个步骤对θ_0的更新,推断出 θ=θ_n。
在这里插入图片描述

\quad O是观测值(训练时输入)。上面的更新公式定义了一个从θ0到θn的计算图,如果计算图(具有高阶导数)是可微的,则可以将优化θn的梯度反向传播到θ0来训练这个元学习者。
\quad 这篇文章考虑一个更一般的元学习者类,其中它的可学习组件包含:1)A learnable initialization θ_0;2)A total number of update steps n;3)A step-specifific learnable update rule U。
在这里插入图片描述

\quad 对于这种formulation的meta-learner,作者发现可以自然地用一个Transformer架构来代替。如下所示,1)用一组可学习的tokens来代替θ_0;2)用L层Transformer来代替n个更新步骤;3)用带残差链接的Transformer来代替更新规则U。
在这里插入图片描述

\quad 本文方法的完整结构如下。除了data tokens外,初始化一些 Init. tokens用于学习 weight tokens。每个weight token其实就是一个列向量,每个weight token用一个单独的FC来转换为INR的weight。
在这里插入图片描述

\quad 但是,当θ的大小很大时,为权重矩阵中的每个列向量分配tokens可能效率很低。为了提高变压器元学习器的效率和可扩展性,作者提出了一种权重分组策略,它为精度和成本的权衡提供了控制
\quad 这个策略的核心想法是将一个权重矩阵中的列划分为一个个组,然后将每个权重token对应一个组。每个组其实是2个列。就是用一个列向量权重,生成INR权重的两列。此时,为了保证同一组的两列权重不同,这里又设置了一个可学习参数,用这个scale vector,使得由2生成的两个向量不相同。过程如下所示。
在这里插入图片描述

\quad 最后,为了防止最后的结果差异不太离谱,对每层权重使用L2归一化。
在这里插入图片描述

四、实验部分

\quad 在执行NVS任务时,本文的meta-learner的目标是,从给定的输入视图中有效地推断出INR,使得再给出几个输入视图时可以实现NVS。(不像《learn init》那样有meta-learning的过程)

\quad 像《learn init》那样使用ShapeNet数据集中的chairs、cars、lamps类别。对于每个类别,目标被划分为训练集和测试集。每个目标有25个views用于训练。在测试时,采样一个随机的输入视图来评估性能。(single view 重建任务)

\quad 将每一个input image输入时,首先对他们进行一个扩展。具体地做法是,将每一个像素点所在emitted ray的3D starting point,3D direction vector和RGB values拼接起来,构造一个9channels的 extended image。然后将这个extended image按照正常image的方式输入至ViT。

\quad 自适应采样来提高训练的稳定性。为了提高训练的稳定性,在第一次epoch时(一般保持稳定的话,保持第一次epoch训练的方向即可,目的就是有一个良好的初始化),作者提出了一个自适应采样的策略。其实这个技巧很简单,其实就是在第一次epoch中,当我们对像素位置进行采样以计算重建损失时,确保其中一半是从图像的前景中采样的。实现起来也很简单,因为ShapeNet的图像中背景是白色的,所以作者只需要挑选非白色像素即可。作者发现有了这个简单的采样策略后,训练变得更稳定了。

\quad 与《learn init》的对比如下,上面3个是《learn init》论文中的baseline。除了这篇论文的方法,其他方法还执行了test-time optimization,但尽管如此,本文方法的效果还是更好。

\quad 有了test-time optimization后(100 gradient steps),该篇文章的方法的性能,能够继续提升。定量和定性的结果如下所示。从中可以看出,即使没有测试时优化,Transformer meta-learner也可以从稀疏输入中构造一个不错的INR。
在这里插入图片描述
在这里插入图片描述

五、Does the INR Exploit Data Structures?

\quad INR的一个关键的潜在优势是,它们的表示能力并不依赖于网格分辨率,而是依赖于神经网络的容量,这使得它能够利用数据中的底层结构并减少表示冗余。为了探究该结构是否在INR中建模,作者将weight tokens的最后一层注意权重可视化到data tokens上。

\quad 作者将INR的不同layers的权重可视化如下。在可视化时,被关注的区域,才会显示input image。
在这里插入图片描述

\quad 从上图可以发现,INR的不同层关注着数据结构的不同部分。比如,第一层关注着鼻子和嘴巴,第二层关注着额头,第三层关注了整张脸。这样的观察表明,INR可能捕获数据结构。这与基于网格的离散表示不同,其中每个entry独立地代表一个像素,数据结构没有得到很好的利用。

六、结论

\quad 尽管以往的用于INRs的超网络工作大多是基于单矢量调制和高精度重建为一个全局INR函数,它们大多是通过基于梯度的元学习来实现的。这篇文章提出的Transformer hypernetwork可以在没有任何梯度步骤的情况下有效地向前构建一个INR,并且我们观察到在图像回归和视图合成任务中,它可以优于之前的基于梯度的元学习算法。

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

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

相关文章

《ChatGPT实操应用大全》探索无限可能

🗣️探索ChatGPT,开启无限可能🚀 文末有免费送书福利!!! ChatGPT是人类有史以来最伟大的发明。他能写作、绘画、翻译、看病、做菜、编程、数据分析、制作视频、解高等数学题…,他会的技能…

网站上https协议,nginx配置SSL,443端口

nginx配置ssl 要给自己的网站上ssl证书,使用https协议。首先你需要有证书文件,这个文件是你买的服务,买过之后别人会给你。 就是这样的文件: 然后你就把文件上传到服务器的一个位置,你记住这个位置,后面配…

树莓派3B+ PCB叠层设计

板子废了&#xff0c;用电磨切了下&#xff0c;看看是什么叠层。 由于有BCM43455 WIFI芯片&#xff0c;这个是0.3ball 0.4pitch&#xff0c;肯定是要用盲孔布线的。 然后根据这个切面看&#xff0c;板子是6层的&#xff0c;外层内层铜厚应该是一样的 1-2层介质特别薄竟然<1o…

unicloud云函数url化后,客户端通过url地址向云函数发送数据流并传递到云存储中

在不久前录制过这样一门课程&#xff0c;使用uniapp生态开发API接口&#xff0c;通过这套课程&#xff0c;你不需要后后端Java、Python、PHP等后端语言&#xff0c;你只需要用前端的知识就可以构建这样一套API接口&#xff0c;而且使用uniapp生态开发接口更简单高效&#xff0c…

共享单车停放(简单的struct结构运用)

本来不想写这题的&#xff0c;但是想想最近沉迷玩雨世界&#xff0c;班长又问我这题&#xff0c;就草草写了一下 代码如下&#xff1a; #include<stdio.h> #include<math.h> struct parking{int distance;int remain;int speed;int time;int jud; }parking[50]; …

2022年1月14日 Go生态洞察:Go 1.18 新教程探索

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

java+springboot停车场小区车库租赁预订系统ssm+jsp

该平台为客户和业主提供等信息服务平台的运营方&#xff0c;管理方&#xff0c;如何通过车库平台建立实现优化管理的方法提供参考。能够实现在一个相对广阔的地域内&#xff08;例如一座城市)的多个停车场的随意停车。管理平台会统一调度车位资源&#xff0c;自动进行交易结算。…

12月01日,每日信息差//阿里国际发布3款AI设计生态工具//美团买菜升级为“小象超市”//外国人永居证换新、6国游客免签来华

_灵感 &#x1f396; 阿里国际发布3款AI设计生态工具 &#x1f384; AITO问界系列11月交付新车18827辆 &#x1f30d; 美团买菜升级为“小象超市” &#x1f30b; 全球首个金融风控大模型国际标准出炉&#xff0c;由腾讯牵头制定 &#x1f381; 支付宝&#xff1a;支持外国人…

剪辑必备AI去水印神器,手把手教你轻松消除图片水印

当我们的剪辑制作过程中&#xff0c;前期需要准备图片或视频素材&#xff0c;水印往往成为了我们首要解决的难题。 幸运的是&#xff0c;今天我为大家介绍一款在线AI去水印神器--水印云。 水印云是一个的在线去除图片水印工具。仅需三步&#xff0c;即可使用强大的 AI 技术从图…

latex表格中内容过多如何换行【已解决】

最近在写论文的时候放了一个表格&#xff0c;但是表格看起来特别大&#xff0c;因为想让某些内容多的单元格完成换行操作 首先在main.tex引入makecell包 \usepackage{makecell} 然后回到表格找到你想换行的单元格&#xff0c;把\makecell{}加进去&#xff0c;然后在需要换行的…

人活着到底是为了什么?

​ 最近在思考一个问题&#xff0c;人活着到底是为了什么&#xff1f;活着的意义是什么&#xff1f; 每天朝九晚六&#xff0c;忙忙碌碌&#xff0c;如同行尸走肉一般&#xff0c;日复一日&#xff0c;年复一年的重复着同样的生活&#xff0c;到底是为了什么&#xff0c;能不…

Python面向对象练习

Python面向对象练习 class Enty:blood100name""atackvalue100team0domain[1] #1,land 2 airdef setTeam(self,team0):self.teamteamdef atack(self,Enty):if self.teamEnty.team:print("不能向盟军开火")self.info()passelse :# print(self.domain)ss…

7.3 Windows驱动开发:内核监视LoadImage映像回调

在笔者上一篇文章《内核注册并监控对象回调》介绍了如何运用ObRegisterCallbacks注册进程与线程回调&#xff0c;并通过该回调实现了拦截指定进行运行的效果&#xff0c;本章LyShark将带大家继续探索一个新的回调注册函数&#xff0c;PsSetLoadImageNotifyRoutine常用于注册Loa…

2023年第十二届数学建模国际赛小美赛A题太阳黑子预测求解分析

2023年第十二届数学建模国际赛小美赛 A题 太阳黑子预测 原题再现&#xff1a; 太阳黑子是太阳光球上的一种现象&#xff0c;表现为比周围区域暗的暂时斑点。它们是由抑制对流的磁通量浓度引起的表面温度降低区域。太阳黑子出现在活跃区域内&#xff0c;通常成对出现&#xff…

【VerilogVCS仿真_2023.11.15】

HDL&#xff1a;硬件描述语言&#xff0c;并发&#xff0c;时序RTL&#xff1a;寄存器传输级语言 Verilog和VHDL的区别&#xff1a;VHDL侧重于系统级描述——系统级设计人员所采用&#xff0c;Verilog侧重于模块行为的抽象描述——电路级设计人员 前端&#xff1a;系统级、算法…

[数据结构]深入浅出讲解二叉树-平衡二叉树-左右旋转

树是一种数据结构&#xff0c;单位为Node(节点)。不同于链表的直线排列&#xff0c;树呈现一种自上而下的分层排序规则。 树->数据结构&#xff1a; 单元为Node(节点)->当这样的节点多了 就可以关联出不同的形态 一个父节点有一个左子节点&#xff0c;有…

11.31链表,之前的数据结构(未完,饼)

根据输入序列建立二叉树 链表 回顾一下二分面积最小 一些性质题回顾 哈夫曼树构建 第十一周——哈夫曼树 5 1 2 2 5 9 37 桶排序 #include <iostream> #include <vector> #include <algorithm> #include<stack> #include<queue> #includ…

软件工程 - 第8章 面向对象建模 - 2 静态建模

静态建模&#xff08;类和对象建模&#xff09; 类和对象模型的基本模型元素有类、对象以及它们之间的关系。系统中的类和对象模型描述了系统的静态结构&#xff0c;在UML中用类图和对象图来表示。 类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、依赖、泛…

Linux MIPI 调试中常见的问题

一、概述 做嵌入式工作的小伙伴知道&#xff0c;有时候程序编写没有调试过程中费时&#xff0c;之间笔记里有 MIPI 摄像头驱动开发的过程&#xff0c;有需要的小伙伴可以参考&#xff1a;Linux RN6752 驱动编写。而我也是第一次琢磨 MIPI 协议&#xff0c;其中有很多不明白的地…

python之pyqt专栏10-键盘事件

需求 通过按键盘的上下左右&#xff0c;移动button的位置。 UI界面设计 代码 # 导入sys模块 import sysfrom PyQt6.QtCore import Qt # PyQt6.QtWidgets模块中导入QApplication, QWidget from PyQt6.QtWidgets import QApplication, QWidget# untitled模块中导入Ui_Form类 f…