
人工智能大模型预训练图形学媒体生成【免费下载链接】TRELLIS.2Native and Compact Structured Latents for 3D Generation项目地址https://gitcode.com/GitHub_Trending/tr/TRELLIS.2点击查看免费下载TRELLIS.2 是微软开源的大规模 3D 生成模型约 4B 参数核心创新是以 field-free 的稀疏体素结构O-Voxel替代传统的等值面场iso-surface field实现高质量、支持任意拓扑、带完整 PBR 材质的图像到 3DImage-to-3D生成。本文以仓库 README.md 为主线结合 example.py、setup.sh、train.py 与 data_toolkit/README.md 等源码与配置文件完整讲解环境安装、推理出图、数据预处理、SC-VAE 与 Flow 模型训练的全流程读者阅读后可以独立完成从一张图到可交付的 PBR GLB 资产以及从原始 3D 数据集到自训练模型的完整闭环。一、核心思想为什么需要 O-Voxel传统 3D 生成模型通常依赖占用场Occupancy Field或 SDF 等隐式场表示这类基于场的方案天然受限于水密网格watertight mesh难以表达衣服、树叶等开放表面、非流形几何以及内部封闭结构。TRELLIS.2 引入的O-Voxel表示从根上解决了这一问题详见 o-voxel/README.mdFlexible Dual Grid 几何表示通过求解增强的 QEF二次误差函数精确捕捉尖锐特征与开放边界不需要水密网格即可完成表面重建Volumetric PBR 属性在稀疏体素网格上原生对齐物理渲染属性Base Color、Metallic、Roughness、Opacity双向即时转换避免昂贵的 SDF 求值、flood-filling 与迭代优化Mesh ↔ O-Voxel 转换可在瞬间完成高效压缩支持自定义.vxz格式利用 Z-order / Hilbert 曲线编码紧凑存储稀疏体素结构生产就绪可直接将资产导出为带 UV 展开与纹理烘焙的.glb。在推理侧TRELLIS.2 采用稀疏结构 → 形状潜变量 → 纹理潜变量的三阶段流水线由 trellis2/pipelines/trellis2_image_to_3d.py 中的Trellis2ImageTo3DPipeline实现配合一个 16× 空间下采样的 Sparse 3D VAE将资产压缩进紧凑潜空间后交给原生 DiTvanilla DiT生成从而兼顾保真度与效率。二、四大核心特性1. 高质量、高分辨率与高效率4B 参数模型在原生 DiT 架构下生成高分辨率全纹理资产实测吞吐如下H100 GPU 测试数据来自 README.md分辨率总耗时*拆解Shape Mat512³~3s2s 1s1024³~17s10s 7s1536³~60s35s 25s*在 NVIDIA H100 GPU 上测试。2. 任意拓扑处理O-Voxel 突破等值面场的限制无需有损转换即可稳健处理复杂结构✅开放表面如服装、树叶✅非流形几何✅内部封闭结构3. 丰富的纹理建模除基础颜色外TRELLIS.2 建模任意表面属性包括Base Color、Roughness、Metallic、Opacity支持照片级渲染与透明效果。在管线源码中属性布局由pbr_attr_layout字典定义base_color占通道 0-3、metallic占通道 3-4、roughness占通道 4-5、alpha占通道 5-6参见 trellis2/pipelines/trellis2_image_to_3d.py。4. 极简数据处理数据处理流水线完全免渲染rendering-free、免优化optimization-free即时完成转换 10s单 CPU带纹理 Mesh → O-Voxel 100msCUDAO-Voxel → 带纹理 Mesh三、环境安装前置条件类别要求操作系统当前代码仅在Linux上测试硬件至少24GB 显存的 NVIDIA GPU已在 A100 / H100 上验证CUDA Toolkit需要用于编译部分扩展包推荐12.4环境管理推荐使用Conda管理依赖Python3.8 及以上setup.sh 新建环境默认使用 Python 3.10安装步骤git clone -b main https://github.com/microsoft/TRELLIS.2.git --recursive cd TRELLIS.2随后通过 setup.sh 一键创建 conda 环境并安装依赖. ./setup.sh --new-env --basic --flash-attn --nvdiffrast --nvdiffrec --cumesh --o-voxel --flexgemm运行前需要特别注意以下几点添加--new-env会创建名为trellis2的新 conda 环境如需使用已有环境请移除该标志。默认trellis2环境使用PyTorch 2.6.0 CUDA 12.4如需其他 CUDA 版本可去掉--new-env手动安装依赖。若安装了多个 CUDA Toolkit 版本运行前需设置CUDA_HOME指向正确版本例如export CUDA_HOME/usr/local/cuda-12.4。代码默认使用flash-attn注意力后端不支持 flash-attn 的 GPU如 V100可手动安装xformers并在运行前设置环境变量ATTN_BACKENDxformers。依赖较多、安装耗时较长如遇问题可按标志逐个安装或提交 issue。setup.sh的完整参数列表可通过. ./setup.sh --help查看Usage: setup.sh [OPTIONS] Options: -h, --help Display this help message --new-env Create a new conda environment --basic Install basic dependencies --flash-attn Install flash-attention --cumesh Install cumesh --o-voxel Install o-voxel --flexgemm Install flexgemm --nvdiffrast Install nvdiffrast --nvdiffrec Install nvdiffrec从 setup.sh 源码可以看到脚本还会自动检测平台nvidia-smi判定 CUDA、rocminfo判定 HIP并针对 ROCm 平台从源码编译 flash-attentionMI300 系列GPU_ARCHSgfx942--basic会安装 imageio、trimesh、transformers、gradio、utils3d、pillow-simd、kornia、timm 等核心依赖--o-voxel会把本仓库的o-voxel目录复制到临时目录后以--no-build-isolation方式安装。四、预训练权重预训练模型TRELLIS.2-4B托管在 Hugging Face模型卡片提供了详细说明模型参数量分辨率链接TRELLIS.2-4B40 亿512³ - 1536³Hugging Face: microsoft/TRELLIS.2-4B五、使用Image to 3D 生成1. 最小示例example.py 演示了如何用预训练模型生成 3D 资产完整流程如下import os os.environ[OPENCV_IO_ENABLE_OPENEXR] 1 os.environ[PYTORCH_CUDA_ALLOC_CONF] expandable_segments:True # Can save GPU memory import cv2 import imageio from PIL import Image import torch from trellis2.pipelines import Trellis2ImageTo3DPipeline from trellis2.utils import render_utils from trellis2.renderers import EnvMap import o_voxel # 1. Setup Environment Map envmap EnvMap(torch.tensor( cv2.cvtColor(cv2.imread(assets/hdri/forest.exr, cv2.IMREAD_UNCHANGED), cv2.COLOR_BGR2RGB), dtypetorch.float32, devicecuda )) # 2. Load Pipeline pipeline Trellis2ImageTo3DPipeline.from_pretrained(microsoft/TRELLIS.2-4B) pipeline.cuda() # 3. Load Image Run image Image.open(assets/example_image/T.png) mesh pipeline.run(image)[0] mesh.simplify(16777216) # nvdiffrast limit # 4. Render Video video render_utils.make_pbr_vis_frames(render_utils.render_video(mesh, envmapenvmap)) imageio.mimsave(sample.mp4, video, fps15) # 5. Export to GLB glb o_voxel.postprocess.to_glb( vertices mesh.vertices, faces mesh.faces, attr_volume mesh.attrs, coords mesh.coords, attr_layout mesh.layout, voxel_size mesh.voxel_size, aabb [[-0.5, -0.5, -0.5], [0.5, 0.5, 0.5]], decimation_target 1000000, texture_size 4096, remesh True, remesh_band 1, remesh_project 0, verbose True ) glb.export(sample.glb, extension_webpTrue)脚本执行后生成两个文件sample.mp4带 PBR 材质与环境光照的生成资产可视化视频sample.glb提取出的 PBR-ready 3D 资产GLB 格式。注意.glb文件默认以OPAQUE模式导出。虽然 alpha 通道保留在纹理图中但初始并不生效。如需透明效果请将资产导入 3D 软件手动把纹理的 alpha 通道连接到材质的 opacity / alpha 输入。从源码视角看trellis2/pipelines/trellis2_image_to_3d.pyfrom_pretrained会按model_names_to_load列表加载 8 个权重模块稀疏结构流模型与解码器、512/1024 两级形状流模型与解码器、512/1024 两级纹理流模型与解码器并组装稀疏结构采样器、形状/纹理潜变量采样器、图像条件模型DINOv3 特征提取器与背景去除模型rembg/BiRefNet。默认开启low_vram模式各模块按需搬到 GPU、用完即释放从而显著降低显存占用。preprocess_image的预处理逻辑包括若输入是带非全 255 alpha 通道的 RGBA 图则直接使用 alpha否则调用 rembg 去除背景随后缩放到最长边 1024 以内再按 alpha 阈值0.8×255裁剪出主体 bbox 作为条件图。生成阶段先采样稀疏结构解码后必要时用max_pool3d下采样到目标分辨率并提取坐标再在稀疏坐标上采样形状潜变量默认1024_cascade级联模式下先由 512 模型采样低分辨率潜变量经解码器上采样后在高分辨率坐标上继续采样且当 token 数超过上限默认 49152时自动降低输出分辨率以适配不同显存。2. Web Demoapp.py 提供简单的图像转 3D 资产 Web 演示运行python app.py然后在终端显示的地址访问即可。3. PBR 纹理生成example_texturing.py 演示了为给定 3D 形状生成 PBR 纹理的方法import os os.environ[PYTORCH_CUDA_ALLOC_CONF] expandable_segments:True # Can save GPU memory import trimesh from PIL import Image from trellis2.pipelines import Trellis2TexturingPipeline # 1. Load Pipeline pipeline Trellis2TexturingPipeline.from_pretrained(microsoft/TRELLIS.2-4B, config_filetexturing_pipeline.json) pipeline.cuda() # 2. Load Mesh, image Run mesh trimesh.load(assets/example_texturing/the_forgotten_knight.ply) image Image.open(assets/example_texturing/image.webp) output pipeline.run(mesh, image) # 3. Render Mesh output.export(textured.glb, extension_webpTrue)仓库同时提供 app_texturing.py 用于运行 PBR 纹理生成的 Web 演示输入网格与参考图位于 assets/example_texturing。六、训练仓库提供了完整训练代码支持从零训练 TRELLIS.2 或在自定义数据集上微调。训练由 train.py 统一管理通过命令行参数配置实验参数说明--config实验配置文件路径--output_dir训练输出目录--load_dir加载检查点目录默认取output_dir--ckpt恢复训练的检查点步数默认取最新--data_dir数据集路径或指定数据集位置的 JSON 字符串--auto_retry失败时自动重试次数--tryrun试运行不实际训练--profile启用训练性能剖析--num_nodes分布式训练节点数--node_rank当前节点 rank--num_gpus每节点 GPU 数默认使用全部可用 GPU--master_addr分布式训练主节点地址--master_port分布式训练通信端口从 train.py 源码可见其运行逻辑先解析参数并与 JSON 配置合并为 easydictload_dir为空时自动回退到output_dirnum_gpus为 -1 时取torch.cuda.device_count()单机多卡使用torch.multiprocessing.spawn拉起训练多节点时通过setup_dist建立分布式环境--tryrun模式下只构建数据集、模型与 trainer 而不真正训练--profile则调用trainer.profile()。训练前会在output_dir保存command.txt与config.json以便复现并把各 backbone 的参数统计写入*_model_summary.txt。1. 数据准备训练前原始 3D 资产必须先转换为O-Voxel表示过程包括网格转换、紧凑结构化潜变量生成与元数据准备。详细说明见 data_toolkit/README.md全流程如下Step 1 安装依赖. ./data_toolkit/setup.shStep 2 初始化元数据python data_toolkit/build_metadata.py SUBSET --root ROOT [--source SOURCE]SUBSET目标数据集子集训练集可选ObjaverseXL、ABO、HSSD、TexVerse测试集可选SketchfabPicked、Toys4kROOT数据保存根目录SOURCE数据源仅ObjaverseXL需要可选sketchfab、github。示例python data_toolkit/build_metadata.py ObjaverseXL --source sketchfab --root datasets/ObjaverseXL_sketchfabStep 3 下载数据python data_toolkit/download.py SUBSET --root ROOT [--rank RANK --world_size WORLD_SIZE]RANK/WORLD_SIZE多节点分布式下载参数。示例中设置极大的WORLD_SIZE160000仅为演示意味着单个进程只下载极小部分数据部分数据集需要交互式 Hugging Face 登录。下载完成后重新运行build_metadata.py更新元数据注册表。Step 4 处理网格与 PBR 纹理CPU 进程# Dump Meshes python data_toolkit/dump_mesh.py SUBSET --root ROOT [--rank RANK --world_size WORLD_SIZE] # Dump PBR Textures python data_toolkit/dump_pbr.py SUBSET --root ROOT [--rank RANK --world_size WORLD_SIZE] # Get statisitics of the asset python asset_stats.py --root ROOT [--rank RANK --world_size WORLD_SIZE]Step 5 转换为 O-VoxelCPU 进程python data_toolkit/dual_grid.py SUBSET --root ROOT [--rank RANK --world_size WORLD_SIZE] [--resolution RESOLUTION] python data_toolkit/voxelize_pbr.py SUBSET --root ROOT [--rank RANK --world_size WORLD_SIZE] [--resolution RESOLUTION]RESOLUTIONO-Voxel 目标分辨率逗号分隔如256,512,1024默认256。示例转换到 256、512、1024 三种分辨率python data_toolkit/dual_grid.py ObjaverseXL --root datasets/ObjaverseXL_sketchfab --resolution 256,512,1024 python data_toolkit/voxelize_pbr.py ObjaverseXL --root datasets/ObjaverseXL_sketchfab --resolution 256,512,1024至此数据集已可用于 SC-VAE 训练。Step 6 编码潜变量# 1. Encode Shape Latents python data_toolkit/encode_shape_latent.py --root ROOT [--rank RANK --world_size WORLD_SIZE] [--resolution RESOLUTION] # 2. Encode PBR Latents python data_toolkit/encode_pbr_latent.py --root ROOT [--rank RANK --world_size WORLD_SIZE] [--resolution RESOLUTION] # 3. Update Metadata (Required before next step) python data_toolkit/build_metadata.py SUBSET --root ROOT # 4. Encode Sparse Structure (SS) Latents python data_toolkit/encode_ss_latent.py --root ROOT --shape_latent_name SHAPE_LATENT_NAME [--rank RANK --world_size WORLD_SIZE] [--resolution SS_RESOLUTION]RESOLUTION输入 O-Voxel 分辨率默认1024SS_RESOLUTION稀疏结构分辨率默认64SHAPE_LATENT_NAMEshape latent 的具体版本名。完整示例python data_toolkit/encode_shape_latent.py --root datasets/ObjaverseXL_sketchfab --resolution 512 python data_toolkit/encode_pbr_latent.py --root datasets/ObjaverseXL_sketchfab --resolution 512 python data_toolkit/encode_shape_latent.py --root datasets/ObjaverseXL_sketchfab --resolution 1024 python data_toolkit/encode_pbr_latent.py --root datasets/ObjaverseXL_sketchfab --resolution 1024 # Update metadata python data_toolkit/build_metadata.py ObjaverseXL --root datasets/ObjaverseXL_sketchfab # Encode SS Latents python data_toolkit/encode_ss_latent.py --root datasets/ObjaverseXL_sketchfab --shape_latent_name shape_enc_next_dc_f16c32_fp16_1024 --resolution 64 # Final Metadata Update python data_toolkit/build_metadata.py ObjaverseXL --root datasets/ObjaverseXL_sketchfabStep 7 渲染图像条件训练图像条件生成器所需python data_toolkit/render_cond.py SUBSET --root ROOT [--num_views NUM_VIEWS] [--rank RANK --world_size WORLD_SIZE]NUM_VIEWS每个资产渲染的视角数默认16。最后再次运行build_metadata.py完成元数据更新。2. SC-VAE 训练形状 SC-VAEpython train.py \ --config configs/scvae/shape_vae_next_dc_f16c32_fp16.json \ --output_dir results/shape_vae_next_dc_f16c32_fp16 \ --data_dir {\ObjaverseXL_sketchfab\: {\base\: \datasets/ObjaverseXL_sketchfab\, \mesh_dump\: \datasets/ObjaverseXL_sketchfab/mesh_dumps\, \dual_grid\: \datasets/ObjaverseXL_sketchfab/dual_grid_256\, \asset_stats\: \datasets/ObjaverseXL_sketchfab/asset_stats\}}该命令使用shape_vae_next_dc_f16c32_fp16.json配置在Objaverse-XL数据集上训练形状 SC-VAE输出保存到results/shape_vae_next_dc_f16c32_fp16。数据集的 JSON 字符串中每个数据集条目包含base数据集根目录mesh_dump预处理网格 dump 目录dual_grid预计算 dual-grid 表示目录asset_stats预计算资产统计信息目录。更高分辨率微调请使用shape_vae_next_dc_f16c32_fp16_ft_512.json配置记得更新其中的finetune_ckpt字段并调整数据集路径。纹理 SC-VAEpython train.py \ --config configs/scvae/tex_vae_next_dc_f16c32_fp16.json \ --output_dir results/tex_vae_next_dc_f16c32_fp16 \ --data_dir {\ObjaverseXL_sketchfab\: {\base\: \datasets/ObjaverseXL_sketchfab\, \pbr_dump\: \datasets/ObjaverseXL_sketchfab/pbr_dumps\, \pbr_voxel\: \datasets/ObjaverseXL_sketchfab/pbr_voxels_256\, \asset_stats\: \datasets/ObjaverseXL_sketchfab/asset_stats\}}3. Flow 模型训练稀疏结构流模型第一级生成器python train.py \ --config configs/gen/ss_flow_img_dit_1_3B_64_bf16.json \ --output_dir results/ss_flow_img_dit_1_3B_64_bf16 \ --data_dir {\ObjaverseXL_sketchfab\: {\base\: \datasets/ObjaverseXL_sketchfab\, \ss_latent\: \datasets/ObjaverseXL_sketchfab/ss_latents/ss_enc_conv3d_16l8_fp16_64\, \render_cond\: \datasets/ObjaverseXL_sketchfab/renders_cond\}}数据集配置包含base数据集根目录ss_latent预计算稀疏结构潜变量目录render_cond条件渲染图像目录。第二、三阶段形状与纹理流模型分别使用以下配置形状流slat_flow_img2shape_dit_1_3B_512_bf16.json纹理流slat_flow_imgshape2tex_dit_1_3B_512_bf16.json示例命令# Shape flow model python train.py \ --config configs/gen/slat_flow_img2shape_dit_1_3B_512_bf16.json \ --output_dir results/slat_flow_img2shape_dit_1_3B_512_bf16 \ --data_dir {\ObjaverseXL_sketchfab\: {\base\: \datasets/ObjaverseXL_sketchfab\, \shape_latent\: \datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_512\, \render_cond\: \datasets/ObjaverseXL_sketchfab/renders_cond\}} # Texture flow model python train.py \ --config configs/gen/slat_flow_imgshape2tex_dit_1_3B_512_bf16.json \ --output_dir results/slat_flow_imgshape2tex_dit_1_3B_512_bf16 \ --data_dir {\ObjaverseXL_sketchfab\: {\base\: \datasets/ObjaverseXL_sketchfab\, \shape_latent\: \datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_512\, \pbr_latent\: \datasets/ObjaverseXL_sketchfab/pbr_latents/tex_enc_next_dc_f16c32_fp16_512\, \render_cond\: \datasets/ObjaverseXL_sketchfab/renders_cond\}}更高分辨率微调可通过更新以下配置文件中的finetune_ckpt字段并调整数据集路径实现slat_flow_img2shape_dit_1_3B_512_bf16_ft1024.jsonslat_flow_imgshape2tex_dit_1_3B_512_bf16_ft1024.json以形状流配置 configs/gen/slat_flow_img2shape_dit_1_3B_512_bf16.json 为例可以一窥模型与训练细节去噪器采用ElasticSLatFlowModelresolution 32、in/out channels 32、model_channels 1536、cond_channels 1024、30 个 block、12 头注意力、rope 位置编码、共享调制share_mod: true与 scaled 初始化并开启qk_rms_norm含 cross-attention训练器为ImageConditionedSparseFlowMatchingCFGTrainer使用 AdamWlr 1e-4、weight_decay 0.01、betas [0.9, 0.95]、EMA rate 0.9999、bfloat16 AMP 混合精度、LinearMemoryController弹性显存控制target_ratio 0.75、AdaptiveGradClipper自适应梯度裁剪max_norm 1.0、clip_percentile 95、无条件概率p_uncond0.1图像条件模型为DinoV3FeatureExtractorfacebook/dinov3-vitl16。这些参数与 trellis2/trainers/flow_matching 下的SparseFlowMatching训练器实现一一对应可用于定制自己的训练实验。七、相关组件与许可TRELLIS.2 构建于多个专门的高性能包之上O-Voxelo-voxel核心库负责带纹理网格与 O-Voxel 表示之间的转换逻辑保证双向即时变换。其 examples 目录提供了 mesh2ovox、ovox2mesh、ovox2glb、render_ovox 等独立示例可直接复用于自己的数据转换管线。FlexGEMM基于 Triton 的高效稀疏卷积实现用于快速处理稀疏体素结构。CuMeshCUDA 加速的网格工具用于高速后处理、remesh、decimation 与 UV 展开。模型与代码以MIT License见 LICENSE发布。部分依赖采用独立许可条款包括 nvdiffrast用于渲染生成资产与 nvdiffrec实现 PBR 材质的 split-sum 渲染器使用前请查阅其各自的许可证。八、快速路线图从仓库 README.md 可见项目已发布的里程碑论文、image-to-3D 推理代码、4B 预训练检查点、Hugging Face Spaces 演示、形状条件纹理生成推理代码以及完整训练代码均已开放。若你的研究引用本工作可按 README 中提供的 BibTeX 条目引用作者 Xiang 等2025Tech report。至此从安装、推理到数据流水线与三阶段训练TRELLIS.2 的完整技术闭环已经打通输入一张图像输出可交付的 PBR GLB 资产输入一批原始 3D 资产训练出属于你自己的 4B 级 3D 生成模型。赞分享人工智能大模型预训练图形学媒体生成【免费下载链接】TRELLIS.2Native and Compact Structured Latents for 3D Generation项目地址https://gitcode.com/GitHub_Trending/tr/TRELLIS.2点击查看免费下载相关推荐LocalAI 3D 生成实战用 /3d/generations 从单张图像生成 PBR 纹理 3D 模型LocalAI 3D 生成实战用 /3d/generations 从单张图像生成 PBR 纹理 3D 模型 本文介绍 LocalAI 的 3D 生成能力如何人工智能大模型模型推理服务本地部署LLM 网关多模态AI AgentRAGMCP 服务AMCT create_prune_retrain_model 接口详解基于通道稀疏与 4 选 2 结构化稀疏构建稀疏后训练模型AMCT create_prune_retrain_model 接口详解基于通道稀疏与 4 选 2 结构化稀疏构建稀疏后训练模型 导读 本文聚焦 CANN A人工智能大模型模型量化模型压缩模型优化AscendPaddleGAN 中 StyleGAN V2 图像生成实战指南原理、训练与推理全流程PaddleGAN 中 StyleGAN V2 图像生成实战指南原理、训练与推理全流程 StyleGAN V2 是 NVIDIA 提出的高质量无条件图像生成模人工智能深度学习计算机视觉媒体生成视频处理图像处理上一篇文献库丢了别慌三步从 Word 文档恢复 Zotero、Mendeley 引用下一篇Telepresence compose up 完全指南创建并启动 Docker Compose 容器接入 Kubernetes 集群服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考