File size: 4,300 Bytes
34c4075
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4638fcc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3b9c0ef
4638fcc
3b9c0ef
4638fcc
3b9c0ef
4638fcc
3b9c0ef
 
 
 
4638fcc
3b9c0ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4638fcc
3b9c0ef
 
 
4638fcc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
---
datasets:
- depth-anything/DA3-BENCH
base_model:
- zoooooooyuan/VGGT-1B
- depth-anything/DA3-GIANT-1.1
pipeline_tag: image-to-3d
library_name: peft
tags:
- 3D-reconstruction
- test-time-adaptation
- self-supervised-learning
- depth-estimation
- 3d-vision
- peft
---

<div align="center">

<h1 style="text-align:center;">
Free Geometry: Refining 3D Reconstruction from Longer Versions of Itself
</h1>

_Test-time self-evolution for feed-forward 3D reconstruction without 3D ground truth_

<p align="center">
<a href="https://arxiv.org/abs/2604.14048" target="_blank">
<img alt="Paper" src="https://img.shields.io/badge/arXiv-2604.14048-red?logo=arxiv" height="20" />
</a>
<a href="https://github.com/hiteacherIamhumble/Free-Geometry" target="_blank">
<img alt="Code" src="https://img.shields.io/badge/GitHub-Free--Geometry-181717?logo=github" height="20" />
</a>
<a href="https://huggingface.co/PeterDAI/Free-Geometry" target="_blank">
<img alt="Model Weights" src="https://img.shields.io/badge/HuggingFace-Model_Weights-yellow?logo=huggingface" height="20" />
</a>
<a href="./LICENSE" target="_blank">
<img alt="License" src="https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg" height="20" />
</a>
</p>

</div>

# Model Description

This repository provides a **LoRA / PEFT adapter** for **Free-Geometry** fine-tuning on top of a pretrained base model (VGGT and DepthAnything3).

This is **not** a full standalone model checkpoint. The repository only contains the adapter weights and configuration needed to apply the fine-tuned update to the original base model.

Use this adapter if you want the Free-Geo fine-tuned behavior while keeping the original base model separate.

# What Is In This Repository?

This repository is expected to contain:

- `adapter_config.json`
- `adapter_model.safetensors`
- `README.md`

These files define the PEFT adapter and tell PEFT how to attach the LoRA weights to the base model.

# Base Model

This adapter was trained on top of:

- [zoooooooyuan/VGGT-1B](https://huggingface.co/zoooooooyuan/VGGT-1B)
- [depth-anything/DA3-GIANT-1.1](https://huggingface.co/depth-anything/DA3-GIANT-1.1)


# Training Setup

This adapter corresponds to:

- Backbone: `DA3` or `VGGT`
- Method: `Free-Geo`
- Dataset: `eth3d`, `7scenes`, `hiroom`, or `scannetpp` (all come from [depth-anything/DA3-BENCH](https://huggingface.co/depth-anything/DA3-BENCH)

## Inference With PEFT

  This repository contains PEFT/LoRA adapter weights. The adapters are not standalone models, so first load the DA3 base model, then attach one adapter from this repo.

  Example using the DA3 + Free-Geo HiRoom adapter:

  ```python
  import torch
  from peft import PeftModel
  from depth_anything_3.api import DepthAnything3

  base_model_id = "depth-anything/DA3-GIANT-1.1"
  adapter_repo_id = "PeterDAI/Free-Geometry"
  adapter_subfolder = "DA3+Free-Geo/hiroom"

  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

  model = DepthAnything3.from_pretrained(base_model_id).to(device)
  model.model.backbone.pretrained = PeftModel.from_pretrained(
      model.model.backbone.pretrained,
      adapter_repo_id,
      subfolder=adapter_subfolder,
      is_trainable=False,
  )
  model.eval()

  prediction = model.inference(
      ["image1.jpg", "image2.jpg"],
      export_dir="output/da3_free_geometry_hiroom",
      export_format="mini_npz",
  )

  print(prediction.depth.shape)
```
  To use another adapter from this repo, keep adapter_repo_id the same and change only adapter_subfolder, for example:

  ```adapter_subfolder = "DA3+Free-Geo/eth3d"```

# Repository Variants

Free Geometry is designed for test-time adaptation, so you can find different model variants for each datasets.

- `DA3-Free-Geo-eth3d`
- `DA3-Free-Geo-7scenes`
- `DA3-Free-Geo-hiroom`
- `DA3-Free-Geo-scannetpp`
- `VGGT-Free-Geo-eth3d`
- `VGGT-Free-Geo-7scenes`
- `VGGT-Free-Geo-hiroom`
- `VGGT-Free-Geo-scannetpp`

# Citation

If you use this model, please cite the corresponding project or paper:

```bibtex
@misc{dai2026freegeometryrefining3d,
title={Free Geometry: Refining 3D Reconstruction from Longer Versions of Itself},
author={Yuhang Dai and Xingyi Yang},
year={2026},
eprint={2604.14048},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2604.14048},
}
```