Free Geometry: Refining 3D Reconstruction from Longer Versions of Itself
Organizations: The Hong Kong Polytechnic University, Hong Kong SAR
Abstract
Feed-forward 3D reconstruction models are efficient but rigid: once trained, they perform inference in a zero-shot manner and cannot adapt to the test scene. As a result, visually plausible reconstructions often contain errors, particularly under occlusions, specularities, and ambiguous cues. To address this, we introduce Free Geometry, a framework that enables feed-forward 3D reconstruction models to self-evolve at test time without any 3D ground truth. Our key insight is that, when the model receives more views, it produces more reliable and view-consistent reconstructions. Leveraging this property, given a testing sequence, we mask a subset of frames to construct a self-supervised task. Free Geometry enforces cross-view feature consistency between representations from full and partial observations, while maintaining the pairwise relations implied by the held-out frames. This self-supervision allows for fast recalibration via lightweight LoRA updates, taking less than 2 minutes per dataset on a single GPU. Our approach consistently improves state-of-the-art foundation models, including Depth Anything 3 and VGGT, across 4 benchmark datasets, yielding an average improvement of 3.73% in camera pose accuracy and 2.88% in point map prediction. Code is available at https://github.com/hiteacherIamhumble/Free-Geometry .
Figures & tables
| # Views | ETH3D | 7-Scenes | ScanNet++ | HiRoom | ||||
|---|---|---|---|---|---|---|---|---|
| AUC@3 | F1 | AUC@3 | F1 | AUC@3 | F1 | AUC@3 | F1 | |
| 8 | 0.445 | 0.536 | 0.315 | 0.439 | 0.733 | 0.436 | 0.827 | 0.787 |
| 0.424 | 0.188 | 0.302 | 0.285 | 0.747 | 0.306 | 0.857 | 0.682 | |
| 4 | 0.318 | 0.142 | 0.254 | 0.239 | 0.586 | 0.231 | 0.700 | 0.561 |
| #View | Method | ETH3D | ScanNet++ | 7-Scenes | HiRoom | ||||
|---|---|---|---|---|---|---|---|---|---|
| AUC3 | F1 | AUC3 | F1 | AUC3 | F1 | AUC3 | F1 | ||
| 4 | VGGT | 0.157 | 0.102 | 0.408 | 0.171 | 0.238 | 0.196 | 0.421 | 0.276 |
| VGGT+Free Geo | 0.178 | 0.110 | 0.419 | 0.174 | 0.241 | 0.197 | 0.441 | 0.307 | |
| DA3 | 0.286 | 0.207 | 0.620 | 0.236 | 0.280 | 0.244 | 0.708 | 0.557 | |
| DA3+Free Geo | 0.305 | 0.209 | 0.624 | 0.239 | 0.302 | 0.248 | 0.719 | 0.578 | |
| 8 | VGGT | 0.207 | 0.301 | 0.496 | 0.326 | 0.252 | 0.329 | 0.516 | 0.502 |
| #View | VGGT w/. Free Geo | DA3 w/. Free Geo | ||||||
|---|---|---|---|---|---|---|---|---|
| AUC3 | AUC30 | F1 | CD | AUC3 | AUC30 | F1 | CD | |
| 4 | +5.33% | +4.73% | +4.51% | -8.15% | +2.74% | +1.03% | +2.85% | -4.03% |
| 8 | +2.19% | +1.35% | +4.32% | -3.53% | +1.82% | +0.57% | +0.21% | -0.35% |
| 16 | +3.93% | +1.33% | +3.03% | -5.35% | +2.61% | +0.89% | +0.70% | -7.67% |
| 32 | +3.73% | +1.03% | +2.88% | -4.34% | +2.89% | +0.94% | +0.78% | -8.73% |
| Configuration | AUC3 | AUC30 | F1 | CD |
|---|---|---|---|---|
| w/o Consistency Loss | 35.87 | 72.12 | 0.2324 | 3.6976 |
| w/o Relational Loss | 36.37 | 72.22 | 0.2190 | 3.9567 |
| Full Loss (Free Geo) | 37.88 | 72.32 | 0.2475 | 3.5473 |
| VGGT | DA3 | |||
|---|---|---|---|---|
| Method | MSE | Cosine | MSE | Cosine |
| Base Model | 0.9039 | 0.8581 | 45.9079 | 0.8605 |
| Base Model + free Geo | 0.8384 | 0.8684 | 42.8949 | 0.8679 |
| Dataset | Samples/scene | Training Epochs | Learning Rate Range |
|---|---|---|---|
| ETH3D | 10 | 3 | [ -7, -4] |
| 7Scenes | 20 | 3 | [ -8, -5] |
| ScanNet++ | 10 | 3 | [ -8, -5] |
| HiRoom | 5 | 5 | [ -7, -4] |
| Selection Strategy | Pose Results | Recon Results | ||
|---|---|---|---|---|
| AUC@3 | AUC@30 | F-score | Overall | |
| Top selection | 36.87 | 72.22 | 0.2474 | 3.4653 |
| Random selection | 37.37 | 72.32 | 0.2418 | 3.5775 |
| Mixed selection (Free Geo) | 37.88 | 72.32 | 0.2475 | 3.5473 |
| Variant | Trainable | Pose Results | Reconstruction Results | ||
|---|---|---|---|---|---|
| Auc3 | Auc30 | F1 | CD | ||
| Baseline | 0 | 0.514 | 0.906 | 0.730 | 0.634 |
| LoRA r=8 | 5.311M | 0.566 | 0.919 | 0.747 | 0.622 |
| LoRA r=16 | 10.620M | 0.563 | 0.920 | 0.732 | 0.644 |
| LoRA r=32 | 21.237M | 0.581 | 0.923 | 0.755 | 0.625 |
| LoRA r=64 | 42.470M | 0.556 | 0.922 | 0.698 | 0.637 |
| View | Method | ETH3D | ScanNet++ | 7-Scenes | HiRoom | ||||
|---|---|---|---|---|---|---|---|---|---|
| Auc3 | Auc30 | Auc3 | Auc30 | Auc3 | Auc30 | Auc3 | Auc30 | ||
| 4 | VGGT | 0.157 | 0.538 | 0.408 | 0.805 | 0.238 | 0.828 | 0.421 | 0.738 |
| VGGT+Free Geo | 0.178 | 0.557 | 0.419 | 0.812 | 0.241 | 0.829 | 0.441 | 0.802 | |
| DA3 | 0.286 | 0.675 | 0.620 | 0.798 | 0.280 | 0.817 | 0.708 | 0.925 | |
| DA3+Free Geo | 0.305 | 0.687 | 0.624 | 0.799 | 0.302 | 0.819 | 0.719 | 0.939 | |
| 8 | VGGT | 0.207 | 0.666 | 0.496 | 0.886 | 0.252 | 0.822 | 0.516 | 0.864 |
| View | Method | ETH3D | ScanNet++ | 7-Scenes | HiRoom | ||||
|---|---|---|---|---|---|---|---|---|---|
| F1 | CD | F1 | CD | F1 | CD | F1 | CD | ||
| 4 | VGGT | 0.102 | 3.624 | 0.171 | 0.536 | 0.196 | 0.351 | 0.276 | 0.420 |
| VGGT+Free Geo | 0.110 | 4.097 | 0.174 | 0.535 | 0.197 | 0.351 | 0.307 | 0.331 | |
| DA3 | 0.207 | 2.742 | 0.236 | 0.546 | 0.244 | 0.471 | 0.557 | 0.176 | |
| DA3+Free Geo | 0.209 | 2.754 | 0.239 | 0.543 | 0.248 | 0.481 | 0.578 | 0.157 | |
| 8 | VGGT | 0.301 | 1.460 | 0.326 | 0.337 | 0.329 | 0.226 | 0.502 | 0.142 |