https://user-images.githubusercontent.com/128572637/fe5a05d3-33af-41c4-a5c0-e74485797f08
https://user-images.githubusercontent.com/128572637/691a1c2d-0c55-4b2e-8dd6-82fddc2685a6
https://user-images.githubusercontent.com/128572637/99ab7e61-eb81-4b75-8138-3321b6633d78
https://user-images.githubusercontent.com/128572637/405fe77e-25c0-410f-b463-e1e3ded2f065
请拉取最新代码以提高性能!!
Q1: 关于使用法线图和遮罩图作为稳定扩散模型输入的分析
答案:我们最初的假设是法线图和遮罩图分别代表形状的局部和轮廓信息,可以有助于几何学习。此外,我们观察到法线图的数值范围被归一化为(-1, 1),这与潜空间扩散所需的数据范围一致。我们的 实证研究验证了这一假设。进一步支持我们假设的是,在用于训练稳定扩散的LAION-5B数据集中存在法线图(参见网站以检索LAION-5B中的法线数据)。因此,法线数据不被视为稳定扩散的分布外(OOD)输入。为了解决早期学习中粗糙的几何问题,我们直接使用64 × 64 × 4(法线,遮罩)图像作为潜代码,受到Latent-NeRF的启发,以实现更好的收敛。然而,在世界坐标系中不使用VAE编码的法线图可能会导致与VAE训练的潜空间数据分布的不一致。这种不一致可能导致生成的几何偏离文本描述。为了解决这个问题,我们通过随机旋转当前视图渲染的法线图来进行数据增强。这种方法使法线图的分布更接近潜空间数据的分布。我们实验性地观察到它提高了生成几何与文本描述的一致性。随着学习的进展,渲染512 × 512 × 3的高分辨率法线图以捕捉更精细的几何细节变得至关重要,我们选择在后期阶段仅使用法线图。这种策略在几何优化过程中实现了精度和效率的平衡。
Q2: 解耦表示的假设验证分析
答案:之前的方法(例如DreamFusion和Magic3D)将几何和外观生成结合在一起,遵循NeRF。我们采用解耦表示主要是因为生成表面几何和外观的问题性质不同。事实上,当处理从多视图图像中恢复表面几何时,明确考虑表面建模的方法(例如VolSDF,nvdiffrec等)表现更好;我们的解耦表示享有类似于这些方法的优势。解耦表示还使我们能够在外观建模中加入BRDF材料表示,通过BRDF物理先验实现更好地逼真渲染。
Q3: Fantasia3D可以直接调优用户给定的网格吗?
答案:可以,Fantasia3D可以接收用户给定的任何网格并使用我们的方法进行用户引导生成进行调优。它还可以自然地与3D生成方法如shape-e和point-e接口。总之,Fantasia3D可以基于用户给定的低质量网格或椭球生成高度详细和高保真的3D内容。
Q4: 使用官方配置文件时,为什么在使用4或更少的GPU时无法复制相同的结果?
答案:官方配置通常在8个GPU下使用。补充材料中提出的采样算法有助于外观和几何建模中的全球一致性,这需要大批量尺寸。在使用较少的GPU时,总批量大小显著减小,这可能导致无法在官方配置中复制相同的结果。一种可能的解决方案是在配置文件中手动增加批量大小。
Q5: 外观建模中的策略0、 1和2是如何制定的?
答案:策略权重是一个超参数。在DreamFusion中使用的参数,即$\omega(t) =\sigma ^{2}$,是一个随着时间步t增加而增加的方程。这可能适用于体渲染,但不适用于表面渲染。在实践中,我发现使用原始版本的权重会使渲染图像过饱和且缺乏细节和真实感。这可能是由于大t的权重过大引起的。因此,我希望采用随着t增加逐渐减少的权重,所以得到了策略0。至于策略1的提出,我观察到在某些情况下,使用策略0可以产生更逼真的外观,但经常会出现奇怪的颜色。因此,我希望切换到更合适的权重。我随即意识到得分函数本质上是一个指向目标分布的方向梯度,并且它可以随估计噪声转换,所以我提出了策略1,即
s(z_{t};t) =-\frac{1}{\sigma _{t}}\varepsilon(z_{t};t),
其中$s$是得分函数。在实践中,我观察到它可以有效缓解在与时间步范围[0.02, 0.98]结合使用时出现的奇怪颜色问题。然而,在某些情况下,使用策略1可能会导致不真实的结果,因为小t的权重过大,导致向目标分布的小步,始终处于分布外(OOD)状态。因此,提出了策略2来结合策略0和策略1的优点。
Q6: 如何使生成结果更加多样化?
答案:与基于Nerf的体积渲染不同,直接使用表面渲染生成3D资产可以实现多样化。您只需要在配置文件中更改参数即可实现。例如,不同的"sdf_init_shape_scale","translation_y","camera_random_jitter","fovy_range","negative_text”等可以带来不同的结果。
Q7: Fantasia3D能否生成没有过饱和和过平滑的逼真外观? 回答:是的,可以。单独使用原始的SDS损失结合消极提示和Fantasia3D中提出的策略2,就足以解决过度饱和和过度平滑的问题。Sweetdreamer中的DMTet画廊的外观是使用Fantasia3D中的外观建模代码生成的。你可以看到,所有的结果都高度详细,并且没有过度饱和和过度平滑的问题。我认为关键在于解耦表示以及采用了消极提示和策略2。推荐的消极提示是“影子,过度饱和,低质量,不现实”。推荐的积极提示是“单反相机拍摄的...”。
问题8:官方代码和threestudio重现版本之间有什么区别?
回答:在几何建模方面,官方代码具有更强的泛化能力,更稳定的训练过程和更平滑的几何形状。在外观建模方面,官方代码没有过度饱和和过度平滑的问题,并且具有目前最先进的文本到纹理生成性能,如问题7所述。
考虑到参数调优可能需要一些经验,请告诉我你想要生成什么样的对象?请在问题区随意发言。我会花一些时间实现一些需求,并更新相应的配置文件,以方便你的重现。
首先,使用这个网站将gif转换为视频,包括几何或外观,并将其上传到画廊。写下生成对象的文本,性能,几何建模的四面体的分辨率,以及外观建模采用的策略。
随后,在configs
目录下上传配置文件。如果你要上传用户引导生成的文件,指导网格也应上传到data
目录下。文件的命名规则如下:
对于零样本几何建模的文件:
{文本关键词}_geometry_zero_shot_{gpu数量}_gpu.json
对于用户引导几何建模的文件:
{文本关键词}_geometry_user_guided_{gpu数量}_gpu.json
对于外观建模的文件:
{文本关键词}_appearance_strategy{采用的策略}_{gpu数量}_gpu.json
我们提供了两种安装环境的选择。
(选项1)使用requirements.txt文件逐个安装所有包。由于某些包的复杂性,可能会失败。
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html pip install -r requirements.txt
(选项2)使用Docker镜像在Ubuntu系统下快速部署环境。
docker pull registry.cn-guangzhou.aliyuncs.com/baopin/fantasia3d:1.0
(可选)由于网络延迟,该Docker镜像中未安装xformers包。创建Docker容器后手动安装,以加速几何和外观建模的训练。
pip install git+https://github.com/facebookresearch/xformers.git@main#egg=xformers
环境成功部署后,克隆Fantasia3D的库并开始。
git clone https://github.com/Gorilla-Lab-SCUT/Fantasia3D.git cd Fantasia3D
论文中的所有结果都使用8块3090 GPU生成。我们不能保证少于8块GPU可以达到相同的效果。
# 多GPU训练 ... # 使用8块GPU进行几何建模 python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/car_geometry.json # 使用4块GPU进行几何建模 python3 -m torch.distributed.launch --nproc_per_node=4 train.py --config configs/car_geometry.json # 使用8块GPU进行外观建模 python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/car_appearance_strategy0.json # 使用4块GPU进行外观建模 python3 -m torch.distributed.launch --nproc_per_node=4 train.py --config configs/car_appearance_strategy0.json ... # 单GPU训练(只在菠萝上测试)。 # 几何建模。在3090 GPU上大约需要15分钟。 python3 train.py --config configs/pineapple_geometry_single_gpu.json # 外观建模。在3090 GPU上大约需要15分钟。 python3 train.py --config configs/pineapple_appearance_strategy0_single_gpu.json
# 多GPU训练 ... # 使用8块GPU进行几何建模 python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/Gundam_geometry.json # 使用4块GPU进行几何建模 python3 -m torch.distributed.launch --nproc_per_node=4 train.py --config configs/Gundam_geometry.json # 使用8块GPU进行外观建模 python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/Gundam_appearance.json # 使用4块GPU进行外观建模 python3 -m torch.distributed.launch --nproc_per_node=4 train.py --config configs/Gundam_appearance.json ... # 单GPU训练 # 几何建模(未测试) python3 train.py --config configs/Gundam_geometry.json # 外观建模(未测试) python3 train.py --config configs/Gundam_appearance.json
(两者) 训练更长时间。 训练更长时间可能有助于细节的提高。你可以通过设置参数"iter"来延长训练时间。
(两者) 更大的批量大小。 更大的批量大小可以帮助更快地收敛。相应的参数是"batch"。
(两者) 尝试不同的种子。 不同的种子可以带来多样的结果。
(两者) 缩放对象。 增加初始化对象在视野=45屏幕中的比例可以增强几何和外观建模的质量。对于几何建模,它可以获得更多的局部几何细节。对于外观建模,这种方法可以减少出现饱和或奇怪颜色的概率,因为它减少了图像中背景颜色的比例。我们发现,如果背景颜色的比例太高,容易导致饱和和奇怪的颜色。
(几何建模) 提供目标形状的比例先验。 你可以将默认的半径为1的球体缩放为椭球体。例如,如果你想生成“由奶酪制成的车”,可以使椭球体在z轴上的半径更大。
"mode": "geometry_modeling", "sdf_init_shape": "ellipsoid", "sdf_init_shape_scale": [0.56, 0.56, 0.84]
有些情况椭球体不能提供比例先验,例如生成某些动物时,使用椭球体初始化容易导致生成的动物有多个脚。可使用以下命令检查:
python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/elephant_geometry_fail_multi_face.json
相反,你可以使用四足动物的草图形状作为比例先验来生成任何你想要的动物形状。
python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/elephant_geometry_succeed.json
在其他情况中,如生 成类似人类的形体,可以使用人类草图形状。
python3 -m torch.distributed.launch --nproc_per_node=8 train.py --config configs/Gundam_geometry.json
(几何建模) 增加早期阶段的迭代次数。 早期阶段对于创造一个粗略且正确的形状非常关键。后期阶段只注重获得更精细的几何细节,所以整体形状不会有显著变化。如果你发现几何形状的轮廓不符合文本描述,可以增加参数"coarse_iter"的次数。
(几何建模) 使用更高的四面体分辨率。 在对网格面的数量要求不高的情况下,我推荐使用128的DMTet分辨率,以在质量和生成速度之间取得平衡。当使用128或更低分辨率时,生成速度显著加快。更高的分辨率能带来更多的局部几何细节。你可以通过将参数"dmtet_grid"的值修改为128或256来轻松改变分辨率。如果你发现在使用256分辨率时网格快速消失或分散,将SDS损失的指导权重从默认的100减少到50。据我的经验,单个GPU适合使用128分辨率而不是256。如果你想在256分辨率下获得高细节模型,多GPU训练是必要的。此外,对于明显具有方向性的物体,如人头雕像,多GPU效果比单GPU要好得多。顺便提一下,使用梯度累积技术可能可以使单个GPU达到多GPU的效果,但我还没有测试过。
(几何建模) 在早期阶段使用不同的时间步长范围。 我们通常在早期阶段使用时间步长范围[0.02,0.5]。但在某些情况下,如果你想基于初始化形状“生长”更多部件,可能无法生成所有部件。例如,文本“一个骑马的宇航员”可能无法在使用[0.02, 0.5]范围内“生长”宇航员部分,因为较低的时间步长对显著变形贡献较少。为了解决这个问题,我们建议使用较高的范围,例如[0.4, 0.6]。你可以尝试不同的范围并在问题中发布你的发现。
(几何建模) 旋转物体。 根据实际情况旋转物体可以缓解janus问题或帮助网络寻找模式。例如,在生成人头雕像时,将初始化的椭球体绕x轴旋转一些角度,以匹配人物后脑勺有一定曲率的情况。
(几何建模) 微调输入网格。 在用户引导生成任务下,如果你对输入网格的轮廓满意,只想增加几何细节,可以将参数“coarse_iter”设置为400。此设置将直接进入几何建模的后期阶段,以加强输入形状的局部几何细节。
(外观建模) 采用不同策略。 我们通过设置参数“sds_weight_strategy”提供三种策略(0 或 1 或 2)来优化外观。策略0会有更强的光影变化,表现出更逼真的最终外观。策略1或策略2的最终外观会更平滑、更舒适。如果目标外观过于简单,例如“一个细节丰富的西奥多罗斯·科洛科特罗尼斯石膏像”、“一个站立的大象”和“米开朗基罗风格的雕像正在看手机新闻的狗狗”,使用策略0可能会导致外观过饱和和颜色奇怪。在这种情况下,策略1或策略2比策略0能生成更自然的颜色。
策略0可以按以下方式使用:
"sds_weight_strategy": 0, "early_time_step_range": [0.02, 0.98], "late_time_step_range": [0.02, 0.5]
或
"sds_weight_strategy": 0, "early_time_step_range": [0.02, 0.98], "late_time_step_range": [0.02, 0.98]
策略1可以按以下方式使用:
"sds_weight_strategy": 1, "early_time_step_range": [0.02, 0.98], "late_time_step_range": [0.02, 0.7]
或
"sds_weight_strategy": 1, "early_time_step_range": [0.02, 0.98], "late_time_step_range": [0.02, 0.98]
策略2可以按以下方式使用:
"sds_weight_strategy": 2, "early_time_step_range": [0.02, 0.98], "late_time_step_range": [0.02, 0.98]
(外观建模) 使用不同的HDR环境贴图。 学习PBR材料是一个不适定问题。如果材料和光照一起学,会增加学习的难度。因此,我们使用固定的HDR光来优化外观。我们注意到,亮度分布均匀的HDR贴图(如多云天)有利于外观颜色的均匀性。一些不均匀的亮度分布可能会产生更逼真的效果(未经测试)。
(外观建模) 使用一些附加提示。 使用一些附加提示,例如“一个单反相机拍摄的 {你的文本},黑色背景”,可以在大多数情况下提高外观的真实性(但不是所有情况)。
(外观建模) 添加负面提示。 设置适当的负面提示可以提高外观建模中的视觉质量。
你可以在Google drive 下载并观看一些演示的训练过程。 更多演示请参见这里
https://user-images.githubusercontent.com/128572637/e3e8bb82-6be0-42d0-9da3-1e59664354dd
https://user-images.githubusercontent.com/128572637/856c12bf-f100-47fc-a22c-80f123bd0a6d
https://user-images.githubusercontent.com/128572637/5872edbf-f87f-4dfe-9f71-f3941b84b8d7
https://user-images.githubusercontent.com/128572637/17ce275c-26bc-482e-ab61-a61f442de458
https://user-images.githubusercontent.com/128572637/a0d6fe70-b055-44a9-a34d-1449672dca7f
https://user-images.githubusercontent.com/128572637/ed0c303c-7554-4589-a1f5-56c9c1916aef
https://user-images.githubusercontent.com/128572637/c9867d8e-8e61-4a09-afd2-5599d6a85074
https://user-images.githubusercontent.com/128572637/01b1cc2c-5c5f-478a-83d0-1dd0ae2ee9e2
https://user-images.githubusercontent.com/128572637/0a909afb-e18c-4450-8ac8-35d50ced754a
https://user-images.githubusercontent.com/128572637/dcc5c159-fc3e-4eb8-9017-72153196f5b4
https://user-images.githubusercontent.com/128572637/af266a61-afd4-451b-b4b8-89e77e96233e
https://user-images.githubusercontent.com/128572637/c0a09f43-c07f-43e9-ab9f-c49aa3bc3e2c
https://user-images.githubusercontent.com/128572637/0071b97a-93ce-4332-9f80-a3297b54f8c3
https://user-images.githubusercontent.com/128572637/27d2bce3-f126-4f91-9bcd-1199563618e8
https://user-images.githubusercontent.com/128572637/4c3e3783-2297-4b52-b67d-3c5cff4db4f4
https://user-images.githubusercontent.com/128572637/5d8f7b7f-141d-4800-8772-8fc132522390
https://user-images.githubusercontent.com/128572637/3e23c5f1-31d8-49a8-9013-123a6e97ac3b
https://user-images.githubusercontent.com/128572637/162adc7d-a416-49e5-8dde-73590119b1a9
https://user-images.githubusercontent.com/128572637/2b20a978-df20-4150-b272-5dac58d64908
@InProceedings{chen2023fantasia3d,
author={Chen, Rui and Chen, Yongwei and Jiao, Ningxin and Jia, Kui},
title={Fantasia3D: Disentangling Geometry and Appearance for High-quality Text-to-3D Content Creation},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month={October},
year={2023},
pages={22246-22256}
}
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循 环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
用于可扩展和多功能 3D 生成的结构化 3D 潜在表示
TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。
10 节课教你开启构建 AI 代理所需的一切知识
AI Agents for Beginners 是一个专为初学者打造的课程项目,提供 10 节课程,涵盖构建 AI 代理的必备知识,支持多种语言,包含规划设计、工具使用、多代理等丰富内容,助您快速入门 AI 代理领域。
AI Excel全自动制表工具
AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。
基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。
UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制 、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS),能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。
开源且先进的大规模视频生成模型项目
Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。
全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表
爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。
一款强大的视觉语言模型,支持图像和视频输入
Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号