
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后端替代:
bashATTN_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.2和Direct3D-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