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) 外,还输入相机参数 §,遵循条件生成策略。
  • 作用:
    • 通过让生成器知晓渲染相机的位置,使目标视角能够影响场景的合成。
    • 在训练过程中,姿态条件化使生成器能够建模数据集中隐含的姿态依赖偏差,从而可靠地再现数据集中的图像分布。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构OJ】相交链表问题,求相交链表的相交第一个交点

题目如下(题目来源力扣): 个人解题思路: 运用双指针,第一次遍历先一起走,当一个走到尾时开始计数,等另一个指针也走到尾时记录下两个指针的路程差,同时比对两个指针指向的地址是否相…

【C语言】指针与数组的例题详解:深入分析与高级用法

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯题目一详细分析与解答代码逐步解析 💯进一步优化和拓展1. 指针与数组的关系2. 指针运算的注意事项3. 常见的错误和陷阱4. 拓展:指针操作的应用场…

【Java】ArrayList与LinkedList详解!!!

目录 一🌞、List 1🍅.什么是List? 2🍅.List中的常用方法 二🌞、ArrayList 1🍍.什么是ArrayList? 2🍍.ArrayList的实例化 3🍍.ArrayList的使用 4🍍.ArrayList的遍…

【SQL Server】华中农业大学空间数据库实验报告 实验六 视图

1.实验目的 通过课堂理论学习与实验课的实际操作,充分理解视图的相关概念,作用,以及特点,视图中定义的是对一个或多个基本表的查询语句,其本身并不保存数据,所有的数据都存储在数据库的表中,因…

javaweb-day01-html和css初识

html:超文本标记语言 CSS:层叠样式表 1.html实现新浪新闻页面 1.1 标题排版 效果图: 1.2 标题颜色样式 1.3 标签内颜色样式 1.4设置超链接 1.5 正文排版 1.6 页面布局–盒子 (1)盒子模型 (2)页面布局…

【Android】webview常用方法和使用

文章目录 前言一、常见用法二、基础属性webView的常用方法WebViewClient的常用方法WebChromeClient的常用方法WebSettings的相关方法 三、加载流程和事件回调四、webview和JS之间的互相调用总结 五、参考链接 前言 最近项目又用到了webview,在回顾复习一次webview相…

【微服务架构】Kubernetes与Docker在微服务架构中的最佳实践(详尽教程)

文章目录 什么是微服务架构Docker在微服务中的应用Docker基础Docker的核心组件 Docker在微服务中的优势 Kubernetes在微服务中的应用Kubernetes基础Kubernetes的核心组件 Kubernetes在微服务中的优势 Kubernetes与Docker的集成最佳实践容器化微服务服务发现与负载均衡自动化部署…

深入了解JDK动态代理

什么是JDK动态代理 (有动态代理,就有静态代理,参见:多线程03--静态代理模式_runnable接口静态代理模式-CSDN博客) JDK动态代理是Java提供的一种动态生成代理对象的机制,允许在运行时创建一个实现了指定接口…

C#基础56-60

56.字符数组x中存有任意一串字符;串中的所有小写字母改写成大写字母,如果是大写字母改为小写字母,其他字符不变。最后把已处理的字符串仍重新存入字符数组x中,最后调用函数把结果输出到控制台中。 57.求出100以上1000以内所有个位…

华为IPD流程管理体系L1至L5最佳实践-解读

该文档主要介绍了华为IPD流程管理体系,包括流程体系架构、流程框架实施方法、各业务流程框架示例以及相关案例等内容,旨在帮助企业建立高效、规范的流程管理体系,实现业务的持续优化和发展。具体内容如下: 1. 华为流程体系概述 -…

Edge浏览器保留数据,无损降级退回老版本+禁止更新教程(适用于Chrome)

3 个月前阿虚就已经写文章告警过大家,Chromium 内核的浏览器将在 127 以上版本开始限制仍在使用 Manifest V2 规范的扩展:https://mp.weixin.qq.com/s/v1gINxg5vMh86kdOOmqc6A 像是 IDM、油猴脚本管理器、uBblock 等扩展都会受到影响,后续将无…

DevOps引领数字化转型新趋势

DevOps帮助数字化转型 在数字化转型的大潮中,DevOps作为一种文化、运动和实践,已经成为推动企业快速适应市场变化、提高竞争力的关键因素。DevOps的核心在于打破开发(Development)和运维(Operations)之间的…

ctfshow

1,web21 Basic认证采用Base64加密方式,Base64解码字符串发现是 用户名:密码 的格式进行Base64编码。 密码shark63 2,web22 用 子域名扫描器 扫出flag.ctf.show拿到flag,但这个域名已经没了所以就直接交的官方提供的flag。 3,web23 这段PHP代码是一个简单…

从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中

文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…

数据结构与算法——1120——时间空间效率问题求边界值

目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 (1)-i (2)~i (3&#x…

爬虫与反爬-Ja3指纹风控(Just a moment...)处理方案及参数说明

概述:本文将针对 Ja3 指纹检测风控进行处理,举例了一个案例并使用两种不同的破解方案进行突破,同时深入了解指纹间不同字符所代表的含义 指纹检测背景: 1、每一个设备、软件都有独属于自己的设备信息、版本号、加密算法、椭圆算…

【JUC-JMM】Java Memory Model Java内存模型

Java内存模型--JMM 一、JMM是什么?二、Happens-Before原则三、JMM有什么用? 一、JMM是什么? JMM,全拼Java Memory Model,翻译过来就是Java内存模型。 那么,我们不禁思索,Java内存模型有什么用&…

SpringAI:Java 开发的智能新利器

一、SpringAI 简介 随着人工智能技术的飞速发展,越来越多的开发者开始探索如何将 AI 能力集成到现有的应用中来提升产品的智能化水平。Spring AI 正是为 Java 开发者提供的一款强大的 AI 框架,使得这一集成过程变得前所未有的简单和高效。 本文将深入探…

在Excel中处理不规范的日期格式数据并判断格式是否正确

有一个Excel表,录入的日期格式很混乱,有些看着差不多,但实际多一个空格少一个字符很难发现,希望的理想格式是 1980-01-01,10位,即:“YYYY-mm-dd”,实际上数据表中这样的格式都有 19…

【我在CSDN成长】我的五周年创作纪念日

感叹 五年的时光匆匆而过, 像一阵风,拂过岁月的湖面, 泛起层层涟漪,又悄然离去。 曾经的欢笑与泪水, 那些奋斗的日夜, 如同电影般在脑海中放映, 却已成为遥远的回忆。 五年,说长不长…