Add pipeline tag and improve model card

#1
by nielsr HF Staff - opened
Files changed (1) hide show
  1. README.md +25 -232
README.md CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  <h1 align="center">
2
  UniSHARP:<br>
3
  Universal Sharp Monocular View Synthesis
@@ -6,196 +10,49 @@ Universal Sharp Monocular View Synthesis
6
  <p align="center">
7
  <b>Meixi Song</b><sup>1</sup> ·
8
  <b>Dizhe Zhang</b><sup>1,*</sup> ·
9
- <b>Hao Ren</b><sup>1</sup> ·
10
- <b>Ruiyang Zhang</b><sup>1</sup> ·
11
- <b>Bo Du</b><sup>2</sup> ·
12
- <b>Ming-Hsuan Yang</b><sup>3</sup> ·
13
- <b>Lu Qi</b><sup>1,2,*</sup>
14
  <br>
15
- <sup>1</sup>Insta360 Research · <sup>2</sup>Wuhan University · <sup>3</sup>University of California, Merced
16
  </p>
17
 
18
  <p align="center">
19
- <img src="https://img.shields.io/badge/arXiv-coming_soon-red?logo=arxiv&logoColor=white" alt="arXiv">
20
  <a href="https://insta360-research-team.github.io/Unisharp-website/"><img src="https://img.shields.io/badge/Project_Page-Website-green" alt="Project Page"></a>
21
  <a href="https://huggingface.co/spaces/Insta360-Research/UniSHARP"><img src="https://img.shields.io/badge/HuggingFace-Demo-yellow" alt="Demo"></a>
22
  <a href="https://huggingface.co/datasets/Insta360-Research/OmniRooms"><img src="https://img.shields.io/badge/HuggingFace-OmniRooms-orange" alt="Dataset"></a>
23
  <a href="https://github.com/Insta360-Research-Team/UniSHARP"><img src="https://img.shields.io/badge/GitHub-Code-blue?logo=github&logoColor=white" alt="GitHub"></a>
24
  </p>
25
 
26
-
27
  UniSHARP extends SHARP-style photorealistic monocular view synthesis to universal camera systems. Given a single image from a perspective, wide-FoV, fisheye, or panoramic camera, UniSHARP predicts a 3D Gaussian representation and renders high-quality novel views.
28
 
29
- <p align="center">
30
- <img src="assets/teaser.gif" alt="UniSHARP teaser" width="90%">
31
- </p>
32
 
33
  <p align="center">
34
- <img src="assets/unisharp.png" alt="UniSHARP method" width="90%">
 
35
  </p>
36
 
37
  ## 🔨 Installation
38
 
39
- Clone this repository and enter the project directory:
40
-
41
  ```bash
42
  git clone https://github.com/Insta360-Research-Team/UniSHARP.git
43
  cd Unisharp
44
- ```
45
 
46
- Create a fresh conda environment:
47
-
48
- ```bash
49
  conda create -n unisharp python=3.12 -y
50
  conda activate unisharp
51
- ```
52
 
53
- Install PyTorch for your CUDA version. The code was smoke-tested with PyTorch 2.8 and torchvision 0.23:
54
-
55
- ```bash
56
  pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0
57
- ```
58
-
59
- Install the remaining Python dependencies:
60
-
61
- ```bash
62
  pip install -r requirements.txt
63
  ```
64
 
65
- ## 🧩 External Dependencies
66
-
67
- ### UniK3D
68
-
69
- UniSHARP uses UniK3D for universal camera ray and feature prediction. Clone the official repository into `Unisharp/UniK3D`:
70
-
71
- ```bash
72
- git clone https://github.com/lpiccinelli-eth/UniK3D.git UniK3D
73
- ```
74
-
75
- ### 3DGEER
76
-
77
- Fisheye rendering depends on the GEER CUDA rasterizer from 3DGEER. Clone the repository into `Unisharp/3dgeer`:
78
-
79
- ```bash
80
- git clone https://github.com/boschresearch/3dgeer.git 3dgeer
81
- ```
82
-
83
- If you only use perspective or panoramic inference, the GEER rasterizer may not be needed. It is required for fisheye rendering paths.
84
-
85
- ## 🖼️ Dataset
86
-
87
- The released dataset is hosted on Hugging Face:
88
 
89
- - Dataset: [Insta360-Research/OmniRooms](https://huggingface.co/datasets/Insta360-Research/OmniRooms)
90
- - Training manifests: [Insta360-Research/OmniRooms/manifests/train](https://huggingface.co/datasets/Insta360-Research/OmniRooms/tree/main/manifests/train)
91
- - Validation manifests: [Insta360-Research/OmniRooms/manifests/validation](https://huggingface.co/datasets/Insta360-Research/OmniRooms/tree/main/manifests/validation)
92
-
93
- **OmniRooms** is a panoramic simulation dataset highly suitable for 3D reconstruction, especially for 3DGS tasks. It consists of 16 large indoor scenes, each containing multiple rooms, and 300k RGB images covering both small and large pose movements with corresponding depth information. OmniRooms is collected via AirSim, with **OmniRooms-Wide** derived by projecting these panoramas into 130-degree equidistant fisheye views. For each anchor point on a 0.5 m voxel grid, we render one central camera and 29 cameras randomly sampled within a local axis-aligned 30 cm cube centered on the source camera. To isolate translation-induced synthesis, all cameras share a fixed orientation. Each frame is rendered as a 1024 x 2048 ERP image.
94
-
95
- <table>
96
- <tr>
97
- <td width="25%"><img src="assets/dataset/AIUE5_vol8_03_2x2.jpg" alt="OmniRooms scene AIUE5 vol8 03"></td>
98
- <td width="25%"><img src="assets/dataset/AIUE5_vol8_04_2x2.jpg" alt="OmniRooms scene AIUE5 vol8 04"></td>
99
- <td width="25%"><img src="assets/dataset/AIUE5_vol8_05_2x2.jpg" alt="OmniRooms scene AIUE5 vol8 05"></td>
100
- <td width="25%"><img src="assets/dataset/AIUE_V01_001_2x2.jpg" alt="OmniRooms scene AIUE V01 001"></td>
101
- </tr>
102
- <tr>
103
- <td width="25%"><img src="assets/dataset/AIUE_V01_003_2x2.jpg" alt="OmniRooms scene AIUE V01 003"></td>
104
- <td width="25%"><img src="assets/dataset/AIUE_V01_004_2x2.jpg" alt="OmniRooms scene AIUE V01 004"></td>
105
- <td width="25%"><img src="assets/dataset/AIUE_V02_001_2x2.jpg" alt="OmniRooms scene AIUE V02 001"></td>
106
- <td width="25%"><img src="assets/dataset/AI_vol3_01_2x2.jpg" alt="OmniRooms scene AI vol3 01"></td>
107
- </tr>
108
- <tr>
109
- <td width="25%"><img src="assets/dataset/AI_vol3_02_2x2.jpg" alt="OmniRooms scene AI vol3 02"></td>
110
- <td width="25%"><img src="assets/dataset/AI_vol3_03_2x2.jpg" alt="OmniRooms scene AI vol3 03"></td>
111
- <td width="25%"><img src="assets/dataset/AI_vol3_04_2x2.jpg" alt="OmniRooms scene AI vol3 04"></td>
112
- <td width="25%"><img src="assets/dataset/AI_vol4_01_2x2.jpg" alt="OmniRooms scene AI vol4 01"></td>
113
- </tr>
114
- <tr>
115
- <td width="25%"><img src="assets/dataset/AI_vol4_02_2x2.jpg" alt="OmniRooms scene AI vol4 02"></td>
116
- <td width="25%"><img src="assets/dataset/AI_vol4_03_2x2.jpg" alt="OmniRooms scene AI vol4 03"></td>
117
- <td width="25%"><img src="assets/dataset/AI_vol4_04_2x2.jpg" alt="OmniRooms scene AI vol4 04"></td>
118
- <td width="25%"><img src="assets/dataset/AI_vol4_05_2x2.jpg" alt="OmniRooms scene AI vol4 05"></td>
119
- </tr>
120
- </table>
121
-
122
- The code supports the following data sources and manifest aliases:
123
-
124
- - `RealEstate10K`
125
- - `HM3D`
126
- - `OmniRooms`
127
- - `OmniRooms-Wide`
128
- - `WildRGB-D`
129
- - `DL3DV`
130
- - `ScanNet++ Fisheye`
131
- - `Replica`, and `Tanks and Temples` for validation-only protocols
132
-
133
- Training manifests use the names released under `manifests/train`:
134
-
135
- ```text
136
- dataset_manifests/
137
- ├── re10k_train_chunks.txt
138
- ├── hm3d_train_scenes.txt
139
- ├── omnirooms.txt
140
- ├── wildrgbd_train_scenes.txt
141
- ├── dl3dv_train_scenes.txt
142
- └── scanetpp_fisheye_train_scenes.txt
143
- ```
144
-
145
- Validation manifests use the names released under `manifests/validation`:
146
-
147
- ```text
148
- validation_manifests/
149
- ├── re10k.txt
150
- ├── dl3dv.txt
151
- ├── hm3d.txt
152
- ├── omnirooms.txt
153
- ├── omnirooms_wide.txt
154
- ├── wildrgbd.txt
155
- ├── scanetpp_fisheye.txt
156
- ├── replica.txt
157
- ├── tat.txt
158
- ```
159
-
160
- ## 🤝 Checkpoints
161
-
162
- Training starts UniSHARP heads from scratch and loads the original pretrained UniK3D weights through the UniK3D loader. The official launcher does not resume from a previous UniSHARP checkpoint by default.
163
-
164
- Released UniSHARP checkpoints are available at [Insta360-Research/Unisharp](https://huggingface.co/Insta360-Research/Unisharp/tree/main). Place a checkpoint anywhere on disk and pass the path to validation or inference:
165
-
166
- ```bash
167
- CHECKPOINT=/path/to/pretained_model.pt
168
- ```
169
-
170
- ## 🚀 Training
171
-
172
- Use the official gt-override training launcher:
173
-
174
- ```bash
175
- bash scripts/train.sh
176
- ```
177
-
178
- Training outputs are saved under:
179
-
180
- ```text
181
- outputs/<run_name>/
182
- ├── config.json
183
- ├── losses.csv
184
- ├── step_XXXXXXX.pt
185
- └── vis/
186
- ```
187
-
188
- ## 📊 Validation
189
-
190
- Run validation with a checkpoint:
191
-
192
- ```bash
193
- bash scripts/validate_unisharp.sh /path/to/step_XXXXXXX.pt
194
- ```
195
-
196
- ## 📒 Inference
197
-
198
- Run single-image inference:
199
 
200
  ```bash
201
  python scripts/infer_unisharp.py \
@@ -204,83 +61,19 @@ python scripts/infer_unisharp.py \
204
  --out-dir outputs/inference
205
  ```
206
 
207
- Run a directory or image list:
208
 
209
- ```bash
210
- python scripts/infer_unisharp.py \
211
- --checkpoint /path/to/step_XXXXXXX.pt \
212
- --image-dir /path/to/images \
213
- --out-dir outputs/inference
214
- ```
215
-
216
- If calibrated camera parameters are available, pass them through a JSON file. Without this file, the script predicts rays with UniK3D and fits the camera parameters automatically.
217
-
218
- Example perspective camera JSON:
219
-
220
- ```json
221
- {
222
- "camera": "perspective",
223
- "intrinsics": {
224
- "fx": 820.0,
225
- "fy": 820.0,
226
- "cx": 512.0,
227
- "cy": 384.0
228
- }
229
- }
230
- ```
231
-
232
- ```bash
233
- python scripts/infer_unisharp.py \
234
- --checkpoint /path/to/step_XXXXXXX.pt \
235
- --image /path/to/perspective.jpg \
236
- --camera-json /path/to/perspective_camera.json
237
- ```
238
-
239
- Example Fisheye624 camera JSON:
240
-
241
- ```json
242
- {
243
- "camera": "fisheye",
244
- "camera_params": [820.0, 820.0, 512.0, 384.0, 0.01, -0.001, 0.0, 0.0]
245
- }
246
- ```
247
-
248
- ```bash
249
- python scripts/infer_unisharp.py \
250
- --checkpoint /path/to/step_XXXXXXX.pt \
251
- --image /path/to/fisheye.jpg \
252
- --camera-json /path/to/fisheye_camera.json
253
- ```
254
-
255
- For batched inference, the JSON can also contain per-image entries:
256
-
257
- ```json
258
- {
259
- "default": {
260
- "camera": "perspective",
261
- "intrinsics": [820.0, 820.0, 512.0, 384.0]
262
- },
263
- "images": {
264
- "panorama.jpg": {
265
- "camera": "panorama"
266
- },
267
- "fisheye.jpg": {
268
- "camera": "fisheye",
269
- "camera_params": [820.0, 820.0, 512.0, 384.0, 0.01, -0.001, 0.0, 0.0]
270
- }
271
- }
272
- }
273
- ```
274
 
 
275
 
276
  ## 🙏 Acknowledgement
277
 
278
  This project builds on open-source work from:
279
-
280
- - [SHARP](https://github.com/apple/ml-sharp) for monocular Gaussian view synthesis
281
- - [UniK3D](https://github.com/lpiccinelli-eth/UniK3D) for universal camera geometry and features
282
- - [3DGEER](https://github.com/boschresearch/3dgeer) for generic-camera Gaussian rasterization
283
- - [gsplat](https://github.com/nerfstudio-project/gsplat) for Gaussian splatting utilities
284
 
285
  ## 📝 Citation
286
 
@@ -291,4 +84,4 @@ This project builds on open-source work from:
291
  journal={arXiv},
292
  year={2026}
293
  }
294
- ```
 
1
+ ---
2
+ pipeline_tag: image-to-3d
3
+ ---
4
+
5
  <h1 align="center">
6
  UniSHARP:<br>
7
  Universal Sharp Monocular View Synthesis
 
10
  <p align="center">
11
  <b>Meixi Song</b><sup>1</sup> ·
12
  <b>Dizhe Zhang</b><sup>1,*</sup> ·
13
+ <b>Hao Ren</b><sup>1,2</sup> ·
14
+ <b>Ruiyang Zhang</b><sup>1,3</sup> ·
15
+ <b>Bo Du</b><sup>4</sup> ·
16
+ <b>Ming-Hsuan Yang</b><sup>5</sup> ·
17
+ <b>Lu Qi</b><sup>1,4,*</sup>
18
  <br>
19
+ <sup>1</sup>Insta360 Research · <sup>2</sup>Sun Yat-sen University · <sup>3</sup>Beihang University · <sup>4</sup>Wuhan University · <sup>5</sup>University of California, Merced
20
  </p>
21
 
22
  <p align="center">
23
+ <a href="https://huggingface.co/papers/2606.07514"><img src='https://img.shields.io/badge/arXiv-Paper-red?logo=arxiv&logoColor=white' alt='arXiv'></a>
24
  <a href="https://insta360-research-team.github.io/Unisharp-website/"><img src="https://img.shields.io/badge/Project_Page-Website-green" alt="Project Page"></a>
25
  <a href="https://huggingface.co/spaces/Insta360-Research/UniSHARP"><img src="https://img.shields.io/badge/HuggingFace-Demo-yellow" alt="Demo"></a>
26
  <a href="https://huggingface.co/datasets/Insta360-Research/OmniRooms"><img src="https://img.shields.io/badge/HuggingFace-OmniRooms-orange" alt="Dataset"></a>
27
  <a href="https://github.com/Insta360-Research-Team/UniSHARP"><img src="https://img.shields.io/badge/GitHub-Code-blue?logo=github&logoColor=white" alt="GitHub"></a>
28
  </p>
29
 
 
30
  UniSHARP extends SHARP-style photorealistic monocular view synthesis to universal camera systems. Given a single image from a perspective, wide-FoV, fisheye, or panoramic camera, UniSHARP predicts a 3D Gaussian representation and renders high-quality novel views.
31
 
32
+ This is the official implementation of the paper [UniSHARP: Universal Sharp Monocular View Synthesis](https://huggingface.co/papers/2606.07514).
 
 
33
 
34
  <p align="center">
35
+ <img src="assets/teaser.gif" width="59.4%" alt="UniSHARP teaser">
36
+ <img src="assets/teaser2.gif" width="39.6%" alt="UniSHARP teaser 2">
37
  </p>
38
 
39
  ## 🔨 Installation
40
 
 
 
41
  ```bash
42
  git clone https://github.com/Insta360-Research-Team/UniSHARP.git
43
  cd Unisharp
 
44
 
 
 
 
45
  conda create -n unisharp python=3.12 -y
46
  conda activate unisharp
 
47
 
 
 
 
48
  pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0
 
 
 
 
 
49
  pip install -r requirements.txt
50
  ```
51
 
52
+ ## 📒 Sample Usage
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
+ ### Single-image Inference
55
+ Run inference to predict a 3D Gaussian representation and render views:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
  ```bash
58
  python scripts/infer_unisharp.py \
 
61
  --out-dir outputs/inference
62
  ```
63
 
64
+ If calibrated camera parameters are available, you can pass them through a JSON file. Without it, the script predicts rays and fits parameters automatically.
65
 
66
+ ## 🖼️ Dataset
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
+ The model was trained on **OmniRooms**, a panoramic simulation dataset suitable for 3D reconstruction and 3DGS tasks. It is available on Hugging Face: [Insta360-Research/OmniRooms](https://huggingface.co/datasets/Insta360-Research/OmniRooms).
69
 
70
  ## 🙏 Acknowledgement
71
 
72
  This project builds on open-source work from:
73
+ - [SHARP](https://github.com/apple/ml-sharp)
74
+ - [UniK3D](https://github.com/lpiccinelli-eth/UniK3D)
75
+ - [3DGEER](https://github.com/boschresearch/3dgeer)
76
+ - [gsplat](https://github.com/nerfstudio-project/gsplat)
 
77
 
78
  ## 📝 Citation
79
 
 
84
  journal={arXiv},
85
  year={2026}
86
  }
87
+ ```