结论摘要
- multidiffusion 在代码层面对每张已列出的输入使用显式 1 / V 算术平均;这证明显式权重相同,但不保证每张图包含的信息质量或梯度影响完全相同。
- stochastic 每个 diffusion step 只选一张图。12 steps 与 4 views 时调用次数都是 3 次,但不同图片绑定到不同时间步,因此有效影响不必相同。
- 两个推理实现都不接收相机外参,非正交视图不会先经过显式几何对齐;它们只通过图像特征和生成先验间接融合。
- 本实验的 canonical 正交组是 elevation=0° 的四个水平环视,俯仰覆盖弱于随机非正交组;正交性与视角覆盖不能混为同一个变量。
- TRELLIS 的跨顺序预测 Chamfer:stochastic=0.0212,multidiffusion=0.0062;后者更低。
- TRELLIS.2 的跨顺序预测 Chamfer:stochastic=0.0336,multidiffusion=0.0081;后者更低。
- TRELLIS 正交减非正交:Chamfer Δ=0.0006,F@5% Δ=-0.0568,表现为整体退化。
- TRELLIS.2 正交减非正交:Chamfer Δ=0.0117,F@5% Δ=-0.0680,表现为整体退化。
论文与代码机制
TRELLIS stochastic
每个 step 只调用一张图。12 steps / 4 views 时每张调用 3 次;输入重排会改变图像与 diffusion timestep 的绑定。
TRELLIS multidiffusion
所有视图从同一个 x_t 独立预测,再做算术平均。显式权重为 1 / V,理论上对列表顺序不变。
“调用次数相同”不等于“有效影响相同”。stochastic 的图像位于不同噪声时间步;multidiffusion 虽显式等权,但内容质量、遮挡和特征冲突仍会改变实际结果。
每张图片的权重
| 实现 | 融合阶段 | 本实验每图使用量 | 显式权重 | 顺序影响 |
|---|---|---|---|---|
| TRELLIS stochastic | sparse、SLat | 3 / 12 calls | 按调用次数名义上 25%,有效权重未知 | 会改变视图与 timestep 的绑定 |
| TRELLIS multidiffusion | sparse、SLat | 每个 step 都调用 | 每 step 精确 1 / V | 理论不变;浮点求和误差可被扩散过程放大 |
| TRELLIS.2 stochastic | sparse、shape、texture | 各阶段均为 3 / 12 calls | 按调用次数名义上 25%,有效权重未知 | 三个阶段都可能受 timestep 绑定影响 |
| TRELLIS.2 multidiffusion | sparse、shape、texture | 各阶段每个 step 都调用 | 每 step 精确 1 / V | 理论不变;实验中接近但不完全相同 |
一般情况下 stochastic 中每张图至少获得 floor(steps / V) 次调用;当 steps % V != 0 时,输入列表前面的若干视图会多一次调用。因此只有像本实验 12/4 这样整除时,调用次数才完全相同。
论文口径:不要混淆两类“多视角”
VAE 多视角编码:TRELLIS 论文在构建 3D latent 时,会把带已知投影关系的 dense multiview DINOv2 特征投影到体素并平均;这是训练表示的 3D 编码流程。生成推理条件:论文中的生成模型通过 cross-attention 接收 DINOv2 图像特征,TRELLIS.2 则使用 DINOv3-L 图像条件。本文测试的多图输入是对该生成采样器的推理期改造,没有论文 VAE 编码阶段的相机投影与几何对齐。
- 原始 TRELLIS:
trellis/pipelines/trellis_image_to_3d.py:285-380 - 修改版 TRELLIS.2:
trellis2_image_to_3d.py:498-604, 716-829 - TRELLIS.2 训练侧多图 mixin:token 拼接且无相机位姿编码,
image_conditioned.py:178-230 - TRELLIS paper · TRELLIS.2 paper · TRELLIS.2 project
全部生成组
Chamfer 越低越好;F-score 越高越好;失败率单独报告,不从成功样本均值中隐藏。
| 方法 | 成功 | Chamfer | F@5% | F@10% | 面片数 | 失败率 |
|---|---|---|---|---|---|---|
| TRELLIS stochastic · identity | 5/5 | 0.0858 | 0.4040 | 0.6066 | 477217 | 0.0000 |
| TRELLIS stochastic · reverse | 5/5 | 0.0776 | 0.4205 | 0.6524 | 435130 | 0.0000 |
| TRELLIS stochastic · rotate | 5/5 | 0.0814 | 0.4147 | 0.6404 | 441940 | 0.0000 |
| TRELLIS multidiffusion · identity | 5/5 | 0.0809 | 0.4477 | 0.6336 | 495436 | 0.0000 |
| TRELLIS multidiffusion · reverse | 5/5 | 0.0817 | 0.4425 | 0.6290 | 504103 | 0.0000 |
| TRELLIS multidiffusion · rotate | 5/5 | 0.0817 | 0.4399 | 0.6302 | 506723 | 0.0000 |
| TRELLIS multidiffusion · 正交 | 5/5 | 0.0816 | 0.3908 | 0.6450 | 525256 | 0.0000 |
| TRELLIS.2 stochastic · identity | 5/5 | 0.0675 | 0.5036 | 0.7419 | 1517497 | 0.0000 |
| TRELLIS.2 stochastic · reverse | 5/5 | 0.0782 | 0.4330 | 0.6688 | 1537484 | 0.0000 |
| TRELLIS.2 stochastic · rotate | 5/5 | 0.0771 | 0.4269 | 0.6857 | 1163794 | 0.0000 |
| TRELLIS.2 multidiffusion · identity | 5/5 | 0.0721 | 0.4656 | 0.7142 | 1166726 | 0.0000 |
| TRELLIS.2 multidiffusion · reverse | 5/5 | 0.0672 | 0.4919 | 0.7509 | 1232240 | 0.0000 |
| TRELLIS.2 multidiffusion · rotate | 4/5 | 0.0727 | 0.4644 | 0.7124 | 1503845 | 0.2000 |
| TRELLIS.2 multidiffusion · 正交 | 5/5 | 0.0838 | 0.3976 | 0.6304 | 825812 | 0.0000 |
输入顺序实验
identity=[0,1,2,3],reverse=[3,2,1,0],rotate=[1,2,3,0]。GT 指标 range 衡量同一 case 的评价波动;预测间 Chamfer 直接衡量三个输出 mesh 是否相同。
| 融合方式 | 完整 case | GT Chamfer mean range | F@5% range | 预测间 Chamfer |
|---|---|---|---|---|
| TRELLIS stochastic | 5 | 0.0096 | 0.0462 | 0.0212 |
| TRELLIS multidiffusion | 5 | 0.0008 | 0.0086 | 0.0062 |
| TRELLIS.2 stochastic | 5 | 0.0147 | 0.1048 | 0.0336 |
| TRELLIS.2 multidiffusion | 4 | 0.0009 | 0.0064 | 0.0081 |
正交与非正交输入
Δ 定义为 canonical 正交输入减去随机非正交输入。Chamfer Δ<0、F-score Δ>0 表示正交输入更好。本协议的正交组固定 elevation=0°,因此俯仰覆盖弱于带高低视角的随机非正交组,结果只说明“水平四向正交”没有占优。
| 模型 | 配对 case | Chamfer Δ | F@5% Δ | F@10% Δ | 面片数 Δ |
|---|---|---|---|---|---|
| TRELLIS | 5 | 0.0006 | -0.0568 | 0.0114 | 29820 |
| TRELLIS.2 | 5 | 0.0117 | -0.0680 | -0.0838 | -340914 |
2026-07-19 · VGGT 几何加权实验
假设:冻结 TRELLIS.2,仅用 VGGT 的跨视角置信度和共同三维点一致性设置 multidiffusion 的静态视角权重,可能优于每视角 1 / V 平均。
prediction(t) = Σ weight_i × model(x_t, t, cond_i)
过程与异常发现
- 首次 10-case 提取中,第一张输入在所有 case 获得 59%–86% 权重。原因是 VGGT 将首帧作为参考 frame,原始置信度存在序列位置偏置。
- 修正方法是循环排列去偏:每张图依次放到参考位置,分数映射回原索引后平均。修正后四视角权重主要位于约 0.12–0.39。
- VGGT 去偏提取平均 1.10 秒/case,峰值 8.44 GiB;无 GT 信息参与权重计算。
- 使用 protocol-4 前 10 个 GSO case、12 steps、512 pipeline、seed 1;三组均成功生成 10/10 mesh。
| 方法 | Chamfer ↓ | F@5% ↑ | 水密率 ↑ | 生成时间/case | 生成峰值显存 | 门槛 |
|---|---|---|---|---|---|---|
| uniform multidiffusion | 0.0816 | 0.4336 | 0.0000 | 16.20 s | 2.84 GiB | 基线 |
| VGGT confidence | 0.0815 | 0.4372 | 0.0000 | 16.14 s | 2.88 GiB | 不通过 |
| VGGT geometry | 0.0851 | 0.4393 | 0.0000 | 16.62 s | 2.96 GiB | 不通过 |
结论:不通过。VGGT geometry 的 Chamfer 相对改善为 -0.0432,F@5% 平均增量为 0.0057,水密率仍为 0。静态全局权重无法稳定融合空间上互补的视角,并会显著改变 sparse-structure token 数与面数。下一阶段应训练空间可变的 VGGT token adapter,并单独解决 watertight extraction。
2026-07-19 · VGGT 空间稀疏适配器与监督数据准备
选择:冻结 VGGT、DINOv3 与 TRELLIS.2 sparse flow,将高置信世界点和 VGGT patch 特征聚合到 16³ voxel grid,保留 top-512 几何 token,再对 mean-DINO 条件做 cross-attention residual。
VGGT = [B,V,1374,2048]
fused_cond = mean_dino + tanh(gate) × geometry_residual
gate 零初始化,因此训练开始时输出严格等于多视图 DINO 均值;适配器只先学习 sparse occupancy / coarse topology,shape adapter 与 watertight extraction 留到后续阶段。
Toys4K 数据
- 本地 mesh 与 25-view render 完整配对 3,224 个;确定性且对象级无泄漏划分:smoke 16、train 512、val 64。
- smoke16 物化为相对 mesh 软链接与归档 PNG,官方链路依次执行 dump_mesh、asset_stats、1024 dual-grid、shape latent、64³ SS latent、16-view render_cond。
| 范围 | 1024 dual-grid | shape latent | SS latent | render_cond | 显存峰值 |
|---|---|---|---|---|---|
| 单对象 | 36.94 s | 28.23 s | 6.58 s | 208.27 s | shape 9.28 GiB; render 3.82 GiB |
| smoke16 | 110.59 s / 4 CPU workers | 8-GPU 分片 | 8-GPU 分片 | 最慢 rank 387.32 s | shape 10.04 GiB; render 6.49 GiB |
完整性:16 / 16 对象成功由 ImageConditionedSparseStructureLatent 加载,得到有限的 x_0 [8,16,16,16] 与 cond [3,518,518];共 256 张条件图,逻辑磁盘占用约 940 MiB。
DINO / VGGT 特征缓存
对每个对象的 16 个 render_cond 视角按 transforms.json 原始顺序缓存:DINO BF16 [16,1029,1024]、VGGT 最后一层 patch BF16 [16,1369,2048]、confidence-weighted world points FP32 [16,37,37,3]、confidence、4×4 transforms 与水平 FOV。
| 对象 | 模型提取均值 | 总作业墙钟 | 峰值显存 | 缓存体积 | 重载验证 |
|---|---|---|---|---|---|
| 16 × 16 views | 1.24 s/object | 64.81 s | 15.92 GiB | 1.84 GiB | 4.50 s · camera-aligned |
Adapter flow-matching smoke
冻结 1.3B sparse-flow 与全部 encoder,仅训练 VGGTSpatialAdapter;官方 target 为 v=(1-σ_min)noise-x_0。在 smoke16 上执行 100 optimizer steps、accumulation 4,共 400 samples,视角数随机覆盖 2 / 4 / 6 / 8。
| 梯度有效 | loss step 1 → 100 | last-10 mean | gate | 训练时长 | 峰值显存 | checkpoint |
|---|---|---|---|---|---|---|
| 100 / 100 | 0.2983 → 0.1022 | 0.1207 | -0.002942 | 129.52 s train; 150.19 s wall | 13.10 GiB | step 1 / 25 / 50 / 100 |
loss 使用每步重新采样的对象、视角、timestep 与 noise,因而不是单调曲线;step 1=0.2983、step 100=0.1022 仅证明训练链路和早期优化可运行。是否改善几何必须由固定验证集和 benchmark mesh 评价决定。
vggt_adapter inference · 单例正式评价
step-100 adapter 在 sparse-structure 阶段生成一个融合条件;shape 与 texture 阶段继续使用 multidiffusion。输入严格遵循 manifest 的四视图顺序及相机矩阵对齐。
| case | Adapter 提取 | 采样 | 进程墙钟 | Chamfer ↓ | F@5% ↑ | F@10% ↑ | 拓扑 |
|---|---|---|---|---|---|---|---|
| gso_000_input4 | 2.07 s · 7.83 GiB | 16.33 s · 7.84 GiB | 117.98 s | 0.08076 | 0.38030 | 0.67572 | watertight = 0.0000; winding = 0.0000; valid = 0.0000 |
负面结果:20,000 surface samples、seed 11 的正式评价显示该单例高度非水密且几何明显失真:6,606 boundary edges、8,808 nonmanifold edges,bbox 对角线 / 表面积 / 绝对体积比为 4.45795 / 13.99996 / 47.50581。这不是改进证据,说明 16-object / 100-step smoke 不足,并且在扩大训练前必须先排查坐标、体素化、gate residual 尺度与训练/benchmark 视角分布。
同 case uniform 对照与 sparse occupancy
同一 gso_000_input4、seed 1、12 steps、512 pipeline 的 uniform multidiffusion 在同一 20k/seed-11 评价中得到 Chamfer 0.06764、F@5 0.47725、F@10 0.72235。adapter 相对 uniform 的 Chamfer 恶化 19.39%,F@5 下降 0.09695,面数增加到 118.4×。
| 路径 | 32³ sparse tokens | occupancy | 坐标范围 | boundary / nonmanifold |
|---|---|---|---|---|
| uniform | uniform 26 | 0.079% | 3 × 5 × 5 | 260 / 345 |
| step-100 adapter | adapter 3,134 | 9.564% | 32 × 32 × 28 | 6,606 / 8,808 |
诊断结论:adapter sparse token 数是 uniform 的 120.5×,范围从 3×5×5 扩张到 32×32×28。当前首要问题不是 watertight 后处理,而是 sparse occupancy 爆炸;在解释并修正该问题前暂停 25/50/100 × 10-case 矩阵,避免放大无效计算。
Checkpoint sparse-only 扫描
在同一 benchmark 条件上,仅运行 sparse stage:官方 uniform multidiffusion 为 26 tokens;把四个 DINO 条件先求均值再单调用 sparse flow,即使不加任何 geometry residual,也得到 mean-DINO 单调用 3,421 tokens。step-1 3,409、step-25 3,153、step-50 3,234、step-100 3,090;step-1 的有效 condition 扰动仅 0.0062%,仍未恢复 occupancy。
架构级根因:条件均值不保持 multidiffusion 基线。sparse flow 对 condition 是非线性的,model(mean(cond_i)) ≠ mean(model(cond_i));因此当前所谓“zero-gate exact fallback”只精确回退到 mean-DINO condition,并不回退到已验证的 multidiffusion sampler。后续设计必须在 gate=0 时逐步、逐视图精确复现 multidiffusion 的 velocity 平均。
baseline-preserving v2:逐视图 residual 与精确 sparse parity
velocity = mean_i sparse_flow(x_t, t, cond_i')
gate=0 时保留全部逐视图 DINO condition,并继续使用 multidiffusion 的逐视图 velocity 平均。正式 parity gate 的 condition / token count / ordered coordinates 均精确一致:26 / 26 tokens,精确 sparse parity = true。adapter extraction 0.924 s,uniform / adapter sparse 5.509 / 4.703 s,峰值 7.54 GiB。
v2 在线重算精确 2/4/6/8-view 子集的 DINO 与 VGGT,100 optimizer steps / 400 micro-samples;loss 0.19453 → 0.08757,最小 0.03293,非零梯度 100 / 100。训练 780.35 s,平均 optimizer step 7.79 s,峰值 reserved 25.46 GiB,外部峰值 35.45 GiB。
checkpoint sparse-only 扫描高度非单调:uniform 26;step-1 285,step-25 30,step-50 4,672,step-100 320。只有 step-25 的 1.154× 通过 ≤2.0× sparse gate。
step-25 单例正式 20k/seed-11 几何评价:Chamfer 0.07727、F@5 0.41023、F@10 0.72308、watertight = 0.0000,boundary / nonmanifold = 169 / 269;bbox 0.44706、面积 0.14764、绝对体积 0.49898。相对 uniform,Chamfer 恶化 14.23%,F@5 下降 0.06701。
单例质量门控:不通过。生成成功,bbox/表面积比例与同 case uniform 处于同一量级,boundary / nonmanifold 计数也下降;但 Chamfer 与 F@5 均未改善,因此按预注册决策不运行十例矩阵。下一步诊断微小 residual 如何改变 sparse 坐标位置与尺度,再决定训练目标或正则化修改。
逐步 sparse 轨迹诊断
相同初始噪声下,latent 在 step 1 首次分叉,首步 velocity delta RMS 为 0.00614;decoded occupancy 在 step 6 首次分叉,此时 velocity delta RMS 已增至 0.09643。最后一步的 latent delta / uniform RMS 达 1.3116×,latent cosine 降至 0.00945。
最终 uniform / adapter tokens 为 26 / 24,坐标集合 Jaccard 0.0000,质心相距 25.05 voxels。相同进程内重复 step-25 得到 24 / 24,Jaccard 1.0000,说明完整支持集搬移是稳定行为;先前 23/24/30 token 波动来自阈值附近数值敏感性,而不是运行内随机噪声。
根因结论:token count 相近不能约束 sparse support 的位置。极小 condition residual 经 CFG、非线性 flow 与后期大 Euler step 累积放大,最后跨过 decoder 的零阈值并把支持集整体搬到另一空间区域。诊断首次尝试还因 The first trajectory run sampled uniform successfully but failed while decoding intermediate latents because low_vram had moved the sparse decoder back to CPU. A regression test now moves the decoder to the pipeline device and restores it to CPU, while reusing the production 64^3-to-32^3 max-pool path. 失败;已通过遵循 low-VRAM decoder 设备迁移并复用生产 64³→32³ max-pool 路径修复。
Residual α sweep 与安全支持集
固定 step-25 checkpoint,仅缩放 residual:cond_i(α)=cond_i+α(cond_i'-cond_i)。结果高度非单调:α=0.03125 / 0.0625 分别得到 297 / 144 tokens,α=0.125 / 0.5 为空,而 α=0.75 / 1.0 虽只有 23 / 22 tokens,却已搬到错误空间区域。
Residual α sweep 选择 α=0.25。α=0.25 得到 24 tokens,Jaccard 0.9231,质心漂移 0.079 voxel,满足 token / overlap / centroid 三重门槛。
α=0.25 端到端 mesh:5,361 vertices / 10,950 faces;Chamfer 0.06435,相对改善 4.86%;F@5 0.46006,F@5 下降 0.01719;F@10 0.76072,增加 0.03837。watertight = 0.0000,boundary / nonmanifold = 281 / 471。
同 case 门控:通过。按预注册规则,生成无失败、尺度未灾难性偏移,且 Chamfer 或 F@5 至少一项改善;因此允许进入固定 protocol-4 十例矩阵。但该结论不代表拓扑或水密性改善,F@5 与 edge topology 仍退化。
固定十例矩阵
α=0.25 在 protocol-4 固定前十例仅成功 9 / 10,失败率 10.0%;失败 case 为 gso_000_input4,同一 case 在独立单例进程曾成功,进一步证明阈值附近跨进程不稳定。
只在共同成功的 9 个 case 上,Chamfer 0.08316 → 0.08325,Chamfer 恶化 0.11%;F@5 0.42880 → 0.42957,F@5 增加 0.00077;F@10 增加 0.00111。这些微小 paired 变化不能抵消新增失败。
成功样本仍全部非水密,最大面数 2,662,864,最大 bbox / 表面积 / 绝对体积比为 14.22 / 192.42 / 345.02。
十例门控:不通过。违反 no-extra-failure,且多数输出出现 occupancy/尺度爆炸。停止扩大该 checkpoint/α 组合,不运行 100-case 或 protocol2/6/8;下一设计必须在训练时约束 velocity/support,而不是依赖单 case 推理缩放。
velocity trust-region v3:局部速度上界的负面结果
v_corr = mean_i flow(x_t,t,cond_i')
v_safe = v_base + min(1, cap × RMS(v_base) / RMS(v_corr-v_base)) × (v_corr-v_base)
cap-zero 精确 parity:uniform / adapter 为 26 / 26 tokens;final latent 精确一致 = true,ordered coordinates 精确一致 = true。完整进程 108.23 s,外部 GPU 峰值 8.22 GiB。
首轮 cap=0.01/0.025/0.05/0.1 全部没有真正裁剪:step-25 residual 的最大原始 velocity delta / baseline RMS 仅 0.00306。缩小到 10⁻⁶–3×10⁻³ 后,每一步实测比值均满足 cap,但最终轨迹仍高度非单调,证明局部 relative-RMS 上界不等价于累计状态或 sparse support 上界。
| 三例门代表 case | cap | token ratio | support Jaccard | 质心漂移 | final latent delta / baseline |
|---|---|---|---|---|---|
gso_000_input4 | 0.000001 | 12.7308× | 0.0000 | 13.4728 voxels | 2.8427× |
固定三例共同门耗时 237.18 s,外部 GPU 峰值 8.26 GiB。例如 gso_000_input4 在 cap=10⁻⁶ 时达到 12.7308× tokens、Jaccard 0.0000、质心漂移 13.4728 voxels,final latent delta / baseline 达 2.8427×;其他 case 可接近 baseline,显示同一 cap 的对象间敏感性差异极大。
三例门控:不通过。没有非零 constant cap 同时通过三例;selected training cap = none,因此不启动 v3 训练、不生成 mesh,也不扩大到十例或 100-case。下一版必须约束累计 state / predicted x0 或直接约束 decoder occupancy,而不是仅限制单步 velocity 的相对 RMS。watertight extraction 与 protocol-2/4/6/8 100-case 仍未完成。
cumulative state anchor v4:双轨累计状态投影
x_raw_next = Euler(x_safe, v_corr)
x_safe_next = x_base_next + project(x_raw_next - x_base_next)
RMS(x_safe_next-x_base_next) ≤ rel_cap × RMS(x_base_next)
v4 不再把 baseline velocity 评估在已经分叉的 adapter state,而是同步维护一条独立 uniform shadow trajectory。cap=0 时,初始噪声、shadow、候选与独立 uniform 的全部 12 个 latent state 精确一致;最终 sparse tokens 为 26 / 26,ordered coordinates 精确一致 = true。完整进程 106.24 s,外部 GPU 峰值 8.22 GiB。
单例从 `1e-5` 扫到 `0.1` 均满足累计 state 上界。rel_cap=0.100 首次对 gso_000_input4 产生受控 support 变化:25 tokens,Jaccard 0.9615,质心漂移 0.1038 voxels;没有出现 v3 的空 support、整体搬移或跨吸引子发散。
| 固定三例 @ rel_cap=0.1 | token ratio | Jaccard | 质心漂移 | final latent delta / uniform |
|---|---|---|---|---|
gso_000_input4 | 0.9615× | 0.9615 | 0.1038 voxels | 0.1000× |
gso_001_input4 | 0.9941× | 0.9941 | 0.0241 voxels | 0.0377× |
gso_002_input4 | 0.9770× | 0.9680 | 0.3724 voxels | 0.1000× |
三例 gate 中,gso_000_input4 的 Jaccard 为 0.9615;最大质心漂移来自 gso_002_input4,为 0.3724 voxels。所有 shadow states 与独立 uniform 精确一致,所有候选 final latent delta 均不超过配置 cap。
三例 state gate:通过。选择 rel_cap=0.100,三例运行 245.53 s,外部 GPU 峰值 8.26 GiB。该结果允许进入短 unroll 训练设计,但尚未证明 mesh 几何或水密性改善;在训练、同 case 正式几何门和固定十例拓扑门通过前,不运行 protocol-2/4/6/8 100-case。
v4 truncated-unroll one-step GPU smoke
- attempt 1: failed;direct CLI could not import experiments because the project root was absent from sys.path;墙钟 1.69 s
- attempt 2: failed;DINO wrapper has no parameters method during the frozen-gradient assertion;墙钟 37.78 s
- attempt 3: passed;completed;墙钟 38.65 s
固定 seed-1 选中 [4] views、timestep window [0]。loss 0.160263,flow / state loss = 0.160028 / 0.000235,gradient norm 1.586127,final state ratio 0.000333。冻结模型无梯度 = true,checkpoint 重载 = true。
成功尝试命令墙钟 38.65 s,CPU RSS 峰值 10.52 GiB,CUDA allocated / reserved 峰值 18.33 GiB / 18.77 GiB,外部 GPU 峰值 19.52 GiB。
one-step 训练门控:通过。只有在后续 100-step checkpoints 25/50/100 均通过固定三例 state gate 后,才允许进入 mesh 几何与拓扑验证。
100-step truncated-unroll systems smoke
完成 100 / 100 个非零梯度 optimizer steps;loss first / mean / last = 0.160398 / 0.125254 / 0.379477,mean state loss 0.005118,max final state ratio 0.026894。adapter gate -0.000030 → 0.001443。
训练内计时 297.93 s,完整命令 331.19 s,平均 optimizer step 2.968 s;CPU RSS 峰值 10.51 GiB,CUDA reserved 23.81 GiB,外部 GPU 峰值 24.55 GiB。
post-training fixed three-case state gates
step 25 / 50 / 100 依次在固定三例、12 sampler steps、seed 1、rel_cap=0.1 下复测;三个 checkpoints 全部通过。
| checkpoint | gate | 最小 Jaccard | 最大质心漂移 | 外部 GPU 峰值 |
|---|---|---|---|---|
| step 25 | 通过 | 0.9615 | 0.3800 voxels | 8.26 GiB |
| step 50 | 通过 | 0.9231 | 0.1684 voxels | 8.26 GiB |
| step 100 | 通过 | 0.9231 | 0.1443 voxels | 8.26 GiB |
选择 step 50。它在三个安全 checkpoints 中提供最均衡的 support overlap 与质心漂移,允许进入同 case 正式 mesh 几何/拓扑门;仍不代表 watertightness 或 100-case 性能已经改善。
same-case formal geometry/topology gate
checkpoint step 50 在 gso_000_input4 上生成 mesh,并按 20,000 surface samples、seed 11 正式评价:Chamfer 0.07542,F@5 0.43027,F@10 0.69020;bbox / surface / volume ratio = 0.47144 / 0.09987 / 0.76995。
相对完全相同的 uniform baseline,Chamfer 恶化 11.49%,F@5 下降 0.04698,F@10 下降 0.03215;boundary / nonmanifold = 360 / 355,分别增加 100 / 10。watertight = 0.0000。
完整生成命令 118.63 s,CPU RSS 峰值 24.26 GiB,外部 GPU 峰值 8.20 GiB。
同 case geometry gate:不通过。虽然输出无生成失败且尺度未灾难性偏移,但预注册 Gate D 要求 Chamfer 或 F@5 至少一项改善;两项均退化,edge topology 也未改善。因此不进入固定十例,不运行该 v4 checkpoint 的 100-case 协议,也不声称水密性提升。
decoder-aware watertight v5:几何监督与确定性水密重建
批准设计:v4 state safety did not improve same-case Chamfer, F@5, or edge topology。下一步采用 decoder-aware occupancy training plus deterministic o-voxel watertight remeshing,保留 v4 的 state anchor,同时把训练目标扩展到冻结 sparse-structure decoder 的 occupancy logits。
raw mesh = TRELLIS.2 decode
watertight mesh = o-voxel narrow-band dual-contouring remesh
100-case 基线显示 TRELLIS.2 watertight/topology-valid = 0.00 / 0.00 / 0.00 / 0.00,而 TRELLIS target = 0.87 / 0.90 / 0.91 / 0.88、ReconViaGen target = 0.85 / 0.86 / 0.86 / 0.88。v5 的最终协议门槛不是单例变好,而是在 protocol 2/4/6/8 上同时超过 TRELLIS 与 ReconViaGen。
初始权重:state = 1.00,occ BCE / Dice / band / VGGT point weights = 0.25 / 0.50 / 0.25 / 0.05。GT occupancy 由相同冻结 decoder 从 GT sparse latent 解码,预测 occupancy 由二步 unroll 的 x0_hat 解码。
v5 one-step decoder-aware GPU smoke
完成 1 optimizer step;loss 13.903753,flow 0.162397,state 0.000234,decoder occ 13.741121。occ BCE / Dice / surface-band = 48.562469 / 0.512329 / 5.377357。
gradient norm 54.801418,final state ratio 0.001044,occupancy fraction 0.061253,CUDA reserved 18.91 GiB。checkpoint: experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/decoder_aware_watertight_v5/training_smoke1/adapter_step_0001.pt。
v5 one-step gate:通过。该结果只证明 decoder-aware 训练链路、冻结模块梯度隔离和 checkpoint 元数据可运行;仍需 100-step pilot 与 fixed three-case occupancy gate。
v5 100-step decoder-aware pilot
完成 100 / 100 个非零梯度 optimizer steps;loss 13.928650 → 4.190114,decoder occ 13.765808 → 3.801179,max final state ratio 0.071633。
occupancy fraction min / max = 0.000000 / 0.111225;CUDA reserved 23.89 GiB,外部 GPU 峰值 24.64 GiB。
v5 100-step pilot:不通过。Do not generate mesh until fixed three-case occupancy gate confirms no empty/full decoded occupancy; pilot had empty decoded occupancy at step 96 and near-empty at steps 57/96.
v5 fixed three-case occupancy gates
复测 checkpoints 25 / 50 / 100;state gate all passed = true,any occupancy gate passed = false,selected checkpoint = none。
| checkpoint | gate | state | occupancy improved cases | collapse cases | min Jaccard Δ | min occupancy IoU Δ |
|---|---|---|---|---|---|---|
| step 25 | 不通过 | 通过 | occupancy improved cases 0 | 0 | 0.000000 | 0.000000 |
| step 50 | 不通过 | 通过 | occupancy improved cases 0 | 0 | 0.000000 | 0.000000 |
| step 100 | 不通过 | 通过 | occupancy improved cases 0 | 0 | 0.000000 | 0.000000 |
v5 checkpoint gate:不通过。No v5 checkpoint passed the fixed three-case occupancy improvement gate; do not generate raw or watertight meshes.
门控顺序:objective TDD → one-step GPU smoke → 100-step pilot → fixed three-case state+occupancy gate → same-case raw/watertight geometry gate → fixed protocol-4 ten-case matrix → protocol-2/4/6/8 all100 evaluation。其中 same-case raw/watertight Gate E 必须同时评价 mesh_raw.obj 与 mesh_watertight.obj,要求水密输出 topology-valid 且 Chamfer/F@5 不发生不可接受退化。
v5 决策:v5 100-step pilot completed with finite gradients and state cap, but empty/near-empty decoded occupancy appeared during training. Do not generate meshes; run or strengthen fixed three-case occupancy gate before Gate E. 因此在 Gate E 通过前不运行十例或 100-case。
mesh repair v6:v2 α=0.25 hybrid mesh repair
v5 decoder-aware 训练没有产生 occupancy improvement 后,改为在已通过几何单例门的 v2 α=0.25 raw mesh 上执行确定性后处理。默认使用 PyMeshFix;对极端碎片化 mesh 使用 MeshLab screened Poisson + boundary fan-fill;对超大单连通 mesh 提高 PyMeshFix 预简化 target_faces。
protocol-4 ten-case mesh gate:通过。watertight/topology-valid 10 / 10;mean Chamfer 0.081932 vs baseline 0.081609;mean F@5 0.438803 vs baseline 0.433643。
| case | gate | Chamfer ↓ | F@5 ↑ | F@10 ↑ | topology | faces | preprocess |
|---|---|---|---|---|---|---|---|
gso_000_input4 | 通过 | 0.066041 vs 0.067642 | 0.497449 vs 0.477248 | 0.768974 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 2,734 | backend=pymeshfix; keep=None; target_faces=None; poisson_depth=None |
gso_001_input4 | 通过 | 0.089577 vs 0.090622 | 0.328850 vs 0.320657 | 0.587303 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 449,604 | backend=pymeshfix; keep=None; target_faces=None; poisson_depth=None |
gso_002_input4 | 通过 | 0.049776 vs 0.053545 | 0.650318 vs 0.600128 | 0.858309 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 234,960 | backend=pymeshfix; keep=1; target_faces=100000; poisson_depth=None |
gso_003_input4 | 通过 | 0.040599 vs 0.040652 | 0.706689 vs 0.710778 | 0.997048 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 295,076 | backend=pymeshfix; keep=1; target_faces=300000; poisson_depth=None |
gso_004_input4 | 通过 | 0.107434 vs 0.107843 | 0.222504 vs 0.219337 | 0.441418 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 100,120 | backend=pymeshfix; keep=1; target_faces=100000; poisson_depth=None |
gso_005_input4 | 通过 | 0.069330 vs 0.068138 | 0.341970 vs 0.349906 | 0.680455 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 328,064 | backend=pymeshfix; keep=None; target_faces=None; poisson_depth=None |
gso_006_input4 | 通过 | 0.073083 vs 0.071645 | 0.487258 vs 0.466901 | 0.685385 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 1,832,108 | backend=pymeshlab_poisson_fill; keep=None; target_faces=None; poisson_depth=9 |
gso_007_input4 | 通过 | 0.156216 vs 0.153409 | 0.166991 vs 0.185804 | 0.358187 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 278,432 | backend=pymeshfix; keep=None; target_faces=None; poisson_depth=None |
gso_008_input4 | 通过 | 0.135412 vs 0.130677 | 0.191150 vs 0.207906 | 0.376619 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 827,994 | backend=pymeshfix; keep=None; target_faces=None; poisson_depth=None |
gso_009_input4 | 通过 | 0.031856 vs 0.031918 | 0.794851 vs 0.797768 | 1.000000 | watertight=1.0000; valid=1.0000; boundary/nonmanifold=0/0 | 83,166 | backend=pymeshfix; keep=1; target_faces=100000; poisson_depth=None |
v6 结论:这已经生成了固定 protocol-4 十例上 topology-valid 且几何不退化的 watertight mesh;下一步才有资格扩大到 protocol-2/4/6/8 的 100-case 统计。
失败与修复记录
- The TRELLIS.2 checkout did not include data_toolkit/datasets/Toys4k.py; the older TRELLIS-500K adapter also passed only sha256 and lacked the no_file callback mode. A tested TRELLIS.2-compatible adapter now passes func(file_or_none, full_metadatum).
- asset_stats assumed the optional pbr_dumped column existed, so mesh-only Toys4K preprocessing failed. A regression test now makes a missing pbr_dumped field select the mesh dump path.
- The first shape encoder attempt used HF_HUB_OFFLINE=1 before the encoder JSON was cached and failed after 5.35 seconds. The online retry downloaded/resolved the missing files and completed in 28.23 seconds.
- render_cond uses a separate hard-coded Blender 3.0.1 path. Its sudo dependency installation failed without a TTY, but the script downloaded Blender 3.0.1 and rendered successfully; the first 208.27-second wall time therefore includes setup overhead.
- ImageConditionedSparseStructureLatent initially failed with KeyError: aesthetic_score. The materializer now records curated Toys4K smoke objects with aesthetic_score=5.0, satisfying the official default 4.5 filter.
- The first formal adapter inference succeeded operationally but produced a severely distorted, non-watertight mesh: Chamfer 0.080757, F@5% 0.380302, 6,606 boundary edges, 8,808 nonmanifold edges, and bbox diagonal ratio 4.45795. This blocks blind scaling until coordinate, voxelization, residual-scale, and view-distribution diagnostics are complete.
- Baseline-preserving v2 passed exact zero-gate sparse parity, but its learned checkpoints were highly non-monotonic. Step 25 was the only <=2x sparse candidate and still worsened Chamfer by 14.23% and F@5 by 0.06701 on the formal same-case gate, so the ten-case matrix remains blocked.
- The first step-25 trajectory diagnostic failed after uniform sampling because low_vram had moved the sparse decoder to CPU while intermediate latents were moved to CUDA. The diagnostic now has a regression test for decoder device migration and reproduces the production 64^3-to-32^3 downsampling path.
- The first residual alpha sweep failed because a [V,N,C] scaled condition was passed to a helper requiring [1,V,N,C]. A regression-tested local condition builder fixed the shape contract; the final sweep selected alpha 0.25.
- The alpha-0.25 fixed ten-case matrix succeeded on only 9/10 cases. gso_000 produced empty sparse support in the batch process despite succeeding alone; successful outputs reached 2,662,864 faces, bbox ratio 14.22, surface-area ratio 192.42, and absolute-volume ratio 345.02.
- Velocity trust-region v3 passed exact cap-zero parity, but the initial 0.01-0.1 caps did not clip because the learned correction was only about 0.00306 of baseline velocity RMS.
- Fine caps from 1e-6 to 3e-3 obeyed every per-step velocity bound yet remained highly non-monotonic: gso_000 ranged from empty support to 12.73x tokens or a support set shifted by about 25 voxels.
- The fixed three-case gate rejected every nonzero cap. At cap 1e-6, gso_000 reached 12.73x tokens and final latent delta/baseline 2.8427x while gso_001 stayed close to baseline, proving severe object-dependent sensitivity.
当前结论:Task 6 adapter inference 已完成端到端单例验证、uniform 对照和 checkpoint sparse-only 扫描。失败根因已缩小为 condition-level mean 破坏 multidiffusion baseline;16→4 VGGT context mismatch 是次要分布风险,但不是本次 occupancy 爆炸主因。下一步重新设计为 baseline-preserving 的逐视图 residual 融合;在 zero-gate token count 精确等于 uniform 前不恢复训练或 10-case 矩阵。尚未开始 512-object 正式训练、watertight extraction 或完整四协议评估。
5 个 case 可视化
gso_000_input4








TRELLIS stochastic · reverse
TRELLIS multidiffusion · 非正交
TRELLIS multidiffusion · 正交
TRELLIS.2 stochastic · identity
TRELLIS.2 stochastic · reverse
TRELLIS.2 multidiffusion · 非正交
TRELLIS.2 multidiffusion · 正交
gso_001_input4








TRELLIS stochastic · identity
TRELLIS stochastic · reverse
TRELLIS multidiffusion · 非正交
TRELLIS multidiffusion · 正交
TRELLIS.2 stochastic · identity
TRELLIS.2 stochastic · reverse
TRELLIS.2 multidiffusion · 非正交
TRELLIS.2 multidiffusion · 正交
gso_002_input4








TRELLIS stochastic · identity
TRELLIS stochastic · reverse
TRELLIS multidiffusion · 非正交
TRELLIS multidiffusion · 正交
TRELLIS.2 stochastic · identity
TRELLIS.2 stochastic · reverse
TRELLIS.2 multidiffusion · 非正交
TRELLIS.2 multidiffusion · 正交
gso_003_input4








TRELLIS stochastic · identity
TRELLIS stochastic · reverse
TRELLIS multidiffusion · 非正交
TRELLIS multidiffusion · 正交
TRELLIS.2 stochastic · identity
TRELLIS.2 stochastic · reverse
TRELLIS.2 multidiffusion · 非正交
TRELLIS.2 multidiffusion · 正交
gso_004_input4








TRELLIS stochastic · identity
TRELLIS stochastic · reverse
TRELLIS multidiffusion · 非正交
TRELLIS multidiffusion · 正交
TRELLIS.2 stochastic · identity
TRELLIS.2 stochastic · reverse
TRELLIS.2 multidiffusion · 非正交
TRELLIS.2 multidiffusion · 正交
限制
- 这是对原始单图生成模型的推理期多视角融合,不是带相机位姿的稀疏视角重建网络。
- 仅 5 个 GSO 对象,结论用于机制验证,不代替大规模统计。
- stochastic 的结果依赖 steps 与视图数的整除关系;本实验固定 12/4,以隔离 timestep 绑定效应。
- TRELLIS.2 多图功能来自本地修改分支,不应误认为官方发布模型原生支持该接口。