计算机视觉: 基于隐式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工作之后,又有几项突出性的工作提出:
- Magic3D: 第一个将DreanFusion生成模型的分辨率由64 提升至512 ,其大致可以分为两个阶段,第一个阶段用NERF , 第二个阶段将模型转成Mesh的格式再给其上色。
- Fantasia3D: 同时实现了一个更好的geometry 和现实纹理的生成
- 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物体拓展到世界场景
相关文章:

计算机视觉: 基于隐式BRDF自编码器的文生三维技术
论文链接: MATLABER: Material-Aware Text-to-3D via LAtent BRDF auto-EncodeR 背景 得益扩散模型和大量的text - image 成对的图片, 现在文生2D的模型已经比较成熟的框架和模型,主流的技术比如说stable diffusion 和 midjourney 以及工业领域runway 等…...

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测
分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-BiLST…...

Java队列相关面试题
ArrayBlockingQueue 1、ArrayBlockingQueue是什么?它与LinkedList和LinkedBlockingQueue有何区别? ArrayBlockingQueue是一个基于数组的有界阻塞队列,可以在队列的两端进行插入和删除操作。 与LinkedList不同,ArrayBlockingQueu…...

水库大坝除险加固安全监测系统解决方案
一、系统背景 为贯彻落实《办公厅关于切实加强水库除险加固和运行管护工作的通知》(〔2021〕8号)要求,完成“十四五”小型病险水库除险加固、雨水情测报和大坝安全监测设施建设任务,规范项目管理,消除安全隐患…...

android native C++编程实现数据库加密sqlcipher
sqlcipher是sqlite的加版本,分为免费版和收费版。 这里研究的是开源的免费版 https://github.com/sqlcipher/sqlcipher Android码源默认提供了sqlite的native,jni和java版本,但没有提供sqlcipher,开发用到需要自己添加。 sqlc…...

第五节 C++ 循环结构(算法)
文章目录 前言介绍1. for 语句1.1 语法结构1.2 语法流程的执行过程1.2.1 案例 1:循环的正序输入和倒序输入1.2.2 案例2 : 求1~n的平方数1.2.3 案例 3: 求输入a和b,求a~b区间数. 1.3 for 循环案例练习1.3.1 求最大值与最小值1.3.2 计算奇数和和偶数和1.3.3 计算平均气温与最高气…...

接口与抽象类的区别
a、抽象类不能被实例化只能被继承;b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;d、一个子类继承一个抽象类,则子类…...

短视频账号矩阵系统源码saas===独立部署
前言: 短视频账号矩阵是指在不同的短视频平台上,一个个人或企业所拥有的账号数量和分布情况。由于不同的短视频平台受众人群和内容类型等因素不同,因此拥有更多账号可以在更广泛的受众中传播内容,提高曝光度和流量。短视频账号矩阵…...

香港专用服务器拥有良好的国际网络连接
香港服务器在多个领域有着广泛的应用。无论是电子商务、金融交易、游戏娱乐还是社交媒体等,香港服务器都能够提供高效稳定的服务。对于跨境电商来说,搭建香港服务器可以更好地满足亚洲用户的购物需求;对于金融机构来说,香港服务器…...

IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电
IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电 深圳锐科达SV-7043VP 20W网络有源吸顶喇叭。该设备配备了10/100M以太网接口,内置了高品质扬声器,通过内置的功放和喇叭输出,可提供高达20W的音效功率。SV-7043VP作为SIP系统的播放终端&#…...

基于Keil a51汇编 —— 程序模板文件以及规则
程序模板文件 下面的代码模板包含有关如何编写自己的程序集模块的指南和提示。此模板文件模板。A51 在文件夹 \C51\ASM 中提供。 $NOMOD51 ; 禁用预定义的 8051 寄存器 #include <reg52.h> // 包含头文件; ;根据需要更改小写名称。 ;该汇编模板让你…...

案例研究 | 玉湖冷链基于JumpServer实现管理安全一体化
玉湖冷链(中国)有限公司(以下简称为玉湖冷链)是玉湖集团旗下的冷链食品供应链企业。依托自有的国际高标数智化冷链园区产业集群,玉湖冷链提供一站式国内外代采、仓干配物流解决方案、全链路创新金融支持、高品质生活办…...

JavaEE初阶学习:HTTP协议和Tomcat
1. HTTP协议 HTTP协议是一个非常广泛的应用层协议~~ 应用层协议 —> TCP IP 协议栈 应用层 —> 关注数据怎么使用~ 传输层 —> 关注的是整个传输的起点和终点 网络层 —> 地址管理 路由选择 数据链路层 —> 相邻节点之间的数据转发 物理层 —> 基础设置,硬…...

ASEMI整流桥GBU810参数,GBU810封装
编辑-Z GBU810参数描述: 型号:GBU810 最大直流反向电压VR:1000V 最大工作峰值反向电压VRWM:700V 最大平均正向电流IF:8A 非重复正向浪涌电流IFSM:200A 操作和储存温度范围TJ ,TSTG:-55 t…...

docker应用记录总结
一、前言 docker这类部署工具,久而久之不使用非常容易忘记,甚至连操作命令都容易忘记。网上也有比较全的docker使用教程。这里做一个记录总结,纯属是温故知新。 二、docker部署应用 1、docker印象 docker首先让我想到的是是虚拟化技术&…...

Jenkins 添加节点Node报错JNI error has occurred UnsupportedClassVersionError
节点日志 报错信息如下 Error: A JNI error has occurred, please check your installation and try again Exception in thread “main” java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime…...

swift ui 布局 ——Stack(HStack、VStack、ZStack)
一、HStack 水平布局 将其子视图排列在水平线上 import Foundation import SwiftUI struct MyView: View {var body: some View {HStack{Text("text")Image("yuyin").resizable().frame(width: 102,height: 80)}} } 默认子视图是水平中心对齐的,可添加al…...

淘宝天猫商品评论数据接口,淘宝天猫商品评论API接口,淘宝API
淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL,可以向淘宝服务器发起HTTP请求,获取商品评论数据。接口返回的数据一般为JSON格式,包含了商品的各种评价信息。获取到商品评论数据后,可以对其进行处理…...

C# Onnx GFPGAN GPEN-BFR 人像修复
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;namespace 图像修复 {public partial class Form1 : For…...

ubuntu安装依赖包时显示需要先安装其所需要的各种安装包)apt-get源有问题
最近在崭新的ubuntu上安装g以及一些其他的依赖与工具时遇到以下报错情况: 依赖环环相扣,手动无法解决。 总结: 出现需要很多依赖项的情况是因为软件源中没有可用的依赖项或者依赖项版本不正确。 其实在Ubuntu系统中,使用sudo…...

C/C++之自定义类型(结构体,位段,联合体,枚举)详解
个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 个人主页:点我进入主页 …...

HBase 表如何按照某表字段排序后顺序存储的方法?
首先需要明白HBase表的排序规则: (1)rowkey排序(字典排序)——升序 (2)Column排序(字典排序)——升序 (3)时间戳排序——降序 rowkey 字典序排序…...

webrtc用clang编译支持h264,支持msvc调用库
webrtc遇到困扰: 如果msvc编译,ffmpeg编译失败,需要替换ffmpeg库。如果用clang编译,vs或qt调用dll又存在崩溃。 经过反复尝试找到解决方法: 一、编译 1、编译参数 //我得环境配置 set DEPOT_TOOLS_UPDATE0 set DEP…...

迁移学习是什么?
迁移学习(Transfer Learning)是一种机器学习方法,它的主要思想是将已经在一个任务上学到的知识迁移到另一个相关或不相关的任务上,以提高目标任务的性能。迁移学习的核心概念是,模型可以通过先前学到的知识来更好地解决…...

哈希的应用--位图和布隆过滤器
哈希的应用--位图和布隆过滤器 位图1. 位图概念2. 位图在实际中的应用3. 位图相似应用给定100亿个整数,如何找到只出现一次的整数?1个文件100亿int,1G内存,如何找到不超过2次的所有整数 布隆过滤器1. 布隆过滤器的提出2. 布隆过滤…...

mac M2芯片在使用Android studio 编译问题bad cpu type in executable android
由于mac的intel芯片的一些指令集没有同步在M1 M2芯片上所以需要做兼容 打开控制台(通过访达 - 应用程序 - 实用工具 - 终端 ) 输入 softwareupdate --install-rosetta 之后在输入 A 就可以了。 原产考地址:硬核!在 M1 芯…...

M4Singer ubuntu 22.04 4060ti16g ModuleNotFoundError: No module named ‘gradio‘
故障 Traceback (most recent call last): File "inference/m4singer/gradio/infer.py", line 4, in <module> import gradio as gr ModuleNotFoundError: No module named gradio 解决 (venv3712) (base) yeqiangyeqiang-Default-string:~/Downloa…...

postman 密码rsa加密登录-2加密密码
上一篇讲了获取公钥,将环境准备好之后,在登录接口的Pre-request Scrip 里,使用公钥进行加密后在正常登录。本文采用的方案是使用第三方模块forge.js来实现加密。 1、环境准备好,系统git 和node都OK。下载forge.js git clone htt…...

如何去图片水印?这些方法解决你的问题
当我们希望更新自己的头像时,经常会发现网上有许多精彩的图片,但它们通常带有水印,使我们无法轻松使用这些照片。这个情况大家应该都有遇到过吧?那么,如何去除图片上的水印呢?接下来,我们将分享…...

Qt通过正则表达式筛选出字符串中的手机号
需求 用户需要聊天记录中含有11位的手机号码进行提醒的功能,所以需要在收到聊天消息后匹配查看是否存在手机号。如果找到然后提醒。 分析 主要的需求可以拆分为两点: 筛选出字符串里面的数字字符。通过正则匹配数字字符是否是11位手机号码。 一开始没…...