【SIGGRAPH 2026】Pixal3D: 基于图像的像素对齐三维生成

Pixal3D 可从单张图像生成高保真3D资产。与此前通过注意力机制松散注入图像特征的方法不同,Pixal3D通过反向投影将像素特征显式提升至3D空间,建立直接的像素到3D对应关系,从而实现接近重建级保真度的精细几何结构和PBR材质。


✨ 最新动态

  • 2026年5月:发布训练代码与数据准备工具包 🔧
  • 2026年5月 :发布基于Trellis.2骨干网络的改进版本 💪
  • 2026年5月:发布推理代码与在线演示 🤗
  • 2026年4月:论文被SIGGRAPH 2026收录! 🎉

📌 分支

分支 描述
main 最新版本 --- 基于Trellis.2主干改进实现,性能更优。
paper 论文版本 --- 基于Direct3D-S2的原始实现,对应我们SIGGRAPH 2026论文中报告的结果。

如需复现论文中的结果,请切换到paper分支。

🎮 在线体验

无需安装,您可以直接在浏览器中通过我们的Hugging Face Gradio演示体验Pixal3D:

👉 启动演示

🚀 快速开始

安装指南

第一步:遵循TRELLIS.2安装

请先按照TRELLIS.2的安装指南配置基础环境。

第二步:安装额外依赖
bash 复制代码
pip install -r requirements.txt
第三步:安装utils3d
bash 复制代码
pip install https://github.com/LDYang694/Storages/releases/download/20260430/utils3d-0.0.2-py3-none-any.whl

注意requirements-hfdemo.txt专为Hugging Face Spaces演示(H系列GPU架构)准备,可能不兼容其他架构。

使用说明

推理生成

从单张图像生成GLB格式网格:

bash 复制代码
python inference.py --image assets/images/0_img.png --output ./output.glb

低显存模式(按需加载模型以降低峰值显存占用):

bash 复制代码
python inference.py --image assets/images/0_img.png --output ./output.glb --low_vram

默认管道分辨率为1536 (标准模式)或1024 (低显存模式)。可通过--resolution参数覆盖:

bash 复制代码
# 在低显存模式下强制使用1536分辨率
python inference.py --image assets/images/0_img.png --output ./output.glb --low_vram --resolution 1536

# 在标准模式下强制使用1024分辨率
python inference.py --image assets/images/0_img.png --output ./output.glb --resolution 1024

技巧 :若未安装flash_attn,可使用PyTorch内置的SDPA后端替代:

bash 复制代码
ATTN_BACKEND=sdpa python inference.py --image assets/images/0_img.png --output ./output.glb --low_vram

网页演示

我们提供了基于Gradio的交互式网页演示,可直接通过图像生成3D网格。

bash 复制代码
python app.py 

网页演示同样支持低显存模式。前端默认分辨率在低显存模式下会自动切换为1024(否则为1536),但可通过界面手动调整。

bash 复制代码
python app.py --low_vram
# 或通过环境变量启用:
LOW_VRAM=1 python app.py

🔧 训练指南

我们提供完整的训练代码库,支持从零开始复现Pixal3D模型。

数据准备

按照数据工具包说明准备视角对齐的O-Voxel数据及渲染条件图像:

📂 <data_toolkit/README.md>

概述

Pixal3D采用三级级联训练,每阶段逐步提升分辨率:

阶段 模型 分辨率 配置前缀
1 稀疏结构 32 → 64 ss_flow_img_dit_*_proj_finetune
2 形状 256 → 512 → 1024 slat_flow_img2shape_*_proj_finetune
3 纹理 256 → 512 → 1024 slat_flow_imgshape2tex_*_proj_finetune

所有阶段均采用像素对齐投影条件视角对齐潜在特征 (默认2视角)。在每个阶段内,从最低分辨率开始训练,并通过在配置中设置finetune_ckpt逐步微调至更高分辨率。

快速开始

sh 复制代码
python train.py \
  --config <CONFIG_JSON> \
  --output_dir <OUTPUT_DIR> \
  --data_dir '<DATA_DIR_JSON>'

--data_dir 是一个描述数据集布局的JSON字符串。不同阶段需要不同的键值:

阶段 必需键值
稀疏结构 base, ss_latent, render_cond
形状 base, shape_latent, render_cond
纹理 base, shape_latent, pbr_latent, render_cond

示例:训练全部三个阶段

以下我们以ObjaverseXL为例展示完整的训练流程。每个更高分辨率的步骤都需要在其配置JSON中更新finetune_ckpt以指向先前的检查点。
阶段1:稀疏结构(32 → 64)

sh 复制代码
# Resolution 32
python train.py \
  --config configs/gen/ss_flow_img_dit_1_3B_32_bf16_proj_finetune.json \
  --output_dir results/ss_32 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "ss_latent": "datasets/ObjaverseXL_sketchfab/ss_latents/ss_enc_conv3d_16l8_fp16_64_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

# Resolution 64 (set finetune_ckpt → results/ss_32 checkpoint)
python train.py \
  --config configs/gen/ss_flow_img_dit_1_3B_32_bf16_proj_finetune_ft64.json \
  --output_dir results/ss_ft64 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "ss_latent": "datasets/ObjaverseXL_sketchfab/ss_latents/ss_enc_conv3d_16l8_fp16_64_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

阶段2:形状(256 → 512 → 1024)

sh 复制代码
# Resolution 256
python train.py \
  --config configs/gen/slat_flow_img2shape_dit_1_3B_256_bf16_proj_finetune.json \
  --output_dir results/shape_256 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_256_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

# Resolution 512
python train.py \
  --config configs/gen/slat_flow_img2shape_dit_1_3B_256_bf16_proj_finetune_ft512.json \
  --output_dir results/shape_ft512 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_512_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

# Resolution 1024
python train.py \
  --config configs/gen/slat_flow_img2shape_dit_1_3B_512_bf16_proj_finetune_ft1024.json \
  --output_dir results/shape_ft1024 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_1024_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

阶段3:纹理(256 → 512 → 1024)

sh 复制代码
# Resolution 256
python train.py \
  --config configs/gen/slat_flow_imgshape2tex_dit_1_3B_256_bf16_proj_finetune.json \
  --output_dir results/tex_256 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_256_view", "pbr_latent": "datasets/ObjaverseXL_sketchfab/pbr_latents/tex_enc_next_dc_f16c32_fp16_256_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

# Resolution 512
python train.py \
  --config configs/gen/slat_flow_imgshape2tex_dit_1_3B_512_bf16_proj_finetune.json \
  --output_dir results/tex_512 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_512_view", "pbr_latent": "datasets/ObjaverseXL_sketchfab/pbr_latents/tex_enc_next_dc_f16c32_fp16_512_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

# Resolution 1024
python train.py \
  --config configs/gen/slat_flow_imgshape2tex_dit_1_3B_512_bf16_proj_finetune_ft1024.json \
  --output_dir results/tex_ft1024 \
  --data_dir '{"ObjaverseXL_sketchfab": {"base": "datasets/ObjaverseXL_sketchfab", "shape_latent": "datasets/ObjaverseXL_sketchfab/shape_latents/shape_enc_next_dc_f16c32_fp16_1024_view", "pbr_latent": "datasets/ObjaverseXL_sketchfab/pbr_latents/tex_enc_next_dc_f16c32_fp16_1024_view", "render_cond": "datasets/ObjaverseXL_sketchfab/renders_cond"}}'

附加选项

所有命令行参数

参数 描述 默认值
--config 配置文件JSON路径 必填
--output_dir 输出目录 必填
--data_dir 数据集JSON字符串 ./data/
--load_dir 检查点加载目录 output_dir
--ckpt 从指定步骤恢复 latest
--auto_retry 失败重试次数 3
--tryrun 试运行 false
--profile 性能分析 false
--num_nodes 节点数量 1
--node_rank 当前节点排名 0
--num_gpus 每节点GPU数量 全部
--master_addr 主节点地址 localhost
--master_port 主节点端口 12666
--use_wandb 启用W&B日志 false
--wandb_project W&B项目名 trellis2-training
--wandb_name W&B运行名称 output_dir的基名
--wandb_id W&B运行ID(恢复用) ---

🤗 致谢

本项目主要基于Trellis.2Direct3D-S2构建。我们衷心感谢原作者在可扩展3D生成领域的杰出工作,这为我们的代码库和模型架构奠定了基础。

同时感谢以下开源项目的重大贡献:

📄 引用

如果您觉得这项工作有帮助,请考虑引用:

bibtex 复制代码
@article{li2026pixal3d,
    title={Pixal3D: Pixel-Aligned 3D Generation from Images},
    author={Li, Dong-Yang and Zhao, Wang and Chen, Yuxin and Hu, Wenbo and Guo, Meng-Hao and Zhang, Fang-Lue and Shan, Ying and Hu, Shi-Min},
    journal={arXiv preprint arXiv:2605.10922},
    year={2026}
}

项目https://ldyang694.github.io/projects/pixal3d/
代码https://github.com/TencentARC/Pixal3D
模型https://huggingface.co/TencentARC/Pixal3D

相关推荐
宇擎智脑科技4 小时前
如果 HTML 成为大模型标准输出格式,训练体系需要怎么变?
人工智能
ASKED_20194 小时前
ReAct 智能体的失败处理与改进机制:从 Demo 到工业级 Agent 的关键一步
人工智能·架构
带娃的IT创业者5 小时前
Anthropic收购Stainless:AI Agent时代的连接革命
人工智能·ai agent·anthropic·mcp·收购·stainless
X54先生(人文科技)5 小时前
《元创力》叙事宇宙架构蓝图·官方完整版正式档案
人工智能·架构·ai写作·开源协议
XD7429716365 小时前
科技早报|2026年5月19日:AI 编码开始补 SDK、API 和审计链路
人工智能·开发者工具·科技早报
海上彼尚5 小时前
Nodejs也能写Agent - 3.基础篇 - Tools 与 Tool Calling
前端·人工智能·后端·node.js
PPIO派欧云5 小时前
PPIO参展2026上海信息消费节,全栈式AI云产品亮相
大数据·人工智能
CG_MAGIC5 小时前
主流 3D 软件文件互通互导教程
3d·材质·效果图·建模教程·渲云渲染
大模型推理5 小时前
Nano-vLLM 源码解读 - 10. Context 元数据
人工智能