Skip to content

Add Depth-Anything-3 reference implementation - #44

Open
zitongzhan wants to merge 8 commits into
releasefrom
rgbd
Open

zitongzhan wants to merge 8 commits into
releasefrom
rgbd

Conversation

@zitongzhan

Copy link
Copy Markdown
Collaborator

This pull request introduces a comprehensive RGB-D pose refinement example and integrates a benchmarking and validation protocol for comparing pre- and post- refinement result.

The most important changes are:

Documentation and Protocols:

  • README.md, SHOWCASE.md, and VALIDATION.md with detailed instructions for running, reproducing, and validating DSLR pose refinement experiments, including dependencies, input requirements, evaluation protocols, and gradient correctness checks. [1] [2] [3]
  • Added benchmark/README.md summarizing the purpose and usage of benchmark scripts.

Benchmarking and Evaluation Code:

  • Introduced benchmark/showcase_benchmark.py, a script that runs and compares native BAE odometry/structure refinement with DA3 reference implementations, manages caching, reproducibility, and reports detailed metrics for each variant.

Comment on lines +147 to +149
'All methods receive the same globally attended, undistorted DSLR prediction for each scene. '
'`BAE_USE_PYPOSE_AMBIENT_GRAD=1` is enabled. No scene is selected using its AUC. '
'Raw and guarded outcomes are separate. All table AUCs are percentages; JSON stores fractions.', '',
Comment on lines +160 to +162
lines += ['', 'Native D minimizes a joint photometric objective; Open3D D performs dense pairwise odometry followed by PGO. '
'Native E rebuilds a voxel-averaged structure; reference E uses TSDF fusion and rigid color-map optimization. '
'These are different formulations, so numerical equality is not guaranteed by correct gradients.', '',
Comment on lines +177 to +180
'- The reference arms here call the actual DA3 Form D/E functions on the same cached arrays as bae. '
'They use the showcase protocol: shared self-calibration, graph baseline filter 0.1 / rotation 1°, '
'D texture gate and internal guard disabled, then a common 512-pair wide guard. '
'D+E composes raw D then E and guards the whole proposal. This differs from the historical CLI defaults.',
Comment on lines +185 to +186
'- Camera ground truth is used only for evaluation. No optimizer receives COLMAP poses or calibrated intrinsics. '
'Fixed DSLR calibration is used only to undistort the input photographs.',
Comment on lines +187 to +188
'- Per-scene input filenames, memory search attempts, checkpoint revision, configuration and metrics are in JSON. '
'Full pair errors are saved beside each prediction as `evaluation_errors.npz`.', '',
independent Ceres-style reference here, so we pin to "recovers a known
synthetic ground truth" instead of a magic reference cost).
"""
import os
sys.path.insert(0, p)

import pypose as pp
from pypose.autograd.function import psjac

from bae.autograd.graph import jacobian

from geometry import as_44, affine_inv, unproject_pixels, project_to_pixels

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant