IGF-Bench
收藏IGF-Bench: Indoor Geometric Fidelity Benchmark
数据集概览
IGF-Bench 是首个用于评估条件生成室内场景图像中结构级几何保真度的基准,超越了 FID 和 LPIPS 等感知指标。它包含 3,600 张校准的合成真值视图、来自六个最先进 ControlNet 模型的 21,600 张生成图像,以及 25,200 个单目深度估计,并使用四个互补的几何指标进行评估:平面度(L_plane)、正交性(L_ortho)、边缘对齐度(L_edge) 和消失点一致性(L_vp)。
快速统计
| 项目 | 数值 |
|---|---|
| 校准真值视图 | 3,600(300 个房间 × 3 个复杂度等级 × 4 个视角) |
| 配对生成图像 | 21,600(6 个 ControlNet 模型,均基于相同 Canny 图条件) |
| 配对深度估计 | 25,200(所有真值与生成图像上的 DepthPro;DAv2 / ZoeDepth 子集) |
| 相机视场角 | 90° |
| 渲染分辨率 | 1024×1024 |
| 总大小 | ≈ 219 GB |
| 许可证 | CC BY-NC-SA 4.0(数据)+ Apache 2.0(代码) |
| 代码仓库 | https://anonymous.4open.science/r/IGF-Bench-Code |
| 论文 | NeurIPS 2026 E&D Track(评审中) |
主要发现
- 感知质量 ≠ 几何保真度:具有可比 FID 的模型(例如,SDXL FID = 64.2 vs. Flux.1 FID = 56.3)在
ΔL_ortho上仍可能相差约 2 倍(Flux.1 0.032 vs. SDXL 0.061)。感知指标会遗漏结构故障。 - 条件架构至关重要:Flux.1 的通道拼接条件机制实现了最低的
ΔL_ortho(0.032),显著优于其他五个模型使用的残差注入 ControlNet 变体。 - 边缘对齐是通用瓶颈:所有六个模型相对于真值均表现出 68%–89% 的相对
L_edge退化——即使是最佳模型在精细几何结构上也会失败。 - 合成真值的清洁性:IGF-Bench 真值上的 DepthPro AbsRel 为 0.056,而 NYU-v2(真实 Kinect)上为 0.084——更低的 MDE 噪声基底使得 IGF-Bench 的相对退化(
ΔL_*)设计对生成引起的伪影更加敏感。 L_ortho可作为无标签质量信号:通过最小L_ortho从 5 个随机 Flux.1 种子中选择每视角最佳结果,相对于最佳固定种子,L_ortho降低了 35.1%。- 合成监督可迁移(领域内):使用 1.75% 参数的 LoRA 适配器微调 DepthAnything V2-Small,在 3D-FRONT 留出测试集上,领域内 AbsRel 从 1.044 降至 0.081(−92%)。
仓库内容
此 HuggingFace 数据集仓库包含评估或扩展 IGF-Bench 所需的全部内容:
- ✅ 3D-FRONT 真值渲染:包含校准相机(RGB + EXR 深度 + 7 类语义掩码 + Canny 边缘图),以及 3 个复杂度等级(
L0_empty/L1_basic/L2_full)。 - ✅ 配对生成图像:来自六个 ControlNet 管线(SD 1.5, SDXL 1.0, SD 3.5 Large, Flux.1 Dev, Hunyuan-DiT, Kolors),采用统一协议(Canny 条件,seed=42,无负面提示,
cn_scale=1.0)。 - ✅ 每视角深度估计:所有 25,200 张图像上的 DepthPro 估计,以及 200 视角消融子集上的 DAv2 和 ZoeDepth 估计。
- ✅ 预计算评估 JSON:已填充论文中所有表格和图表的数据。
- ✅ 训练好的 LoRA 适配器:展示 IGF-Bench 可作为预训练 MDE 微调的监督信号。
- ✅ 200 视角 MDE 一致性子集:包含预计算的 DAv2 + ZoeDepth 深度。
- ✅ 正式的数据集数据表(
DATASHEET.md)和 Croissant 1.0 元数据(croissant.json)。
目录结构
igfbench-neurips2026/IGF-Bench/ ├── README.md ├── DATASHEET.md ├── croissant.json ├── dataset_card.md ├── LICENSE ├── selected_rooms.json ├── room_statistics.json │ ├── renders_textured/ ≈ 36 GB — 真值渲染视图 │ └── {scene_id}{room_type}-{room_id}/ │ └── {L0_empty,L1_basic,L2_full}/ │ └── view{0,1,2,3}/ │ ├── rgb_textured.png │ ├── depth.exr │ ├── depth.png │ ├── depth_gt.npy │ ├── canny.png │ ├── semantic_id.png │ ├── semantic_mask.png │ ├── wireframe_3d.png │ └── camera.json │ ├── generated/ ≈ 36 GB — 每模型生成图像 │ ├── sd15_canny/ │ ├── sdxl_canny/ │ ├── sd35_canny/ │ ├── flux1_canny/ │ ├── hunyuan_canny/ │ ├── kolors_canny/ │ ├── sd15_canny_with_neg/sd15_canny/ │ ├── sdxl_canny_with_neg/sdxl_canny/ │ ├── sd15_upsampled/sd15_canny/ │ └── ablation/ │ ├── flux1_seed123/ │ ├── flux1_seed456/ │ ├── flux1_seed789/ │ ├── flux1_seed1024/ │ ├── sdxl_w050/ │ ├── sdxl_w075/ │ ├── sdxl_w125/ │ └── sdxl_w150/ │ ├── depth_results/ ≈ 150 GB — 每 MDE 深度估计(NPY) │ ├── gt/ │ │ ├── depthpro/ │ │ ├── dav2/ │ │ └── zoedepth/ │ └── gen/ │ ├── sd15/depthpro/ │ ├── sdxl/depthpro/ │ ├── sd35/depthpro/ │ ├── flux1/depthpro/ │ ├── hunyuan/depthpro/ │ ├── kolors/depthpro/ │ ├── sd15_neg/depthpro/ │ ├── sdxl_neg/depthpro/ │ ├── sd15_upsampled/depthpro/ │ ├── flux1_seed123/depthpro/ │ ├── flux1_seed456/depthpro/ │ ├── flux1_seed789/depthpro/ │ ├── flux1_seed1024/depthpro/ │ ├── sdxl_w050/depthpro/ │ ├── sdxl_w075/depthpro/ │ ├── sdxl_w125/depthpro/ │ └── sdxl_w150/depthpro/ │ ├── evaluation/ ≈ 41 MB — 预计算指标输出 │ ├── igf_summary.json │ ├── igf_results.json │ ├── error_decomposition.json │ ├── mde_ablation_*.json │ ├── neg_prompt_ablation.json │ ├── n1_resolution_ablation.json │ ├── n3_lvp_improved.json │ ├── seed_ablation.json │ ├── wilcoxon.json │ ├── anova.json │ └── fid_lpips.json │ └── experiments/finetune/ └── dav2_lora_adapter/ ★ 1.8 MB — 训练好的 LoRA ├── adapter_config.json ├── adapter_model.safetensors └── README.md
快速开始
选项 A — 无需下载批量数据即可验证论文
预计算评估仅 < 50 MB,可通过直接读取 JSON 验证论文中的每个数字:
python import json from huggingface_hub import hf_hub_download
fp = hf_hub_download( repo_id="igfbench-neurips2026/IGF-Bench", filename="evaluation/igf_summary.json", repo_type="dataset", ) data = json.load(open(fp)) gt = next(d for d in data if d["model"] == "GT_baseline") print(round(gt["l_plane_residual_mean"], 3)) # → 0.056
选项 B — 下载全部并重新运行
bash pip install huggingface_hub huggingface-cli download igfbench-neurips2026/IGF-Bench --repo-type dataset --local-dir ./igf-bench-data export IGF_BENCH_ROOT=$(pwd)/igf-bench-data
然后克隆代码并运行:
bash python scripts/evaluate_igf.py --renders_root $IGF_BENCH_ROOT/renders_textured --generated_root $IGF_BENCH_ROOT/generated --depth_root $IGF_BENCH_ROOT/depth_results --output_summary igf_summary.json
选项 C — 仅下载主表一行所需数据
例如,仅重新计算 Flux.1 行(≈ 70 GB):
bash huggingface-cli download igfbench-neurips2026/IGF-Bench --repo-type dataset --local-dir ./igf-bench-data --include "renders_textured/" "generated/flux1_canny/" "depth_results/gt/depthpro/" "depth_results/gen/flux1/depthpro/"
预计算结果 JSON
| 论文项 | HF 上的 JSON 路径 | 键 |
|---|---|---|
| 表 3(主表) | evaluation/igf_summary.json |
每模型聚合均值 |
| 误差分解表 | evaluation/error_decomposition.json |
每模型 AbsRel 分解 |
| MDE 消融表 | evaluation/mde_ablation_summary.json |
SDXL/Flux × 3 MDE 主干 |
| 负面提示表 | evaluation/neg_prompt_ablation.json |
每模型有/无对比 |
| 分辨率消融表 | evaluation/n1_resolution_ablation.json |
SD 1.5 原生 vs 上采样 |
| L_vp 2D 表 | evaluation/n3_lvp_improved.json |
每模型 2D L_vp |
| 种子消融表 | evaluation/seed_ablation.json |
Flux.1 3 个种子 |
| Wilcoxon p 值 | evaluation/wilcoxon.json |
每对比 Bonferroni 校正 |
| FID + LPIPS | evaluation/fid_lpips.json |
每模型感知基线 |
许可证链
- IGF-Bench 数据集:CC BY-NC-SA 4.0(继承上游 3D-FRONT 的非商业条款,要求署名、相同方式共享、仅限非商业用途)
- 代码(独立仓库):Apache 2.0
- 各资产上游模型许可证(对下游再分发具有约束力):SD 1.5(CreativeML Open RAIL-M)、SDXL 1.0(CreativeML Open RAIL++-M)、SD 3.5 Large(Stability AI Community License)、Flux.1 Dev(FLUX.1 [dev] Non-Commercial License)、Hunyuan-DiT(Tencent Hunyuan Community License)、Kolors(Apache 2.0 + Kwai 商业注册要求)、DepthPro(Apple Sample Code License)、Depth-Anything V2-Small(Apache 2.0)、ZoeDepth(MIT)
- 评估专用数据集(未重新分发,需从官方来源获取):NYU-v2、iBims-1
维护
作者承诺在论文发表后至少维护 5 年,包括:
- 在 HuggingFace 上托管并发布版本化版本
- 通过 GitHub Issues 进行错误修复
- 添加新的生成模型
- 在主要 MDE 主干发布时定期重新评估
- 旧版本在 HuggingFace 上仍可访问




