Pixal3D三阶段级联架构解析:稀疏结构→形状→PBR纹理的3D生成全链路拆解

发布时间:2026/10/4 21:00:23
Pixal3D三阶段级联架构解析:稀疏结构→形状→PBR纹理的3D生成全链路拆解 Pixal3D三阶段级联架构解析稀疏结构→形状→PBR纹理的3D生成全链路拆解【免费下载链接】Pixal3D[SIGGRAPH 2026] Pixal3D: Pixel-Aligned 3D Generation from Images项目地址: https://gitcode.com/gh_mirrors/pi/Pixal3DPixal3D 是腾讯 ARC Lab 与清华联合推出的图像生成 3D 资产模型SIGGRAPH 2026它通过三阶段级联架构——稀疏结构、形状、PBR 纹理——从单张图片直接生成带完整物理材质的高保真 3D 网格。与传统注意力软注入不同Pixal3D 把像素特征显式反向投影到 3D 空间实现接近重建级near-reconstruction的几何与纹理保真度。本文带你完整拆解这条 3D 生成链路每个阶段做什么、输入输出是什么、分辨率如何逐级放大以及如何用一行命令跑通推理。一、全链路总览一张图如何变成 3D 资产 ️Pixal3D 的核心思想可以概括为一句话先定轮廓再塑形体最后上色。整条链路分为 3 大阶段、5 个采样步骤阶段模型职责分辨率演进配置前缀① 稀疏结构在 3D 体素网格中标出哪里有物体32 → 64ss_flow_img_dit_*_proj_finetune② 形状在占据位置生成精细几何Structured Latent256 → 512 → 1024/1536slat_flow_img2shape_*_proj_finetune③ PBR 纹理基于已生成形状叠加 base color / metallic / roughness / alpha256 → 512 → 1024slat_flow_imgshape2tex_*_proj_finetune 上图就是 README 中官方演示使用的输入图 assets/images/0_img.png。跑完推理后它会变成一个带完整 PBR 材质、可导出为 GLB 的 3D 模型。在深入三个阶段之前先了解两个贯穿全程的基础设施1. 像素对齐投影条件Proj 条件所有阶段的图像编码器都是DinoV3ProjFeatureExtractorpixal3d/modules/image_feature_extractor.py它基于 DINOv3-ViT-L 提取特征。Pixal3D 的关键创新在于它不仅给 DiT 提供全局语义特征global context还结合相机参数把 2D 像素特征投影成与 3D 体素一一对应的投影特征proj context。注意力融合逻辑见 pixal3d/modules/attention/proj_attention.py 中的ProjectAttention输出 全局交叉注意力(global) 投影对齐特征(proj)2. 相机参数估计MoGe-2投影需要相机参数。推理时由 MoGe-2 单目模型自动估计camera_angle_x水平视场角与distance相机距离实现在 inference.py 的get_camera_params_wild_moge()中你也可以用--fov手动指定。二、阶段一稀疏结构——先画出物体的体素骨架 核心问题在 3D 空间里物体到底占据哪些位置输入条件图已抠图 相机参数。模型SparseStructureFlowModelpixal3d/models/sparse_structure_flow.py一个 1.3B 的 Flow Matching DiT工作分辨率 32³latent 分辨率 8³8 通道。输出一组 3D 坐标coords (N, 4)即被占据的体素位置。python train.py \ --config configs/gen/ss_flow_img_dit_1_3B_32_bf16_proj_finetune.json \ --output_dir results/ss_32 \ --data_dir {base: ..., ss_latent: ..., render_cond: ...}配置详解见 configs/gen/ss_flow_img_dit_1_3B_32_bf16_proj_finetune.json30 层 Transformer 块、RoPE 位置编码、image_attn_mode: proj开启投影条件投影网格为 8³与 SS latent 对齐。推理阶段对应 pixal3d/pipelines/pixal3d_image_to_3d.py 中的sample_sparse_structure()从 32³ 高斯噪声出发经 12 步 Flow Euler 采样guidance 7.5解码得到体素坐标作为后续形状阶段的脚手架。稀疏结构决定了最终模型的占位精度——它保证后续高分辨率形状只需在少数 token 上计算而不是对整个稠密网格建模这是 Pixal3D 能撑到 1024/1536 分辨率的关键。三、阶段二形状生成——512 打底、1024 精修 核心问题在占据体素上雕刻出精细几何。Pixal3D 采用低分辨率 → 上采样 → 高分辨率的两段式级联LR 512在稀疏结构坐标上采样shape_slat32 通道 Structured Latent上采样 ×4由shape_slat_decoder.upsample()把 512 级 latent 提升到 1024/1536 级若 token 数超过max_num_tokens默认 49152分辨率会按 128 步长自动降级保稳定HR 1024/1536HR 级 flow 模型在提升后的坐标上二次采样补全高频细节。对应模型为ElasticSLatFlowModel带弹性内存控制器见配置中LinearMemoryController训练配置512 起步configs/gen/slat_flow_img2shape_dit_1_3B_256_bf16_proj_finetune.json512 精调configs/gen/slat_flow_img2shape_dit_1_3B_256_bf16_proj_finetune_ft512.json1024 精调configs/gen/slat_flow_img2shape_dit_1_3B_512_bf16_proj_finetune_ft1024.json高分辨率阶段的图像条件会启用NAF 超分use_naf_upsample把 DINOv3 的 32×32 patch 特征以输入图为引导上采样到 512/1024保证高分辨率下投影特征的空间精度。解码后得到Mesh顶点 面片以及供纹理阶段使用的subs子结构实现decode_shape_slat()# 形状阶段推理参数inference.py 默认值 shape_slat_guidance_strength 7.5 shape_slat_guidance_rescale 0.5 shape_slat_sampling_steps 12四、阶段三PBR 纹理——给几何穿衣 核心问题如何生成真实感物理材质而非平涂贴图PBR 阶段以形状 latent 为拼接条件concat_condshape_slat在同一套稀疏坐标上采样 32 通道的纹理 latent解码出 4 组物理属性——base_color基础色、metallic金属度、roughness粗糙度、alpha透明度属性布局定义在 pixal3d/pipelines/pixal3d_image_to_3d.py 的pbr_attr_layout中。训练配置见 configs/gen/slat_flow_imgshape2tex_dit_1_3B_256_bf16_proj_finetune.json注意in_channels: 64 32 形状通道拼接 32 噪声通道以及 512/1024 精调版本 configs/gen/slat_flow_imgshape2tex_dit_1_3B_512_bf16_proj_finetune_ft1024.json。得益于像素对齐投影纹理能严格对应到输入图中看得见的每个像素——这正是 Pixal3D 标题中 Pixel-Aligned 的含义也是它能做到所见即所得级还原的根本原因。五、一键跑通推理命令与低显存模式 5.1 环境安装要点git clone https://gitcode.com/gh_mirrors/pi/Pixal3D cd Pixal3D pip install -r requirements.txt # 需按自己的 CUDA 架构安装 natten0.21.0再安装 utils3d whl5.2 生成 GLB 网格# 标准模式默认 1536 分辨率 python inference.py --image assets/images/0_img.png --output ./output.glb # 低显存模式显存峰值从 ~18GB 降到 ~10-12GB默认 1024 分辨率 python inference.py --image assets/images/0_img.png --output ./output.glb --low_vram # 未安装 flash_attn用 PyTorch SDPA 后端即可 ATTN_BACKENDsdpa python inference.py --image assets/images/0_img.png --output ./output.glb --low_vram低显存模式的实现很巧妙所有模型常驻 CPU每执行一个阶段才把对应模型搬上 GPU、用完立即搬回见 pixal3d/pipelines/pixal3d_image_to_3d.py 中各方法的low_vram分支因此峰值显存 ≈ 一个 flow 模型 一个 DINOv3。5.3 输出后处理推理末尾通过o_voxel.postprocess.to_glb()做 remesh、减面至 100 万面、生成 4096 贴图最终导出标准 GLB 文件可直接导入 Blender / Unity / 网页渲染器。此外python app.py可启动 Gradio 网页演示app.py低显存模式下前端分辨率会自动切到 1024。六、相关文件速查表 模块路径说明推理入口inference.py相机估计 三阶段采样 GLB 导出流水线实现pixal3d/pipelines/pixal3d_image_to_3d.pyrun()完整串联 5 个采样步骤投影注意力pixal3d/modules/attention/proj_attention.pyglobal proj 双路条件融合图像特征提取pixal3d/modules/image_feature_extractor.pyDINOv3 特征 NAF 超分稀疏结构 DiTpixal3d/models/sparse_structure_flow.py阶段一 denoiser训练入口train.py三阶段级联训练数据准备data_toolkit/README.mdO-Voxel 视角对齐数据管线模型配置configs/gen/8 个阶段的 flow 训练 JSON训练侧的完整流程数据下载 → 渲染条件图 → 视角对齐体素化 → latent 编码 → 三阶段级联微调可参考 data_toolkit/README.md每个阶段都通过finetune_ckpt从上一分辨率热启动实现 32→64、256→512→1024 的分辨率爬坡。七、总结为什么这个架构值得学 Pixal3D 的三阶段级联设计给 3D 生成留下了三个可借鉴的工程范式稀疏优先用 32³ 稀疏结构先画框把算力集中在物体真正占据的空间让 1024 高分辨率成为可能像素对齐投影抛弃纯软注意力注入用相机参数把 2D 特征硬性投影到 3D token实现哪个像素对应哪块表面的精确控制换来重建级保真形状与纹理解耦纹理阶段以形状 latent 为硬约束拼接条件几何不跑偏、材质自然贴合且两阶段可独立演进分辨率。如果你想动手复现只需记住三个命令python inference.py推理、python app.pyWeb 演示、python train.py --config configs/gen/...训练。从一张图到一个可用的 PBR GLB 资产Pixal3D 把整条链路压缩到了分钟级——这就是三阶段级联架构带来的工程红利。【免费下载链接】Pixal3D[SIGGRAPH 2026] Pixal3D: Pixel-Aligned 3D Generation from Images项目地址: https://gitcode.com/gh_mirrors/pi/Pixal3D创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考