Skip to content

KeyanHu-git/depth_estimation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

深度估计项目

深度估计模型的长期基准工作区,覆盖模型复现、推理、评测、成本对比和生成式深度训练线。全项目使用相对路径,入口脚本自解析项目根目录,外部数据和权重通过软链接入,可整体搬移。迁移到新机器的完整流程见 docs/MIGRATION.md

一、方法覆盖

评测线当前有 11 个进入主表并被 official 基准入口支持的模型,登记于 docs/references/model_registry.yaml(历史参考;运行时真相源为 configs/eval 继承树):

模型族 注册模型 类型 推理入口
depth_anything da1_large_hf 相对深度 tools/predict/predict_depth_anything_hf_nyu.py
depth_anything da2_large_hf 相对深度 同上
depth_anything da2_metric_indoor_large_hf 米制深度 同上
depth_anything da3_giant_large 米制深度 tools/predict/predict_da3_nyu.py
anydepth anydepth_dav2_sdt_vitb 相对深度 tools/predict/predict_anydepth_nyu.py
anydepth anydepth_da3_sdt_vitl 相对深度 同上
depth_pro depth_pro 米制深度 tools/predict/predict_depth_pro_nyu.py
marigold marigold_depth_v1_1 相对深度 tools/predict/predict_marigold_nyu.py
depthfm depthfm_v1 相对深度 tools/predict/predict_depthfm_nyu.py
metric3d metric3d_vit_giant2 米制深度 tools/predict/predict_metric3d_nyu.py
fe2e fe2e_ldrn_step1x 米制深度 scripts/inference/run_fe2e_nyu.sh(内部调用 Reference/FE2E/evaluation.py

另有两条登记但未进入主表的方向:jasmine(自监督单目深度,源码权重已就位、可本地运行,尚未接入 official 基准入口,SD2 底座暂以 Marigold 顶替)和 flux2(项目内生成式 depth/normal LoRA 训练线,旧结果已全部判无效归档,待重启)。

AnyDepthDepth Anything 是两套独立模型族,结果目录和表格必须分开。

二、config 驱动方式

项目一切运行由 configs/_base_ 继承树驱动(规范全文见 /opt/data/private/code/Generate/image2image/docs/项目入库规范.md;本项目迁移台账见 docs/MIGRATION_TO_STANDARD.md)。一次评测 = 一份 yaml + 一行 bash:

bash scripts/eval.sh configs/eval/depth_bench/<实验>.yaml
  • configs/datasets/depth/:数据集 pipeline 配置(manifest 路径、EvalDepthPairedDataset 参数)。
  • configs/eval/_base_/:评测协议块(eigen crop / no crop、深度范围、七指标清单)。
  • configs/eval/depth_bench/<实验>.yaml:逐实验 delta(pred_dir、alignment、输出目录)。
  • 解析由 src/utils/config_loader.py(与 image2image 逐字同源)完成;深合并、null 整块替换、 ./../ 相对路径按 yaml 所在目录解析。
  • 历史注册表四件套(model_registry / dataset_registry / benchmark_protocol / paper_metric_sources) 已降级为参考文档,迁至 docs/references/,不再是运行时真相源。
  • flux2 训练线的归属(迁回本项目或整线迁至 flux2 项目)见 MIGRATION_TO_STANDARD.md Gate 4,待决策。

三、标准目录

configs/              单一真相源:datasets 管线 + eval 协议 + 逐实验 delta yaml
Dataset/              数据集框架(DATASETS 注册器 + EvalDepthPairedDataset)
Evaluation/           评测框架(METRICS 注册器 + metrics/depth 七指标四对齐 + evaluator + CLI)
dataset/              数据唯一落点:外部数据根软链(<名>_raw) + manifests/ + splits/ + samples/ + 本地评测布局
docs/                 项目文档;归档在 docs/archive/;环境快照在 docs/env/;降级注册表在 docs/references/
src/utils/            ConfigLoader(与 image2image 逐字同源)
src/depth_estimation/ 共享库:路径常量和几何工具
tools/data/           清单构建和数据整理
tools/predict/        各模型 NYU 推理入口
tools/eval/           指标评测
tools/flux2/          flux2 训练线的导出、评测和可视化
tools/report/         结果索引、报告和统一可视化
tools/ops/            benchmark 包装器、元数据回填和结构校验
scripts/data/         权重下载、数据集解压、本地软链重建
scripts/inference/    各模型推理运行入口
scripts/benchmark/    smoke、official 和批量基准测试
scripts/flux2/        flux2 训练线运行入口
scripts/ops/          归档、索引汇总和结构校验入口
outputs/inference/    推理输出和指标
outputs/experiments/  正式训练实验和人脸评测源图
outputs/benchmark/    基准测试记录
outputs/diagnostics/  异常诊断输出
outputs/archive/      错误、失败、非正式结果归档
outputs/reports/      生成的结果索引
logs/                 按 data_prep、inference、train、benchmark 分类的日志,旧日志在 logs/archive/
cache/                运行期锁和下载缓存
Reference/          第三方源码快照
weights/              指向共享预训练权重的软链

四、路径契约

  • 所有 shell 入口用 ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd) 自解析项目根,随后 cd "$ROOT";项目放在任何路径都能运行。
  • 所有 Python 工具的路径默认值是项目根相对路径,直接运行工具时先 cd 到项目根。
  • 外部依赖只有两个根目录,均可用环境变量覆盖:DATA_ROOT(默认 /opt/data/private/datas/Datasets/Depth_Estimation)和 PRETRAIN_ROOT(默认 /opt/data/private/datas/Pretrain_model),定义在 src/depth_estimation/paths.pyscripts/data/prepare_local_assets.sh
  • 项目内不直接写外部绝对路径:数据经 dataset/<名>_raw 软链、权重经 weights/ 软链引用,软链统一由 bash scripts/data/prepare_local_assets.sh 幂等重建。
  • 跨项目依赖有两个,均可环境变量覆盖:flux2 训练框架(FLUX2_ROOT,仅训练线需要)和 DINOv3 代码仓(DINOV3_REPO,预留钩子,当前流水线非必需)。

五、运行方式

常用入口,全部从项目根执行:

bash scripts/ops/validate_project.sh                 # 结构和注册表校验
bash scripts/ops/collect_results_index.sh            # 刷新结果索引
bash scripts/benchmark/collect_benchmark_index.sh    # 刷新 benchmark 索引
DRY_RUN=1 bash scripts/ops/archive_invalid_results.sh

单模型正式评测(NYU official 654 张,第一基准):

MODEL=da1_large_hf GPU=0 N=654 bash scripts/benchmark/run_benchmark_official_nyu.sh
MODEL=fe2e_ldrn_step1x GPU=0,1,2,3 N=654 FE2E_NUM_GPUS=4 bash scripts/benchmark/run_benchmark_official_nyu.sh

批量评测走批处理文件,一行未注释等于一个模型评测,编辑后直接执行:

bash scripts/benchmark/batch_official.sh

链路预检(不进正式结果表):

N=64 bash scripts/benchmark/run_benchmark_smoke_nyu.sh

flux2 训练线(重启前只保留入口,不代表有效结果):

bash scripts/flux2/run_flux2_synth_mix_lora128_1k_4gpu.sh    # config、步数、结果目录可用环境变量覆盖

official 入口自带 cache/benchmark_official.lockdir 单任务锁,防止并发污染速度和显存口径。

六、评测与可视化口径

  • 正式跨模型比较以 NYU Depth V2 official test 654 张为第一基准;16 张 subset 只能作 smoke。
  • 米制深度模型主结果对齐方式为 none;相对深度模型同时报告 least_squareleast_square_disparity
  • 报告和横向对比不使用各模型自带预览图,统一从 .npy 重新渲染:深度图 turbo / 0.001m-10m,误差图 inferno / 0m-2m(显式加 --with-error-row)。入口:
python tools/report/visualize_depth_comparison.py
  • 正式推理 run 必须包含预测结果、评测输出、benchmark.jsonrun_config.yamlcommand.txt;正式训练 run 要求见 docs/PROJECT_DESIGN.md

七、数据与清单

原始数据放在 DATA_ROOT 下,项目内只保留软链、清单和布局。当前登记的训练入口清单(Hypersim 90% / Virtual KITTI 10% 混合):

dataset/manifests/synth_mix_depth_normal_train_{1k,5k,10k}.jsonl
dataset/manifests/synth_mix_depth_normal_train_{1k,5k,10k}_materialized.jsonl

正式训练默认使用 *_materialized.jsonl。NYU 评测布局 dataset/nyu_depth_v2_labeled_test/ 由官方 .mat 加 Marigold official split 生成,重建命令见 docs/MIGRATION.md。数据集状态刷新:

python tools/data/write_dataset_status.py

八、清理与归档

错误、失败或非正式结果不删除,统一归档到 outputs/archive/invalid_时间戳/

DRY_RUN=1 bash scripts/ops/archive_invalid_results.sh   # 预览
bash scripts/ops/archive_invalid_results.sh             # 执行
INCLUDE_FAILED_VERIFY=1 bash scripts/ops/archive_invalid_results.sh   # 处理空失败 verify 目录

九、文档索引

  • docs/PROJECT_DESIGN.md:项目结构和不变量。
  • docs/MIGRATION.md:迁移到新机器的完整流程(环境、权重、数据集、核对)。
  • docs/DATASETS.md:数据集状态和下载规则。
  • docs/MODELS.md:模型族和注册表规则。
  • docs/EVALUATION_PROTOCOL.md:指标和对齐规则。
  • docs/TRAINING_PROTOCOL.md:训练规范。
  • docs/BENCHMARK_PROTOCOL.md:基准测试记录规范。
  • docs/RESULTS_INDEX.md:结果索引和汇总口径。
  • docs/CURRENT_TASKS.md:未完成任务和阻塞项。

About

Depth estimation benchmark workspace (aligned to image2image architecture standard)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors