3D 生成重建006-3DFuse 形状引导一致性的文生3d的方法

news2025/1/15 16:46:56

3D生成重建006-3DFuse 形状引导一致性的文生3d的方法


文章目录

    • 0 论文介绍
    • 1 论文方法
      • 1.1 semantic code
      • 1.2 稀疏深度信息PointE
      • 1.3 lora部分
    • 2 效果

0 论文介绍

在004-DreamFusion and SJC 中dreamfusion提到将2D观测结果“提升”到3D世界的任务本质上是模糊的,并可能受益于更健壮的3D先验。这篇论文就是基于这个点出发,对文生3d进行拓展。这篇论文基于dreamfusion的思路,引入PointE的图生3d模型,生成一个初步的粗糙的点云,然后将稀疏的深度引导加入到扩散模型中,因为加入了更多的约束条件,所以进一步控制nerf往一个固定的方向去优化,这一定程度上能帮助缓解CFG过大问题,让模型可能不需要那么大的CFG系数。这个点是论文的核心点。另外设计的两个点一个就是类似gan inversion的思路,通过文本生成图像之后,去反优化text表示 e ∗ e^* e,这种做法有利于减少文本的歧义性。第三个点就是为了在风格上保持一致,论文在中间微调了一个lora层,在进行深度扩散的时候可以让生成的结果在风格上保持一致,这和第一点有点类似的效果,应该一定程度能让CFG系数不那么大,从而减轻过饱和过度光滑问题。值得一提的是,虽然引入了形状先验,但是他使用的稀疏的深度信息,但是依然不能存在Janus problem(多面体问题)。在使用形状引导这点他和同期的latent nerf是很接近的,换一种角度理解这跟通过文本给mesh着色也是很接近,只不过3dfuse的形状更加粗糙。
参考
论文资料链接3dfuse

1 论文方法

下面这个图是论文的整体结果图。整体上也是围绕前面的三点进行,只不过与介绍顺序不同。这张图最左边的部分,生成semantic code这部分约等于inversion操作。右上角绿色的部分包含一个形状先验,是通过PointE实现的。其中橙色方框中的LoRA layers是要根据左边生成的几张视图进行训练的,训练好之后,才会和深度信息一起跟扩散模型的Unet结果结合。右下角部分就是一个nerf场。
请添加图片描述

1.1 semantic code

这个部分基本上就是扩散模型中textual inversion论文来实现的。输入一个promt,扩散模型生成一张图像,然后基于生成的图像和输入的prompt进行反向优化得到更新的 e ∗ e^* e,公式原理如下 e ∗ = arg ⁡ min ⁡ e ∣ ∣ ϵ θ ( x t ^ , e ) − ϵ ∣ ∣ 2 2 e^*=\mathop{\arg\min}\limits_{e}||\epsilon_{\theta}(\hat{x_t},e)-\epsilon||_2^2 e=eargmin∣∣ϵθ(xt^,e)ϵ22
其中 x t ^ \hat{x_t} xt^表示对生成的图像添加噪声。
这个操作在其他3d生成算法中也有出现,比如realFusion和Chasing Consistency等,下面两个图中有体现。
请添加图片描述
请添加图片描述

1.2 稀疏深度信息PointE

pointE是openAi在大型的3d数据集上训练的一个点云扩散模型。效果虽然比较粗糙,但是能够提供一定的先验信息,他的升级版本是shapE,d都是很贵的模型。请添加图片描述

1.3 lora部分

LoRA在大模型很火热的今天,属于很重要的工具,因为动不动就去调整几百几千亿参数的大模型是很吃力的,LoRA就是一个很优秀的微调算法。参考链接lora
请添加图片描述

如上图,在原始 PLM (Pre-trained Language Model) 旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的intrinsic rank。训练的时候固定 PLM 的参数,只训练降维矩阵 与升维矩阵 ,而模型的输入输出维度不变,输出时将 与 PLM 的参数叠加。用随机高斯分布初始化 ,用 0 矩阵初始化 ,保证训练的开始此旁路矩阵依然是 0 矩阵。参考知乎

2 效果

可以看出来,还是存在确实细节和多面体问题,但是过饱和得到一定缓解。

3dfuse

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

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

相关文章

1810_spacemacs缺少evil-unimpaired以及evil-ediff安装失败解决

全部学习汇总: GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com) 安装的时候遇到evil-unimpaired找不到的问题,查了一下网络上很多人都遇到这样的问题,但是问题千奇八怪。更要命的可能是我遇到的提示跟…

【ARM AMBA5 CHI 入门 12.1 -- CHI 链路层详细介绍 】

文章目录 CHI 版本介绍1.1 CHI 链路层介绍1.1.1 Flit 切片介绍1.1.2 link layer credit(L-Credit)机制1.1.3 Channel1.1.4 Port1.1. RN Node 接口定义1.1.6 SN Node 接口定义1.2 Channel interface signals1.2.1 Request, REQ, channel1.2.2 Response, RSP, channel1.2.3 Snoop…

一个完整的初学者指南Django-part2

介绍 欢迎来到 Django 教程的第二部分!在上一课中,我们安装了项目所需要的一切软件,希望你们在学习这篇文章之前,安装了 Python 3.6,并且在虚拟环境中运行Django 1.11。因为,在本篇文章中,我们…

并购交易:埃克森美孚商谈以250美元/股的价格收购先锋自然资源

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,埃克森美孚(XOM)正在商谈以250美元/股的价格收购先锋自然资源(PXD)。 彭博社援引知情人士的消息报道称,一项全股票交易最早可能于周三宣布。按照每股250美元的价格计算,先锋…

【动态规划】198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

提示:努力生活,开心、快乐的一天 文章目录 198. 打家劫舍💡解题思路🤔遇到的问题💻代码实现🎯题目总结 213. 打家劫舍 II💡解题思路🤔遇到的问题💻代码实现🎯…

postman发送POST请求,模拟请求头界面的响应信息

postman发送POST请求 示例:微信公众平台创建用户标签接口,业务操作如下: 1、打开微信公众平台,微信扫码登录:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 同时,我也为大家准备了一份…

求二叉树节点的个数——后序遍历

之前我们已经学习了二叉树前中后序的遍历,在次基础上我们利用遍历来求二叉树的节点个数 利用变量来计数: int BinaryTreeSize(BTNode* root) {int size 0;if (root NULL){return 0;}else{size;}BinaryTreeSize(root->left);BinaryTreeSize(root-&…

Spring5应用之事务属性

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…

指针拔尖(2)(巩固提高,全网最牛,包会,看不懂带电脑来找我)

文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言 提示:本章是指针拔尖系列的终章,有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我…

【STM32单片机】防盗报警器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用按键、动态数码管、蜂鸣器、指示灯、热释电人体红外传感器等。 主要功能: 系统运行后,默认处于布防状态,D1指示灯…

Netty深入浅出Java网络编程学习笔记(三) 优化篇

目录 五、优化 1、拓展序列化算法 序列化接口 枚举实现类 修改原编解码器 2、参数调优 CONNECT_TIMEOUT_MILLIS 使用 源码分析 SO_BACKLOG 三次握手与连接队列 作用 默认值 TCP_NODELAY SO_SNDBUF & SO_RCVBUF ALLOCATOR 使用 ByteBufAllocator类型 RCVBUF_ALLOCATOR 3、RP…

2023.10.11

#include <iostream>using namespace std;class Sofa{ private:int price;int* size; public://无参构造Sofa(){}//有参构造Sofa(int p,int size):price(p),size(new int(size)){}//析构~Sofa(){delete size;}//拷贝构造Sofa(Sofa &other):price(other.price),size(n…

TensorFlow入门(二十、损失函数)

损失函数 损失函数用真实值与预测值的距离指导模型的收敛方向,是网络学习质量的关键。不管是什么样的网络结构,如果使用的损失函数不正确,最终训练出的模型一定是不正确的。常见的两类损失函数为:①均值平方差②交叉熵 均值平方差 均值平方差(Mean Squared Error,MSE),也称&qu…

[计算机网络基础]物理层详解

首先说明,基本的概述我还没写完,那部分虽然简单但是感觉要照顾到很多概念..... 以及本系列博客使用点模型并非iso模型,也并非tcp/IP模型,而是我们俗称的教学模型 也就是:物理层,数据链路层,网络层,传输层,应用层这五个,整个模型大多数是在教学中使用的,现实中基本不会这样子划…

spring容器ioc和di

spring ioc 容器的创建 BeanFactory 接口提供了一种高级配置机制&#xff0c;能够管理任何类型的对象&#xff0c;它是SpringIoC容器标准化超接口&#xff01; ApplicationContext 是 BeanFactory 的子接口。它扩展了以下功能&#xff1a; 更容易与 Spring 的 AOP 功能集成消…

K8S云计算系列-(3)

K8S Kubeadm案例实战 Kubeadm 是一个K8S部署工具&#xff0c;它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。 Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群&#xff0c;而不是之前的节点准备工作…

echarts仪表盘vue

<div class"ybptx" ref"btryzb"></div>mounted() {this.getBtData();},getBtData() {var chart this.$echarts.init(this.$refs.btryzb);var data_czzf 88;var option {series: [{name: 内层数据刻度,type: gauge,radius: 80%,min: 0,max: 1…

Selenium+Pytest自动化测试框架

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象&#xff0c;封装继承 一定的selenium基础——本篇不讲selenium&#xff0c;不会的可以自己去看selenium中文翻译网 测试框架简介 测试框架有什么优点呢&#xff1a; 代码复用率高&…

【安全】linux audit审计使用入门

文章目录 1 audit简介2 auditctl的使用2 audit配置和规则3 工作原理4 audit接口调用4.1 获取和修改配置4.2 获取和修改规则4.3 获取审计日志 5 audit存在的问题5.1 内核版本5.2 审计日志过多造成的缓存队列和磁盘问题5.2 容器环境下同一个命令的日志存在差异 6 参考文档 1 audi…

【gmail注册教程】手把手教你注册Google邮箱账号

手把手教你注册Google邮箱账号 写在前面&#xff1a; 要注意&#xff0c;注册Google邮箱必须要确保自己能够 科学上网&#xff0c;如果暂时做不到&#xff0c;请先进行相关学习。使用的手机号是大陆&#xff08;86&#xff09;的。 在保证自己能够科学上网后&#xff0c;在浏…