Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
8e8aef0
add Exp1: state token temporal frequency analysis
Mar 20, 2026
f75a457
add experiment.md with run instructions for Exp1
Mar 20, 2026
f39af64
add ExpA: frequency vs reconstruction error correlation analysis
Mar 20, 2026
656b655
add ExpA2: frame-level state dynamics vs reconstruction quality
Mar 20, 2026
b8970db
add batch frame-level analysis across multiple ScanNet scenes
Mar 20, 2026
1bccbd6
add confidence-gated state update (ttt3r_conf) and ablation script
Mar 20, 2026
4c2e715
Add spectral analysis script for state token frequency-domain study
Mar 20, 2026
10a2ba6
Support TUM dataset format in spectral analysis
Mar 20, 2026
aa55d5a
Add batch spectral analysis across ScanNet + TUM scenes
Mar 21, 2026
84afcd5
Implement Spectral-Informed Adaptive State Update (SIASU)
Mar 21, 2026
f120308
Fix spectral modulation warm-start bug
Mar 21, 2026
abf9421
Add Layer 1: frequency-domain frame novelty selection
Mar 21, 2026
82dd23f
Fix build_views: use bool tensors instead of None for update/reset
Mar 21, 2026
1e3cd8b
Fix frame novelty metric: absolute energy + adaptive thresholding
Mar 21, 2026
e9cc10b
Rename novelty → spectral_change throughout
Mar 21, 2026
e0f3dd1
Add batch_frame_novelty.py for Layer 1 batch validation
Mar 21, 2026
e382e7d
Fix batch_frame_novelty: fair evaluation + TUM depth matching
Mar 21, 2026
5164275
Add metric_comparison.py: spectral_change vs L2/high_freq/mid_freq ba…
Mar 21, 2026
a70e1b8
Add dynamic_token_analysis.py: validate dynamic token hypothesis
Mar 22, 2026
2549803
Add B2 memory gate implementation and project docs
Mar 22, 2026
9b731da
Fix UnicodeEncodeError in memgate_ablation.py
Mar 23, 2026
c553f59
Add B3 geometric consistency gate for state updates
Mar 23, 2026
11cccba
Refactor B3 geo gate to frequency domain: LFE of log-depth diff
Mar 23, 2026
8706886
Tune B3 geo gate: configurable freq cutoff, expand sweep
Mar 23, 2026
359e8f9
Update CLAUDE.md and research progress with B3 geogate results
Mar 23, 2026
dc6dceb
Add Claude Code context prompt for new sessions
Mar 23, 2026
099f724
Layer 2 SIASU ablation 完成: ttt3r_spectral -8.3%, τ不敏感
szy233 Mar 23, 2026
c028794
Joint ablation: L23+ttt3r 达最优 -7.5%, L1 与细粒度门控冲突
szy233 Mar 23, 2026
5819be3
更新文档: Joint Ablation 结果, L23+ttt3r -7.5% 为最终方案
szy233 Mar 23, 2026
13e7546
数据集迁移至 /mnt/sda 并添加正式评测支持
szy233 Mar 23, 2026
5da8356
更新文档: Relpose 正式评测结果 (ScanNet ATE -68.1%, TUM ATE -64.1%)
szy233 Mar 24, 2026
3d64edd
文档: 修正 ScanNet scene 数量并记录 Eigenvalue failure 根因
szy233 Mar 24, 2026
f712bb2
文档: 添加 Video Depth 评测结果 (KITTI/Bonn/Sintel)
szy233 Mar 24, 2026
6c45e47
修复 _forward_impl 支持所有 update type, 添加 7scenes 3D Recon 评测结果
szy233 Mar 25, 2026
36fcf6c
add experiment matrix results and configuration for CUT3R vs TTT3R
ntujiachen002-star Mar 25, 2026
bfe6baa
feat: add exported evaluation logs and analysis artifacts
Mar 27, 2026
5cb73fb
docs: add zjc branch working notes
Mar 27, 2026
ff4b3f6
docs: refresh claude notes for zjc branch
Mar 27, 2026
ed08a91
feat: add a2 cosine variance proxy analysis
Mar 27, 2026
f84e9fb
feat: add formal a4 co3d convergence results
Mar 27, 2026
28f4d52
feat: add paper-style analysis figures
Mar 27, 2026
f885a80
feat: add stability brake video depth path
Mar 27, 2026
5ef1f9a
fix: parameterize kitti preprocessing
Mar 27, 2026
c70371b
feat: add remote kitti runbook
Mar 27, 2026
cd57a18
fix: guard rope fallback indices
Mar 27, 2026
57cc62f
fix: support official kitti depth selection layout
Mar 27, 2026
3ebd81d
fix: group flat kitti selection sequences
Mar 27, 2026
da6b0de
results: add kitti brake outdoor comparison
Mar 27, 2026
4e3e14e
fix: only reset brake state on true reset mask
Mar 27, 2026
00c9bf4
docs: add kitti brake bugfix analysis report
Mar 27, 2026
4f1a9b2
results: add kitti s1 500 bugfix final metrics json
Mar 27, 2026
fd4fd8f
docs: finalize zjc experiment log
Mar 27, 2026
a2b539d
docs: focus experiment story on brake only
Mar 27, 2026
6ec6a0d
docs: add kitti brake summary
Mar 27, 2026
47b8aa0
docs: remove claude prompt note
Mar 27, 2026
e29ebbe
docs: simplify CLAUDE to experiment-results summary
Mar 28, 2026
e1a7e63
docs: restore CLAUDE and add safe224 experiment update
Mar 28, 2026
8df2678
docs: add safe224 visual evidence figures and plotting script
Mar 28, 2026
623268d
fix: fallback to raw sequence RGB when exported color is black
Mar 28, 2026
63d29de
fix: use valid frame for typical visual and update docs
Mar 28, 2026
3463593
fix: publish cache-busting typical visual file for frame008
Mar 28, 2026
4436e1d
chore: remove outdated typical depth figure
Mar 28, 2026
567fabf
results: add safe224 reproducibility seed study (3x repeats)
ntujiachen002-star Mar 28, 2026
4cac018
docs: add result tables and analysis for safe224 reproducibility
Mar 28, 2026
d1a59c3
analysis: add local S2 overhead tool and szy-todo feasibility note
Mar 28, 2026
fb090f4
results: add safe224 drift0 vs drift overhead comparison
Mar 28, 2026
f743a40
docs: expand drift compare report with full setup and paper-style ana…
Mar 28, 2026
e56c1ee
fix: robust peak VRAM logging with nvidia-smi fallback
Mar 28, 2026
3765068
exp: add local SAFE224 reset sensitivity study with reproducible report
Mar 28, 2026
ed1f661
feat: add server-ready waymo/nuscenes relpose pipelines
Mar 28, 2026
d431347
fix: harden waymo relpose conversion and linux script execution
Mar 28, 2026
c7ba452
perf: enable h200-friendly bf16 tf32 and multi-gpu defaults
Mar 28, 2026
6b7343f
results: add H200 nuScenes relpose run outputs and runlog
Mar 29, 2026
1c31182
docs: add full nuscenes trainval h200 relpose results
Mar 29, 2026
6be34c2
fix: enable alpha_drift in brake and clean duplicated nuscenes summary
Mar 29, 2026
1720b70
docs: complete nuscenes/depth metrics and update runlog
Mar 29, 2026
bbe13d7
docs: rewrite CLAUDE_zjc with metric-focused brake summary
Mar 29, 2026
f9448cc
feat: add KITTI odometry OOD relpose experiment
ntujiachen002-star Mar 31, 2026
1fbbaf5
fix: replace ttt3r_ortho with ttt3r_momentum_inv_t1 in kitti_odo run …
ntujiachen002-star Mar 31, 2026
467a6be
fix: use src/ model path to ensure dust3r sys.path setup works
ntujiachen002-star Mar 31, 2026
20a8d00
docs: add KITTI odometry OOD evaluation report with data analysis
ntujiachen002-star Mar 31, 2026
3bba68d
docs: add in-depth analysis of adaptive dampening failure on short se…
ntujiachen002-star Mar 31, 2026
632e8eb
docs: add ATE RMSE metrics to KITTI odometry report
ntujiachen002-star Mar 31, 2026
803c98b
feat: add KITTI odometry full-sequence evaluation pipeline
ntujiachen002-star Mar 31, 2026
4fa158d
feat: add standalone KITTI download script with resume support
ntujiachen002-star Mar 31, 2026
383e240
Add DD3R training notes markdown
ntujiachen002-star Mar 31, 2026
d9ee9a1
docs: add KITTI odometry full-sequence evaluation report (00-10, 14 m…
ntujiachen002-star Apr 2, 2026
62bcaf6
docs: add comprehensive reproducibility appendix to KITTI full report
ntujiachen002-star Apr 2, 2026
99e54cc
docs: add ATE Mean/RMSE dual metrics, fix data from duplicated _error…
ntujiachen002-star Apr 2, 2026
9bb64fa
feat: add auto-gamma support to DTU reconstruction eval
ntujiachen002-star Apr 2, 2026
c5d8c1d
fix: correct excl-01 values and duplicate section numbering in KITTI …
ntujiachen002-star Apr 2, 2026
753d83f
fix: correct total frame count 22410→23201 in KITTI report
ntujiachen002-star Apr 2, 2026
2a5fc85
docs: add DTU 3D reconstruction experiment (14 configs x 22 scenes)
Apr 3, 2026
017ea98
docs: revise DTU report with robust statistics and reproducibility note
Apr 3, 2026
0f0ef35
docs: rewrite CLAUDE for DDD3R on zjc
Apr 3, 2026
55f868f
feat: add 7scenes 3D reconstruction experiment (14 configs x 18 scenes)
Apr 5, 2026
633536b
docs: fix 7scenes report claims
Apr 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
__pycache__/
*.py[cod]

# Analysis results (large images, npz, logs)
analysis_results/

# C extensions
*.so

Expand Down Expand Up @@ -58,4 +61,5 @@ src/checkpoints
tmp
eval_results

.vscode
.vscode
model/
279 changes: 279 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,279 @@
# DDD3R on `zjc` Branch

## 1. What This Repository Is

This repository is still named `TTT3R`, and the upstream / baseline identity comes from the original TTT3R project on the `szy` branch:

- upstream topic: train-free, inference-time improvement for recurrent 3D reconstruction built on CUT3R
- core model class: `src/dust3r/model.py`
- main entry points: `demo.py`, `eval/relpose/launch.py`, `eval/video_depth/launch.py`, `eval/mv_recon/launch.py`

On the `zjc` branch, however, the research story has changed:

- the active project is **DDD3R**
- DDD3R is a unified state-update control framework for recurrent 3D reconstruction
- the current paper direction is no longer “TTT3R gate variants” as the main contribution
- old TTT3R / brake-only naming still exists in code and artifacts, but many of those names are now treated as historical aliases or intermediate stages

In short:

- **repository lineage**: TTT3R / CUT3R
- **current branch identity**: DDD3R
- **main research question**: how to diagnose and control recurrent state over-update / drift in a unified way

## 2. Read This Branch In The Right Order

If you need to understand `zjc`, trust files in this order:

1. `docs/DD3R_Training.md`
2. `src/dust3r/model.py`
3. `eval/relpose/launch.py`, `eval/video_depth/launch.py`, `eval/mv_recon/launch.py`
4. `analysis/` and `analysis_results/`
5. exported summaries under `eval_results_export/`

Treat these as historical or stage-specific, not as the final branch-wide truth:

- `docs/kitti_brake_summary.md`
- `docs/waymo_nuscenes_h200_runlog_20260329.md`
- `CLAUDE_zjc.md`
- old `ttt3r_*` naming in result folders

Reason:

- `zjc` evolved from “brake-only” story toward “DDD3R unified spectrum”
- some docs describe an earlier paper narrative
- code already contains backward-compatibility aliases from old names to DDD3R names

## 3. Current Project Narrative

The working DDD3R narrative on `zjc` is:

- recurrent 3D reconstruction suffers from **systematic update mis-regulation**
- this appears as three linked issues:
- **M1**: update magnitude is too large and accumulates with sequence length
- **M2**: existing adaptive scalar gates collapse toward near-constant behavior
- **M3**: update direction contains structured drift / redundancy, not just random noise
- DDD3R provides one unified update rule that covers:
- constant dampening
- temporal brake-like behavior
- directional decomposition
- drift-adaptive interpolation between them

The branch’s main method statement is therefore:

`DDD3R = unified train-free state update control for recurrent 3D reconstruction`

## 4. Canonical Method View

The most important implementation file is:

- `src/dust3r/model.py`

Important facts from the current implementation:

- old names are aliased to DDD3R paper names near the top of the file
- for example:
- `ttt3r_random` -> `ddd3r_constant`
- `ttt3r_momentum` -> `ddd3r_brake`
- `ttt3r_ortho` -> `ddd3r`
- DDD3R-related update types are implemented directly in recurrent forward paths
- orthogonal / drift decomposition, adaptive gamma, warmup, and alpha settings all live in this file

For branch understanding, think in **canonical DDD3R names first**, and only map back to old TTT3R names when reading historical logs.

## 5. Main Code Areas Added Or Expanded On `zjc`

### 5.1 Method / model logic

- `src/dust3r/model.py`
- branch-specific recurrent update logic lives here
- includes aliases, brake-style control, orthogonal decomposition, constant dampening, and adaptive DDD3R variants

### 5.2 Relpose evaluation

- `eval/relpose/launch.py`
- `eval/relpose/metadata.py`
- `eval/relpose/prepare_kitti_odometry.py`
- `eval/relpose/run_*.sh`
- `scripts/server/run_nuscenes_relpose_pipeline.sh`
- `scripts/server/run_waymo_relpose_pipeline.sh`

This area was expanded heavily on `zjc` for large-scale relpose evaluation and export.

### 5.3 Video depth evaluation

- `eval/video_depth/launch.py`
- `eval/video_depth/run_kitti.sh`
- large exported results under `eval_results_export/video_depth/`

This includes the outdoor KITTI bugfix-era comparison that was important during the brake-only stage.

### 5.4 Multi-view reconstruction

- `eval/mv_recon/launch.py`
- `eval/mv_recon/generate_7scenes_report.py`
- `eval/mv_recon/generate_dtu_report.py`
- `eval/mv_recon/run_7scenes_allconfigs.sh`
- `eval/mv_recon/run_dtu_allconfigs.sh`

This area now supports 7Scenes and DTU-style reporting for DDD3R ablations.

### 5.5 Analysis pipeline

- `analysis/`
- `analysis_results/`
- `docs/figures/`

This is where much of the paper-facing evidence and plots live:

- per-scene improvement analysis
- variance proxies
- state convergence analysis
- reset sensitivity
- overhead / runtime studies
- paper figure generation

### 5.6 Single-object local benchmark

- `benchmark_single_object/`

This is a local experimental sandbox for geometry / stability style comparisons.

### 5.7 Dataset preparation and remote workflow

- `datasets_preprocess/`
- `scripts/server/`
- `docs/REMOTE_KITTI_RUNBOOK.md`
- `docs/server_quickstart_waymo_nuscenes.md`
- `WINDOWS_DEV.md`

`zjc` is not only a method branch; it also adds a practical remote-eval workflow.

## 6. Core Documents Worth Reading

### Branch-level method / paper framing

- `docs/DD3R_Training.md`

This is the closest thing to the current branch manifesto.

### Historical branch summaries

- `CLAUDE_zjc.md`
- `docs/kitti_brake_summary.md`
- `docs/waymo_nuscenes_h200_runlog_20260329.md`

Useful for archaeology, but not authoritative over the newer DDD3R framing.

### Generated experiment reports

- `docs/dtu_experiment_report.md`
- `eval/relpose/kitti_odo_report.md`
- `eval/relpose/kitti_odo_full_report.md`
- `docs/reproducibility_safe224_seedstudy.md`
- `docs/reset_interval_sensitivity_safe224.md`

### Figures / paper export

- `analysis/paper_figures.py`
- `analysis_results/paper_figures/`
- `docs/figures/`

## 7. Practical Working Rules For This Branch

### Naming

When editing or documenting `zjc`, prefer:

- `DDD3R`
- `ddd3r_constant`
- `ddd3r_brake`
- `ddd3r`
- adaptive gamma language

Avoid presenting these as the main project identity:

- “TTT3R joint”
- “brake-only final story”
- “TTT3R gate paper”

Those names may still appear in code or exports, but they are not the best top-level framing anymore.

### Trust the code over historical markdown

If a markdown document conflicts with:

- `src/dust3r/model.py`
- current eval scripts
- current aliases / argument names

then the code wins.

### Be careful with old exported results

Some exported result folders preserve old method names for continuity.
When summarizing them:

- explain the old name
- map it to the current DDD3R interpretation
- note if the result belongs to an older narrative stage

### Reproducibility caveat

Some reports were generated from server-side logs and then copied back locally.
Before claiming a report is reproducible from the current branch state, verify:

- branch commit
- eval script scene list
- output path conventions
- whether the report was log-derived or directory-derived

## 8. Important Branch Caveats

### Caveat A: repository name and project name differ

- repo / upstream label: `TTT3R`
- current `zjc` paper identity: `DDD3R`

Do not “fix” all old names mechanically; many are intentionally kept for compatibility.

### Caveat B: not all docs are synchronized

There are at least three narrative layers coexisting:

1. upstream TTT3R project description from `szy`
2. intermediate brake-only story
3. current DDD3R unified-spectrum story

When writing new documentation, align with layer 3 unless the task is explicitly historical.

### Caveat C: old bug-era results exist

Some brake-era outputs and summaries were affected by implementation bugs later fixed.
If using those results, check whether the document already labels them as pre-fix or historical.

## 9. Useful Entry Commands

Typical commands still follow upstream TTT3R structure:

```bash
conda activate ttt3r

# demo
python demo.py --model_path MODEL_PATH --seq_path SEQ_PATH --output_dir OUT_DIR

# relpose
PYTHONPATH=src accelerate launch eval/relpose/launch.py ...

# video depth
PYTHONPATH=src accelerate launch eval/video_depth/launch.py ...

# multi-view reconstruction
PYTHONPATH=src accelerate launch eval/mv_recon/launch.py ...
```

But when selecting methods, prefer current DDD3R names or confirm which aliases the script accepts.

## 10. If You Need A One-Paragraph Summary

`szy` is the original TTT3R / CUT3R-based project branch. `zjc` has grown into a much larger experimental branch whose real research identity is now DDD3R: a unified, train-free framework for controlling recurrent state updates via constant dampening, brake-like control, directional decomposition, and adaptive interpolation on one spectrum. The most reliable branch-level references are `docs/DD3R_Training.md`, `src/dust3r/model.py`, and the current eval / analysis pipelines; many older brake-only summaries remain useful, but they should be read as intermediate history rather than the final project definition.
Loading