计算机视觉: 基于隐式BRDF自编码器的文生三维技术

论文链接: MATLABER: Material-Aware Text-to-3D via LAtent BRDF auto-EncodeR

背景

在这里插入图片描述

得益扩散模型和大量的text - image 成对的图片, 现在文生2D的模型已经比较成熟的框架和模型,主流的技术比如说stable diffusion 和 midjourney 以及工业领域runway 等。当2D技术日渐成熟之后,开发者的眼光逐渐转向了文生3D的领域,开创性的工作由DreamFusion提出的Relying on promising Score Distillation Sampling (SDS) 一文中提出SDS_loss,简单的来说其是一种优化3D表示的技术,通过向不同的方向去渲染图片生成,使得生成的图片更加的逼近真实的图片。



在这里插入图片描述

在Dream Dusion工作之后,又有几项突出性的工作提出:

  1. Magic3D: 第一个将DreanFusion生成模型的分辨率由64 提升至512 ,其大致可以分为两个阶段,第一个阶段用NERF , 第二个阶段将模型转成Mesh的格式再给其上色。
  2. Fantasia3D: 同时实现了一个更好的geometry 和现实纹理的生成
  3. ProlificDreamer: 通过优化SDS loss ,从而实现更加逼真的纹理效果。

但是上述的几种方法中,虽然都取得了不错的效果,但是在这些工作中材质的因素却鲜有人考虑,比如说dreamFusion 只考虑了光照的反射因素。而Fantasia3D虽然使用BRDF的材质进行建模,但是其优化的过程中使用的固定的enviroment map所以导致物体非常容易与环境的光照进行耦合。 而真实理想的环境下,我们应当期望不同的材质能与不同的环境做解耦从而形成更加逼真的真实环境下的3D模型。但是由于少有的文本-材料对数据集,目前仅有一些BRDF材料数据库,因此前人的工作在对材质的因素还是止步不前。



MATLABER

在这里插入图片描述

作者提出了一种隐式的BRDF自编码器去实现一个材质的prior。其工作原理大致如上图,首先作者是在前人公开的一个7维的BRDF材质的数据集上做训练,首先将数据通过一个Encoder得到一个隐式空间上的code然后再通过一个Decoder 得到了一个重建后的BRDF材质, 然后去计算重建的损失。除此之外,作者参考前人的工作通过线性插值的方法得到了一个平滑的latent space 记作Zn, 然后Zn通过一个Decoder-Encoder的结构可以恢复成Zn’ 其中添加了Cyclic Loss 和Smoothness Loss 以及初始的latent code 和 经过插值得到的smooth latent space 中间的KL散度的损失。将上述的这四个Loss通过加权平均加起来之后就是整个BRDF自编码器的损失了。可以看到经过优化后的模型恢复的BRDF的材质跟原始的材质还是比较像的。

在这里插入图片描述

通过上一节介绍的BRDF材质的自编码器训练好后,作者就将其整合到几何建模的3D-generation model (参考Fantasia3D工作)里。其整个pipeline,如上图,材质的MLP首先去预测latnt code Z然后通过前文训练好的Decoder去重塑一个7维的BRDF材质,在通过渲染管线把图片渲染出来,再通过将图片加上SDS loss 再去进行扩散的过程,去更新材质的MLP 以及几何建模里的参数,从而实现整个Pipeline。

在这里插入图片描述

为了解决材质与环境解耦的一些问题,在训练的过程中,作者提出了几个trick:

  • 使用了多个环境地图,人为的去创造多个反应光从而使得模型泛化能力增强
  • 训练过程中,不断的旋转环境光,使其模型多光照角度的解耦能力增加
  • SDS 损失去自适应的针对不同材质的变化
  • 添加材质损失的正则项,使得生成的BRDF材质更加的平滑


下面是几个demo,可以看到整个模型生成的3D模型对环境光的解耦能力还是十分真实的。
在这里插入图片描述


除此之外,由于材质的latent code 是一个十分平滑的空间,所以整个模型还可以通过对atent code 进行线性插值的方法去改变最终生成的结果,下面是几个例子可以将材质由黄金变成银,也可以将颜色进行改变。

在这里插入图片描述



整体来说,作者提出的模型基于几个trick相比于前人的工作效果还是很好的。作者在原文中从四个方面(1.3维物体和真实的物体是否能对齐 2. 外观是否真实 3. 外观是否细节 4. 材质与环境光的解耦能力)也做了量化对比实验,可以看到作者提出的模型相比于之前的模型在后面三个维度都是最高的。 Algnment 的不足,作者解释是因为stable diffusion不足导致的,是clip model因为其对文本的理解能力相比于Magic3D模型使用的text-iamge-diffusion model 更差,所以导致对齐的能力相比于Magic3D模型更差。

在这里插入图片描述

未来工作

  • 针对形状和外观能力对齐能力的优化
  • 更大的BRDF的数据库
  • 生成的模型与环境更好的解耦能力
  • 基于SDS loss的优化
  • 3D物体拓展到世界场景

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

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

相关文章

ElasticSearch环境准备

Elasticsearch 是一个基于 Apache Lucene™ 的开源搜索引擎。不仅仅是一个全文搜索引擎,它还是一个分布式的搜索和分析引擎,可扩展并能够实时处理大数据。以下是关于 Elasticsearch 的一些主要特点和说明: 1.实时分析:Elasticsear…

反爬虫机制与反爬虫技术(一)

反爬虫机制与反爬虫技术一 1、网络爬虫的法律与道德问题2、反爬虫机制与反爬虫技术2.1、User-Agent伪装2.2、代理IP2.3、请求频率控制2.4、动态页面处理2.5、验证码识别3、反爬虫案例:豆瓣电影Top250爬取3.1、爬取目标3.2、库(模块)简介3.3、翻页分析3.4、发送请求3.5、数据…

【Solidity】智能合约案例——①食品溯源合约

目录 一、合约源码分析: 二、合约整体流程: 1.部署合约 2.管理角色 3.食品信息管理 4.食品溯源管理 一、合约源码分析: Producer.sol:生产者角色的管理合约,功能为:添加新的生产者地址、移除生产者地址、判断角色地址…

基于支持向量机SVM和MLP多层感知神经网络的数据预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 一、支持向量机(SVM) 二、多层感知器(MLP) 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .…

vue3前端开发-flex布局篇

文章目录 1.传统布局与flex布局优缺点传统布局flex布局建议 2. flex布局原理2.1 布局原理 3. flex常见属性3.1 父项常见属性3.2 子项常见属性 4.案例实战(携程网首页) 1.传统布局与flex布局优缺点 传统布局 兼容性好布局繁琐局限性,不能再移动端很好的布局 flex布…

C++深入学习part_1

Linux下编译C程序 安装g命令:sudo apt install g 编译命令:$ g *.cc 或者 *.cpp -o fileName; hellworld 编译程序可以看到: namespace命名空间 首先,命名空间的提出是为了防止变量重名冲突而设置的。 浅浅试一下&#xff1…

漏洞复现-易思无人值守智能物流文件上传

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

STC89C51基础及项目第10天:LCD显示字符(非标协议外设)

1. 初识LCD1602(233.79) 非标协议外设 LCD1602显示 LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 1602 即 32 字符(16列两行) 引脚说明 第 1 脚: VSS 为电源地第 2 脚&#xff1…

Unity AI Sentis 基础教程

Unity AI Sentis基础教程 Unity AI Sentis基础教程Unity AI 内测资格申请Unity 项目Package Manager开始尝试模型下载识别图片完整代码代码搭载运行 射线绘画 URP(扩展)射线绘画脚本脚本搭载效果 Sentis 是 AI 模型的本地推理引擎,它利用最终…

3D孪生场景搭建:模拟仿真

前面几期文章介绍如何使用NSDT 编辑器 搭建3D应用场景,本期介绍下孪生场景中一个一个非常重要的功能:模拟仿真。 1、什么是模拟仿真 模拟仿真是一种用于描述、分析和模拟现实世界中系统、过程或事件的计算机模型和程序。仿真通过输入各种参数和条件&am…

【iOS】——仿写计算器

文章目录 一、实现思路二、实现方法三、判错处理 一、实现思路 先搭建好MVC框架,接着在各个模块中实现各自的任务。首先要创建好UI界面,接着根据UI界面的元素来与数据进行互动,其中创建UI界面需要用到Masonry布局。 二、实现方法 在calcu…

Maven(4)-利用intellij idea创建maven 多模块项目

本文通过一个例子来介绍利用maven来构建一个多模块的jave项目。开发工具:intellij idea。 一、项目结构 multi-module-project是主工程,里面包含两个模块(Module): web-app是应用层,用于界面展示&#xff…

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

特殊笔记_10/7

安装node到第4.1就行(安装npm的淘宝镜像) Node.js安装与配置(详细步骤)_nodejs安装及环境配置_LI4836的博客-CSDN博客 安装vscode 下载组件: 点击第五个 Auto Close Tag:自动闭合标签 Chinese (Simpli…

MQ - 36 云原生:业界MQ的计算存储分离的设计与实现

文章目录 导图概述什么是存算分离架构必须是存算分离架构吗实现存算分离架构的技术思考如何选择合适的存储层引擎存储层:分区存储模型的设计计算层:弹性无状态的写入业界主流存算分离架构分析RocketMQ 5.0 架构分析Pulsar 存算架构分析总结导图 概述 结合云原生、Serverless…

JetBrains ToolBox修改应用安装位置

TooBox修改应用安装位置 1.关闭ToolBox 2.修改配置文件 找到配置文件所在位置 C:\Users\用户名\AppData\Local\JetBrains\Toolbox\.settings.json增加install_location字段 "install_location": "E:\\DevTool\\IDE",E:\DevTool\IDE可以改成自己想要的…

Springboot项目log4j与logback的Jar包冲突问题

异常信息关键词: SLF4J: Class path contains multiple SLF4J bindings. ERROR in ch.qos.logback.core.joran.spi.Interpreter24:14 - no applicable action for [properties], current ElementPath is [[configuration][properties]] 详细异常信息&#xff1a…

常见排序算法详解

目录 排序的相关概念 排序: 稳定性: 内部排序: 外部排序: 常见的排序: 常见排序算法的实现 插入排序: 基本思想: 直…

自学接口测试系列 —— 自动化测试用例设计基础!

一、接口测试思路总结 ❓首先我们在进行接口测试设计前思考一个问题:接口测试,测试的是什么? ❗我们必须要知道,接口测试的本质:是根据接口的参数,设计输入数据,验证接口的返回值。 那么接口…

day24-JS进阶(构造函数,new实例化,原型对象,对象原型,原型继承,原型链)

目录 构造函数 深入对象 创建对象三种方式 构造函数 new实例化执行过程(important!) 实例成员&静态成员 实例对象&实例成员 静态成员 内置构造函数 基本包装类型 Object Object.keys(obj)返回所有键组成的字符串数组 Object.values(obj)返回所有值组成的字…