EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks 学习笔记

1 Contributions

  1. 混合显式-隐式网络架构:提出了一种 Tri-plane 的3D表征方法,结合显式体素网格与隐式解码器的优点

    • 速度快,内存效率高;
    • 支持高分辨率生成,保持3D表征的灵活性和表达能力。
    • 与纯显式或隐式方法相比,既解决了查询速度慢的问题,又能更好地扩展到高分辨率。
  2. 使用超分辨率模块 Super Resolution :解决高分辨率训练和渲染的计算限制。

  3. 双鉴别器 dual-discrimination:在生成器的渲染结果与最终输出之间引入双重判别器,增强了神经渲染与最终输出之间的一致性,避免了视图不一致的问题。即将超分辨率之前的图像和超分辨率之后的拼在一起鉴别。

  4. 姿态条件生成 pose-based conditioning to the generator

    • 引入基于姿态的条件生成方法,使生成器在推理时能输出与多视图一致的图像。

    • 同时,能够很好建模训练数据中与姿态相关的属性分布(如人脸表情的变化)。

  5. 特征生成与神经渲染的解耦

    • 利用2D GAN(如StyleGAN2)的特征生成器,结合3D神经体积渲染,提高效率和效果。

2 Related Works

image-20241117093034122
  • 隐式表示(NeRF):这些方法需要大型的全连接网络,每次查询都需要完整的网络计算,速度慢
  • 显式表示(Voxels):评估速度快,但内存开销大,难以扩展到高分辨率或复杂场景。
  • 混合显式-隐式表示:结合了以上两种方法的优点,提供了计算和内存效率更高的架构。局部隐式表示和混合架构通过在显式存储的基础上,使用隐式解码器来聚合特征,从而实现高效的渲染。

3 Method

image-20241117094416393

Tri-plane特征的生成

  • 在GAN设置中,Tri-plane特征是由2D卷积的StyleGAN2骨干网络生成的
  • 每个Tri-plane包含32个通道,共96个通道。

神经渲染和超分辨率模块

  • 在GAN设置中,神经渲染器从每个32通道的Tri-plane中聚合特征,预测出给定相机姿态下的32通道特征图像
  • 随后,通过一个“超分辨率”模块对这些神经渲染的原始图像进行上采样和细化。

判别器

  • 生成的图像由稍微修改的StyleGAN2判别器进行评判。

训练策略

  • 加速训练
    • 首先,以较低的神经渲染分辨率(64×64)进行训练;
    • 然后,在完整的神经渲染分辨率(128×128)上进行短时间的微调。
  • 正则化:额外的实验发现,对密度场的光滑度进行正则化有助于减少3D形状中的伪影
3.1 Tri-plane混合3D表示

作者提出了一种新的 Tri-plane 混合显式-隐式3D表示方法

  • Tri-plane 表示:将3D空间的特征投影到三个轴对齐的正交平面(XY、XZ、YZ平面),每个平面具有尺寸为 N×N×C,其中 N 是分辨率,C 是通道数。
  • 特征查询和聚合:对于任意的3D点,通过在三个平面上进行双线性插值获取特征,然后将这些特征向量相加,得到聚合的3D特征。
  • 轻量级解码器:使用小型的MLP解码器将聚合的特征转换为颜色和密度信息。
  • 体渲染:通过神经体渲染生成最终的图像。

优势

  • 高效性:相比于完全隐式的表示,减少了计算成本,因为解码器更小,主要的计算集中在显式存储的特征上。
  • 表现力:尽管表示紧凑,但仍具有足够的表达能力,能够捕捉复杂的细节。
  • 扩展性:特征平面的存储需求为 O(N²),而体素网格为 O(N³),因此在相同内存条件下,Tri-plane表示可以使用更高的分辨率。
3.2 CNN生成器骨干网络与渲染

Tri-plane 特征的生成

  • 在GAN设置中,Tri-plane 表示的特征是由StyleGAN2 CNN生成器生成的。
  • 随机潜码和相机参数首先通过一个映射网络处理,得到中间潜码,用于调制一个单独的合成网络的卷积核。

输出形状的修改

修改了StyleGAN2骨干网络的输出形状:不再生成三通道的RGB图像,而是生成一个256×256×96的特征图像。这个特征图像在通道维度上拆分并重塑,形成三个32通道的平面(对应于Tri-plane表示)。

特征采样与解码

  • 从Tri-plane中采样特征,通过求和进行聚合
  • 使用一个轻量级解码器处理聚合后的特征:解码器是一个具有单隐藏层(64个单元)和softplus激活函数的MLP

混合表示的查询与输出

  • 这个混合表示可以对连续坐标进行查询,输出一个标量密度σ和一个32通道的特征
  • 然后,这些输出被神经体积渲染器处理,将3D特征体积投影到2D特征图像上。

体积渲染

  • 体积渲染使用了与NeRF中相同的方法实现。
  • 特征图像的生成:在GAN框架中,体积渲染生成的是特征图像,而不是RGB图像。因为特征图像包含了更多信息,可以有效地用于后续的图像空间细化。
3.3 超分辨率 Super Resolution

虽然Tri-plane表示相比之前的方法在计算效率上有显著提升,但在高分辨率下直接进行训练或渲染仍然太慢。因此,作者选择在中等分辨率(如128×128)下执行体渲染,然后依靠图像空间的卷积操作将神经渲染结果上采样到最终的图像尺寸(256×256或512×512)。

超分辨率模块的设计:

  • 结构:由两个包含StyleGAN2调制卷积层的模块组成,这些卷积层对32通道的特征图像 I F I_F IF 进行上采样和细化,生成最终的RGB图像 I R G B + I^+_{RGB} IRGB+
  • 细节:禁用了每像素的噪声输入,以减少纹理粘连现象(texture sticking)。重用了骨干网络的映射网络来对这些卷积层进行调制。
3.4 双重判别 Dual Discrimination

在标准的2D GAN训练中,生成的图像通常由2D卷积判别器进行评判。作者使用了StyleGAN2的判别器,并进行了两个修改:

  1. 双重判别:解决先前工作中出现的多视图不一致问题。

    • 将神经渲染的特征图像 I F I_F IF 的前三个特征通道解释为低分辨率的RGB图像 I R G B I_{RGB} IRGB

    • I R G B I_{RGB} IRGB 双线性上采样到与超分辨率图像 I R G B + I^+_{RGB} IRGB+ 相同的分辨率。

    • 将上采样后的 I R G B I_{RGB} IRGB I R G B + I^+_{RGB} IRGB+ 进行通道上的连接,形成一个六通道的图像输入判别器(见图4)。

    • 对每个真实图像,生成一个适当模糊的副本,与原图像连接,形成六通道输入

  2. 使判别器感知相机姿态:按照StyleGAN2-ADA中的条件生成策略,将渲染相机的内参和外参矩阵(统称为 §)作为条件标签传递给判别器。

    • 作用:这一条件输入为判别器提供了额外的信息,引导生成器学习正确的3D先验
3.5 姿态条件化 pose-based conditioning

摄像机姿态与其他属性(例如面部表情)存在相关性。如果直接处理,可能会导致视图不一致的结果。例如,摄像机相对于人脸的角度与微笑可能存在相关性。

生成器的姿态条件化(Generator Pose Conditioning)

  • 方法:在提供给生成器的映射网络时,除了潜码向量 (z) 外,还输入相机参数 §,遵循条件生成策略。
  • 作用:
    • 通过让生成器知晓渲染相机的位置,使目标视角能够影响场景的合成。
    • 在训练过程中,姿态条件化使生成器能够建模数据集中隐含的姿态依赖偏差,从而可靠地再现数据集中的图像分布。

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

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

相关文章

Android——连接MySQL(Java版)

Android——连接MySQL(Java版) 目录: Android——连接MySQL(Java版)一、JDBC1、什么是JDBC2、载入JDBC3、创建JDBC的工具类 二、使用数据库 一、JDBC 1、什么是JDBC JDBC全称Java Database Connectivity,译为Java语言连接数据库,是sun公司制…

c++中操作数据库的常用函数

在C中操作数据库,尤其是MySQL数据库,主要通过MySQL提供的C API或MySQL Connector/C库来实现。这些库提供了一系列的函数,使得开发者能够在C应用程序中执行数据库的连接、查询、更新、删除等操作。以下是C中操作MySQL数据库的一些常用函数&…

Java 获取本机 IP 地址的方法

文章目录 一、使用 InetAddress.getLocalHost二、遍历网络接口获取 在 Java 编程中,若有本机的 IP 地址的需求,小编来展示一下方法: 一、使用 InetAddress.getLocalHost 一是最基本的获取本机 IP 地址的方式。 示例代码: impo…

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处: 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

C++《二叉搜索树》

在初阶数据结构中我学习了树基础的概念以及了解了顺序结构的二叉树——堆和链式结构二叉树该如何实现,那么接下来我们将进一步的学习二叉树,在此会先后学习到二叉搜索树、AVL树、红黑树;通过这些的学习将让我们更易于理解后面set、map、哈希等…

使用go实现流式输出

流式输出的深度剖析 之前一直在调用openai的key,只是照着文档进行流式调用,也只知其确是流式与api有所不同,而未成体系深究其实现原理。 就以openai的官方流式输出为切入。 概述 流式输出(Streaming Output)是 HTT…

使用VisualStudio编写C++程序输出helloWorld

文章目录 1. C简介1.1 历史背景1.2 特点1.3 应用领域 2. 操作过程和代码2.1 打开Visual Studio(默认你下载了C的相关文件)2.2 创建新项目2.3 输入名字,创建2.4 右击源文件->添加->新建项2.5 命名好,进行添加2.6 输入代码2.7 输出结果 3. 总结 1. C…

万能的无人机锁定目标投放程序

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

LayaBox1.8.4实现UV滚动

实现思路: 在片元着色器采样时,增加一个随时间变化的偏移值,由于uv是一个二维向量所以加的偏移值也需要一个二维向量。注意:在Laya的 shader中除了0,输入其它数字必须输入带有小数的数字,否则报错 。 &quo…

Next.js- App Router 概览

#题引:我认为跟着官方文档学习不会走歪路 一:App Router与Page Router 在 v13 版本中,Next.js 引入了一个基于 React 服务器组件 构建的新的 App Router,而在这之前,Next.js 使用的是Page Router。 目录结构 pages …

Android studio与JS交互

文章目录 前言一、html二、使用步骤1.2.AS 总结 前言 最近在使用Android Studio的WebView,有些功能要AS与JS交互。 一、html html文件 <!DOCTYPE html> <html> <!--javascript--> <head><meta charset"utf-8"><title>Carson…

【LeetCode面试150】——228汇总区间

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…

CPU性能优化--采集调用栈

我们可能经常会遇到程序中热点函数被多个调用者调用的情况&#xff0c;这样就需要知道哪个函数调用foo的次数最多&#xff0c;应用程序的库函数出现在热点处。要理解为什么特定函数会呈现为热点&#xff0c;我们需要知道程序的控制流图中的哪条路径是最热的。 Intel VTune prof…

简单测试下faiss 检索速度

在NLP的应用中&#xff0c;经常需要用到对向量的搜索&#xff0c;如果向量的数量级非常大&#xff0c;比如1千万&#xff0c;甚至上亿条&#xff0c;普通的方式就满足不了生产需要了&#xff0c;falcebook开源的faiss框架能够解决“海量向量搜索”的问题。faiss是为稠密向量提供…

milvus es

ES 与 Milvus 结合实现高效文档搜索的实战指南 原文链接 目录 背景介绍场景与效果概述架构对比与问题分析Milvus 向量搜索架构ES Milvus 搜索架构详细流程解析Milvus 搜索配置详解ES 搜索策略与 DSL 配置结果合并与排序策略总结与未来优化 1. 背景介绍 随着团队和公司的发…

Flutter 设计模式全面解析:抽象工厂

设计模式作为软件开发中的经典解决方案&#xff0c;在 Flutter 的开发中也能为我们提供强大的架构支持。本文来介绍一下如何在 Flutter 中来实现抽象工厂设计模式&#xff0c;以及如何创建一系列相关或依赖对象并优雅地管理它们之间的复杂依赖关系。 日常开发中我们也能经常看…

AWS IAM 及其功能

IAM 代表身份和访问管理&#xff0c;可帮助控制谁可以进入云、访问 AWS 资源以及进入后可以做什么。 身份&#xff1a; IAM 帮助管理可以与 AWS 资源交互的身份&#xff08;如用户名或服务帐户&#xff09;。 访问&#xff1a;它决定每个身份可以在 AWS 服务上执行哪些操作&am…

SpringBoot集成Minio实现上传凭证、分片上传、秒传和断点续传

总体概述 Spring Boot整合Minio后&#xff0c;前端的文件上传有两种方式&#xff1a; 1.文件上传到后端&#xff0c;由后端保存到Minio 这种方式好处是完全由后端集中管理&#xff0c;可以很好的做到、身份验证、权限控制、文件与处理等&#xff0c;并且可以做一些额外的业务逻…

『 Linux 』网络层 - IP协议 (二)

文章目录 路由NAT技术分片与组装分片的组装IP协议分片的短板 路由 通常情况路由器具备了一个非常重要的功能,即构建子网; 同时路由器需要实现跨网络通信,说明路由器必须存在两个或以上的IP地址,通常在路由器中可以看到几个接口,分别是一个WAN口和几个LAN口; WAN口IP被称为公网I…

深度学习实战图像缺陷修复

这里写目录标题 概述1. 图像缺陷修复的研究背景2. 传统图像缺陷修复方法的局限性(1) 基于纹理合成的方法(2) 基于偏微分方程&#xff08;PDE&#xff09;的方法 3. 深度学习在图像缺陷修复中的兴起(1) 深度学习的基本思路(2) 深度学习方法的优势(3) 关键技术的引入 4. 深度学习…