Xyea commited on
Commit
4d35876
·
verified ·
1 Parent(s): e8261f9

Upload ablation results

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +28 -0
  2. ablation/README.md +17 -0
  3. ablation/ablation_metrics_summary.csv +6 -0
  4. ablation/ibims/data/eval_experiment.json +260 -0
  5. ablation/ibims/data/experiment_commands.json +112 -0
  6. ablation/ibims/data/inference_time_summary.json +21 -0
  7. ablation/ibims/data/metrics_summary.json +19 -0
  8. ablation/ibims/data/representative_method_comparison.json +82 -0
  9. ablation/ibims/representative_images/method_comparison/ibims_kitchen_01_method_comparison.png +3 -0
  10. ablation/ibims/representative_images/method_comparison/ibims_kitchen_07_method_comparison.png +3 -0
  11. ablation/ibims/representative_images/method_comparison/ibims_lectureroom_05_method_comparison.png +3 -0
  12. ablation/ibims/representative_images/method_comparison/ibims_livingroom_14_method_comparison.png +3 -0
  13. ablation/ibims/representative_images/method_comparison/ibims_restaurant_11_method_comparison.png +3 -0
  14. ablation/ibims/representative_images/method_comparison/ibims_storageroom_05_method_comparison.png +3 -0
  15. ablation/ibims/representative_images/ours_representative_rgb_gt_pred_error.png +3 -0
  16. ablation/ibims/source.json +4 -0
  17. ablation/nyuv2/data/eval_experiment.json +260 -0
  18. ablation/nyuv2/data/experiment_commands.json +112 -0
  19. ablation/nyuv2/data/inference_time_summary.json +21 -0
  20. ablation/nyuv2/data/metrics_summary.json +19 -0
  21. ablation/nyuv2/data/representative_method_comparison.json +82 -0
  22. ablation/nyuv2/representative_images/method_comparison/val_000041_method_comparison.png +3 -0
  23. ablation/nyuv2/representative_images/method_comparison/val_000055_method_comparison.png +3 -0
  24. ablation/nyuv2/representative_images/method_comparison/val_000085_method_comparison.png +3 -0
  25. ablation/nyuv2/representative_images/method_comparison/val_000101_method_comparison.png +3 -0
  26. ablation/nyuv2/representative_images/method_comparison/val_000321_method_comparison.png +3 -0
  27. ablation/nyuv2/representative_images/method_comparison/val_000441_method_comparison.png +3 -0
  28. ablation/nyuv2/representative_images/ours_representative_rgb_gt_pred_error.png +3 -0
  29. ablation/nyuv2/source.json +4 -0
  30. ablation/ours_vs_ablation_comparison.csv +6 -0
  31. ablation/ours_vs_ablation_comparison.md +14 -0
  32. ablation/scannet/data/eval_experiment.json +260 -0
  33. ablation/scannet/data/experiment_commands.json +112 -0
  34. ablation/scannet/data/inference_time_summary.json +21 -0
  35. ablation/scannet/data/metrics_summary.json +19 -0
  36. ablation/scannet/data/representative_method_comparison.json +82 -0
  37. ablation/scannet/representative_images/method_comparison/scene0223_00_000600_method_comparison.png +3 -0
  38. ablation/scannet/representative_images/method_comparison/scene0303_00_001250_method_comparison.png +3 -0
  39. ablation/scannet/representative_images/method_comparison/scene0548_00_002050_method_comparison.png +3 -0
  40. ablation/scannet/representative_images/method_comparison/scene0552_01_000430_method_comparison.png +3 -0
  41. ablation/scannet/representative_images/method_comparison/scene0600_02_001350_method_comparison.png +3 -0
  42. ablation/scannet/representative_images/method_comparison/scene0645_01_000340_method_comparison.png +3 -0
  43. ablation/scannet/representative_images/ours_representative_rgb_gt_pred_error.png +3 -0
  44. ablation/scannet/source.json +4 -0
  45. ablation/sintel/data/eval_experiment.json +260 -0
  46. ablation/sintel/data/experiment_commands.json +112 -0
  47. ablation/sintel/data/inference_time_summary.json +21 -0
  48. ablation/sintel/data/metrics_summary.json +19 -0
  49. ablation/sintel/data/representative_method_comparison.json +82 -0
  50. ablation/sintel/representative_images/method_comparison/alley_2_frame_0028_method_comparison.png +3 -0
.gitattributes CHANGED
@@ -33,3 +33,31 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ ablation/ibims/representative_images/method_comparison/ibims_kitchen_01_method_comparison.png filter=lfs diff=lfs merge=lfs -text
37
+ ablation/ibims/representative_images/method_comparison/ibims_kitchen_07_method_comparison.png filter=lfs diff=lfs merge=lfs -text
38
+ ablation/ibims/representative_images/method_comparison/ibims_lectureroom_05_method_comparison.png filter=lfs diff=lfs merge=lfs -text
39
+ ablation/ibims/representative_images/method_comparison/ibims_livingroom_14_method_comparison.png filter=lfs diff=lfs merge=lfs -text
40
+ ablation/ibims/representative_images/method_comparison/ibims_restaurant_11_method_comparison.png filter=lfs diff=lfs merge=lfs -text
41
+ ablation/ibims/representative_images/method_comparison/ibims_storageroom_05_method_comparison.png filter=lfs diff=lfs merge=lfs -text
42
+ ablation/ibims/representative_images/ours_representative_rgb_gt_pred_error.png filter=lfs diff=lfs merge=lfs -text
43
+ ablation/nyuv2/representative_images/method_comparison/val_000041_method_comparison.png filter=lfs diff=lfs merge=lfs -text
44
+ ablation/nyuv2/representative_images/method_comparison/val_000055_method_comparison.png filter=lfs diff=lfs merge=lfs -text
45
+ ablation/nyuv2/representative_images/method_comparison/val_000085_method_comparison.png filter=lfs diff=lfs merge=lfs -text
46
+ ablation/nyuv2/representative_images/method_comparison/val_000101_method_comparison.png filter=lfs diff=lfs merge=lfs -text
47
+ ablation/nyuv2/representative_images/method_comparison/val_000321_method_comparison.png filter=lfs diff=lfs merge=lfs -text
48
+ ablation/nyuv2/representative_images/method_comparison/val_000441_method_comparison.png filter=lfs diff=lfs merge=lfs -text
49
+ ablation/nyuv2/representative_images/ours_representative_rgb_gt_pred_error.png filter=lfs diff=lfs merge=lfs -text
50
+ ablation/scannet/representative_images/method_comparison/scene0223_00_000600_method_comparison.png filter=lfs diff=lfs merge=lfs -text
51
+ ablation/scannet/representative_images/method_comparison/scene0303_00_001250_method_comparison.png filter=lfs diff=lfs merge=lfs -text
52
+ ablation/scannet/representative_images/method_comparison/scene0548_00_002050_method_comparison.png filter=lfs diff=lfs merge=lfs -text
53
+ ablation/scannet/representative_images/method_comparison/scene0552_01_000430_method_comparison.png filter=lfs diff=lfs merge=lfs -text
54
+ ablation/scannet/representative_images/method_comparison/scene0600_02_001350_method_comparison.png filter=lfs diff=lfs merge=lfs -text
55
+ ablation/scannet/representative_images/method_comparison/scene0645_01_000340_method_comparison.png filter=lfs diff=lfs merge=lfs -text
56
+ ablation/scannet/representative_images/ours_representative_rgb_gt_pred_error.png filter=lfs diff=lfs merge=lfs -text
57
+ ablation/sintel/representative_images/method_comparison/alley_2_frame_0028_method_comparison.png filter=lfs diff=lfs merge=lfs -text
58
+ ablation/sintel/representative_images/method_comparison/ambush_2_frame_0014_method_comparison.png filter=lfs diff=lfs merge=lfs -text
59
+ ablation/sintel/representative_images/method_comparison/ambush_5_frame_0026_method_comparison.png filter=lfs diff=lfs merge=lfs -text
60
+ ablation/sintel/representative_images/method_comparison/ambush_7_frame_0035_method_comparison.png filter=lfs diff=lfs merge=lfs -text
61
+ ablation/sintel/representative_images/method_comparison/bandage_2_frame_0027_method_comparison.png filter=lfs diff=lfs merge=lfs -text
62
+ ablation/sintel/representative_images/method_comparison/cave_4_frame_0022_method_comparison.png filter=lfs diff=lfs merge=lfs -text
63
+ ablation/sintel/representative_images/ours_representative_rgb_gt_pred_error.png filter=lfs diff=lfs merge=lfs -text
ablation/README.md ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Normal Evaluation Ablation Results
2
+
3
+ This folder is organized by dataset. Each dataset folder contains `data/`, `representative_images/`, and `source.json`.
4
+
5
+ Sources:
6
+ - `run_123850`: `/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50`
7
+ - `run_121747`: `/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47`
8
+
9
+ Metric summary:
10
+
11
+ | dataset | method | run | angle_deg | acc_11_25 | acc_22_5 | acc_30 | samples | ips |
12
+ | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: |
13
+ | ibims | ours | run_121747 | 18.2029 | 0.6245 | 0.7906 | 0.8311 | 100.0000 | 0.5437 |
14
+ | nyuv2 | ours | run_123850 | 23.0193 | 0.3945 | 0.6669 | 0.7524 | 654.0000 | 0.5392 |
15
+ | scannet | ours | run_123850 | 21.3949 | 0.4585 | 0.7153 | 0.7848 | 300.0000 | 0.5386 |
16
+ | sintel | ours | run_123850 | 38.2628 | 0.1781 | 0.3814 | 0.4996 | 1064.0000 | 0.5471 |
17
+ | toy | ours | run_121747 | | | | | | |
ablation/ablation_metrics_summary.csv ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ dataset,method,run,angle_deg,acc_11_25,acc_22_5,acc_30,samples,missing,inference_mean_seconds,inference_images_per_second
2
+ nyuv2,ours,run_123850,23.019315893132386,0.39451143620621176,0.6669151603446459,0.752394706238665,654.0,0.0,1.8544761400122982,0.539235840474803
3
+ scannet,ours,run_123850,21.39486180464427,0.4585078304835285,0.7153138614818454,0.7848363836357991,300.0,0.0,1.8565222447564205,0.5386415394829821
4
+ sintel,ours,run_123850,38.26282845583177,0.17808037532162607,0.38137201149072636,0.4995710332632849,1064.0,0.0,1.8277028220793219,0.5471348995688098
5
+ ibims,ours,run_121747,18.20290114402771,0.6245251177251339,0.790619985461235,0.831144380569458,100.0,0.0,1.8394116687588393,0.5436520910377608
6
+ toy,ours,run_121747,,,,,,,,
ablation/ibims/data/eval_experiment.json ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": "ibims",
3
+ "data_root": "/root/vepfs/Infinity/data",
4
+ "partition": "val",
5
+ "pn": "1M",
6
+ "max_samples": 0,
7
+ "input_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/_eval_set/images",
8
+ "eval_set_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/_eval_set",
9
+ "source_eval_set_dir": "",
10
+ "eval_image": "",
11
+ "methods": [
12
+ "ours"
13
+ ],
14
+ "ours_checkpoints": [
15
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth"
16
+ ],
17
+ "normal_tokenizer_ckpt": "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
18
+ "visible_cuda_devices": [
19
+ "0",
20
+ "1",
21
+ "2",
22
+ "3"
23
+ ],
24
+ "parallel_shards": "auto",
25
+ "compare_inference_time": true,
26
+ "timing_warmup": 3,
27
+ "timing_repeats": 5,
28
+ "ours_kv_cache_fast": false,
29
+ "inference_time_protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
30
+ "normal_conventions": {
31
+ "canonical": "camera_left_up_backward",
32
+ "dataset_targets": {
33
+ "nyuv2": {
34
+ "name": "nyuv2_raw_right_forward_up",
35
+ "to_eval_perm": [
36
+ 0,
37
+ 2,
38
+ 1
39
+ ],
40
+ "to_eval_signs": [
41
+ -1,
42
+ 1,
43
+ -1
44
+ ],
45
+ "description": "NYUv2 parquet normals. Canonical mapping: (x, y, z) -> (-x, z, -y)."
46
+ },
47
+ "hypersim": {
48
+ "name": "camera_left_up_backward",
49
+ "to_eval_perm": [
50
+ 0,
51
+ 1,
52
+ 2
53
+ ],
54
+ "to_eval_signs": [
55
+ 1,
56
+ 1,
57
+ 1
58
+ ],
59
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
60
+ },
61
+ "scannet": {
62
+ "name": "camera_left_up_backward",
63
+ "to_eval_perm": [
64
+ 0,
65
+ 1,
66
+ 2
67
+ ],
68
+ "to_eval_signs": [
69
+ 1,
70
+ 1,
71
+ 1
72
+ ],
73
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
74
+ },
75
+ "ibims": {
76
+ "name": "camera_left_up_backward",
77
+ "to_eval_perm": [
78
+ 0,
79
+ 1,
80
+ 2
81
+ ],
82
+ "to_eval_signs": [
83
+ 1,
84
+ 1,
85
+ 1
86
+ ],
87
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
88
+ },
89
+ "sintel": {
90
+ "name": "camera_left_up_backward",
91
+ "to_eval_perm": [
92
+ 0,
93
+ 1,
94
+ 2
95
+ ],
96
+ "to_eval_signs": [
97
+ 1,
98
+ 1,
99
+ 1
100
+ ],
101
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
102
+ }
103
+ },
104
+ "model_outputs": {
105
+ "ours": {
106
+ "name": "ours_model_xyz",
107
+ "to_eval_perm": [
108
+ 0,
109
+ 1,
110
+ 2
111
+ ],
112
+ "to_eval_signs": [
113
+ 1,
114
+ 1,
115
+ 1
116
+ ],
117
+ "description": "Infinity normal output already matches the exported eval convention."
118
+ },
119
+ "marigold": {
120
+ "name": "marigold_normals_xyz",
121
+ "to_eval_perm": [
122
+ 0,
123
+ 1,
124
+ 2
125
+ ],
126
+ "to_eval_signs": [
127
+ -1,
128
+ 1,
129
+ 1
130
+ ],
131
+ "description": "Marigold normals_npy output. Canonical mapping: (x, y, z) -> (-x, y, z)."
132
+ },
133
+ "geowizard": {
134
+ "name": "geowizard_normal_xyz",
135
+ "to_eval_perm": [
136
+ 0,
137
+ 1,
138
+ 2
139
+ ],
140
+ "to_eval_signs": [
141
+ 1,
142
+ 1,
143
+ 1
144
+ ],
145
+ "description": "GeoWizard normal_npy output already matches the canonical convention."
146
+ },
147
+ "stablenormal": {
148
+ "name": "stablenormal_xyz",
149
+ "to_eval_perm": [
150
+ 0,
151
+ 1,
152
+ 2
153
+ ],
154
+ "to_eval_signs": [
155
+ 1,
156
+ 1,
157
+ 1
158
+ ],
159
+ "description": "StableNormal output already matches the canonical convention."
160
+ },
161
+ "lotusg": {
162
+ "name": "lotus_g_xyz",
163
+ "to_eval_perm": [
164
+ 0,
165
+ 1,
166
+ 2
167
+ ],
168
+ "to_eval_signs": [
169
+ 1,
170
+ 1,
171
+ 1
172
+ ],
173
+ "description": "Lotus-G output already matches the canonical convention."
174
+ },
175
+ "lotusd": {
176
+ "name": "lotus_d_xyz",
177
+ "to_eval_perm": [
178
+ 0,
179
+ 1,
180
+ 2
181
+ ],
182
+ "to_eval_signs": [
183
+ 1,
184
+ 1,
185
+ 1
186
+ ],
187
+ "description": "Lotus-D output already matches the canonical convention."
188
+ },
189
+ "dsine": {
190
+ "name": "dsine_xyz",
191
+ "to_eval_perm": [
192
+ 0,
193
+ 1,
194
+ 2
195
+ ],
196
+ "to_eval_signs": [
197
+ 1,
198
+ 1,
199
+ 1
200
+ ],
201
+ "description": "DSINE output already matches the canonical convention."
202
+ },
203
+ "metric3dv2": {
204
+ "name": "metric3d_v2_xyz",
205
+ "to_eval_perm": [
206
+ 0,
207
+ 1,
208
+ 2
209
+ ],
210
+ "to_eval_signs": [
211
+ -1,
212
+ -1,
213
+ -1
214
+ ],
215
+ "description": "Metric3D v2 output. Canonical mapping: (x, y, z) -> (-x, -y, -z)."
216
+ },
217
+ "omnidata_v2": {
218
+ "name": "omnidata_v2_xyz",
219
+ "to_eval_perm": [
220
+ 0,
221
+ 1,
222
+ 2
223
+ ],
224
+ "to_eval_signs": [
225
+ 1,
226
+ 1,
227
+ 1
228
+ ],
229
+ "description": "Omnidata V2 adapter output already matches the canonical convention."
230
+ },
231
+ "marigold_e2eft": {
232
+ "name": "marigold_e2eft_xyz",
233
+ "to_eval_perm": [
234
+ 0,
235
+ 1,
236
+ 2
237
+ ],
238
+ "to_eval_signs": [
239
+ 1,
240
+ 1,
241
+ 1
242
+ ],
243
+ "description": "Marigold E2E-FT output already matches the canonical convention."
244
+ }
245
+ },
246
+ "display_from_eval": {
247
+ "perm": [
248
+ 0,
249
+ 1,
250
+ 2
251
+ ],
252
+ "signs": [
253
+ 1,
254
+ 1,
255
+ 1
256
+ ],
257
+ "description": "Direct normal-map display: RGB = (canonical normal + 1) / 2."
258
+ }
259
+ }
260
+ }
ablation/ibims/data/experiment_commands.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": [
3
+ [
4
+ "/root/vepfs/Infinity/.venv/bin/python",
5
+ "tools/run_normal_estimation.py",
6
+ "--model-path",
7
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
8
+ "--input-path",
9
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_input_shards/shard_00",
10
+ "--output-dir",
11
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_shards/shard_00",
12
+ "--seed",
13
+ "0",
14
+ "--top-k",
15
+ "1",
16
+ "--top-p",
17
+ "0.0",
18
+ "--tau",
19
+ "1.0",
20
+ "--save-npy",
21
+ "--timing-warmup",
22
+ "3",
23
+ "--timing-repeats",
24
+ "5",
25
+ "--normal-vae-ckpt",
26
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
27
+ "--normal-vae-type",
28
+ "32"
29
+ ],
30
+ [
31
+ "/root/vepfs/Infinity/.venv/bin/python",
32
+ "tools/run_normal_estimation.py",
33
+ "--model-path",
34
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
35
+ "--input-path",
36
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_input_shards/shard_01",
37
+ "--output-dir",
38
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_shards/shard_01",
39
+ "--seed",
40
+ "0",
41
+ "--top-k",
42
+ "1",
43
+ "--top-p",
44
+ "0.0",
45
+ "--tau",
46
+ "1.0",
47
+ "--save-npy",
48
+ "--timing-warmup",
49
+ "3",
50
+ "--timing-repeats",
51
+ "5",
52
+ "--normal-vae-ckpt",
53
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
54
+ "--normal-vae-type",
55
+ "32"
56
+ ],
57
+ [
58
+ "/root/vepfs/Infinity/.venv/bin/python",
59
+ "tools/run_normal_estimation.py",
60
+ "--model-path",
61
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
62
+ "--input-path",
63
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_input_shards/shard_02",
64
+ "--output-dir",
65
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_shards/shard_02",
66
+ "--seed",
67
+ "0",
68
+ "--top-k",
69
+ "1",
70
+ "--top-p",
71
+ "0.0",
72
+ "--tau",
73
+ "1.0",
74
+ "--save-npy",
75
+ "--timing-warmup",
76
+ "3",
77
+ "--timing-repeats",
78
+ "5",
79
+ "--normal-vae-ckpt",
80
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
81
+ "--normal-vae-type",
82
+ "32"
83
+ ],
84
+ [
85
+ "/root/vepfs/Infinity/.venv/bin/python",
86
+ "tools/run_normal_estimation.py",
87
+ "--model-path",
88
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
89
+ "--input-path",
90
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_input_shards/shard_03",
91
+ "--output-dir",
92
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/_shards/shard_03",
93
+ "--seed",
94
+ "0",
95
+ "--top-k",
96
+ "1",
97
+ "--top-p",
98
+ "0.0",
99
+ "--tau",
100
+ "1.0",
101
+ "--save-npy",
102
+ "--timing-warmup",
103
+ "3",
104
+ "--timing-repeats",
105
+ "5",
106
+ "--normal-vae-ckpt",
107
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
108
+ "--normal-vae-type",
109
+ "32"
110
+ ]
111
+ ]
112
+ }
ablation/ibims/data/inference_time_summary.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
3
+ "methods": {
4
+ "ours": {
5
+ "enabled": true,
6
+ "available": true,
7
+ "method": "ours",
8
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
9
+ "timed_observations": 500,
10
+ "images": 100,
11
+ "mean_seconds": 1.8394116687588393,
12
+ "median_seconds": 1.8351657567545772,
13
+ "std_seconds": 0.017275431719267167,
14
+ "ci95_seconds": 0.0015142583548655479,
15
+ "min_seconds": 1.8134799133986235,
16
+ "max_seconds": 1.8864054400473833,
17
+ "images_per_second": 0.5436520910377608,
18
+ "per_image_file": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/ours/inference_times.json"
19
+ }
20
+ }
21
+ }
ablation/ibims/data/metrics_summary.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": {
3
+ "acc_11_25": 0.6245251177251339,
4
+ "acc_22_5": 0.790619985461235,
5
+ "acc_30": 0.831144380569458,
6
+ "angle_deg": 18.20290114402771,
7
+ "loss_angular_rad": 0.3177005544304848,
8
+ "loss_l1": 0.14768831200897695,
9
+ "loss_latent": 0.0,
10
+ "loss_norm": 3.634137971456064e-10,
11
+ "loss_total_aux": 0.0,
12
+ "samples": 100.0,
13
+ "missing": 0.0,
14
+ "inference_mean_seconds": 1.8394116687588393,
15
+ "inference_median_seconds": 1.8351657567545772,
16
+ "inference_std_seconds": 0.017275431719267167,
17
+ "inference_images_per_second": 0.5436520910377608
18
+ }
19
+ }
ablation/ibims/data/representative_method_comparison.json ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "samples": [
3
+ {
4
+ "id": "ibims_restaurant_11",
5
+ "mean_angle": 10.338109016418457,
6
+ "methods": 1
7
+ },
8
+ {
9
+ "id": "ibims_lectureroom_05",
10
+ "mean_angle": 13.873883247375488,
11
+ "methods": 1
12
+ },
13
+ {
14
+ "id": "ibims_livingroom_14",
15
+ "mean_angle": 16.593923568725586,
16
+ "methods": 1
17
+ },
18
+ {
19
+ "id": "ibims_kitchen_07",
20
+ "mean_angle": 18.48088264465332,
21
+ "methods": 1
22
+ },
23
+ {
24
+ "id": "ibims_kitchen_01",
25
+ "mean_angle": 21.066890716552734,
26
+ "methods": 1
27
+ },
28
+ {
29
+ "id": "ibims_storageroom_05",
30
+ "mean_angle": 35.72504806518555,
31
+ "methods": 1
32
+ }
33
+ ],
34
+ "methods": [
35
+ "ours"
36
+ ],
37
+ "layout": "one image per representative sample; top row is RGB/GT, then one row per method with Pred/Error.",
38
+ "images": [
39
+ {
40
+ "id": "ibims_restaurant_11",
41
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/representative_method_comparison/ibims_restaurant_11_method_comparison.png",
42
+ "mean_angle": 10.338109016418457
43
+ },
44
+ {
45
+ "id": "ibims_lectureroom_05",
46
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/representative_method_comparison/ibims_lectureroom_05_method_comparison.png",
47
+ "mean_angle": 13.873883247375488
48
+ },
49
+ {
50
+ "id": "ibims_livingroom_14",
51
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/representative_method_comparison/ibims_livingroom_14_method_comparison.png",
52
+ "mean_angle": 16.593923568725586
53
+ },
54
+ {
55
+ "id": "ibims_kitchen_07",
56
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/representative_method_comparison/ibims_kitchen_07_method_comparison.png",
57
+ "mean_angle": 18.48088264465332
58
+ },
59
+ {
60
+ "id": "ibims_kitchen_01",
61
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/representative_method_comparison/ibims_kitchen_01_method_comparison.png",
62
+ "mean_angle": 21.066890716552734
63
+ },
64
+ {
65
+ "id": "ibims_storageroom_05",
66
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims/representative_method_comparison/ibims_storageroom_05_method_comparison.png",
67
+ "mean_angle": 35.72504806518555
68
+ }
69
+ ],
70
+ "display_from_eval": {
71
+ "perm": [
72
+ 0,
73
+ 1,
74
+ 2
75
+ ],
76
+ "signs": [
77
+ 1,
78
+ 1,
79
+ 1
80
+ ]
81
+ }
82
+ }
ablation/ibims/representative_images/method_comparison/ibims_kitchen_01_method_comparison.png ADDED

Git LFS Details

  • SHA256: 7a2ef03af889783c6478f5ec5c27cd50bc685aacc4cdcab63606acf67a8252d0
  • Pointer size: 131 Bytes
  • Size of remote file: 687 kB
ablation/ibims/representative_images/method_comparison/ibims_kitchen_07_method_comparison.png ADDED

Git LFS Details

  • SHA256: 027baf4bfc601cd148c13eb61fd2ea0aad457ff0199056f21ddcfede30f12bc4
  • Pointer size: 131 Bytes
  • Size of remote file: 645 kB
ablation/ibims/representative_images/method_comparison/ibims_lectureroom_05_method_comparison.png ADDED

Git LFS Details

  • SHA256: 2ef0e3885fca513a60b4156c1ab4d44788bc48ea139191c419144edc8e91072c
  • Pointer size: 131 Bytes
  • Size of remote file: 640 kB
ablation/ibims/representative_images/method_comparison/ibims_livingroom_14_method_comparison.png ADDED

Git LFS Details

  • SHA256: 38ddf7f899ab70fefbc47f9b7aa202fa3beed954d163c264b121ee2c8f5dbb14
  • Pointer size: 131 Bytes
  • Size of remote file: 776 kB
ablation/ibims/representative_images/method_comparison/ibims_restaurant_11_method_comparison.png ADDED

Git LFS Details

  • SHA256: 193ef311933dbaa2c8fb9434f1b28740feedaa45df1212871f93e682898dc072
  • Pointer size: 131 Bytes
  • Size of remote file: 649 kB
ablation/ibims/representative_images/method_comparison/ibims_storageroom_05_method_comparison.png ADDED

Git LFS Details

  • SHA256: 0ca4b413fe7aa02a1bd85625a88935f5f91e735adb746ec9444c6edf306caa4c
  • Pointer size: 131 Bytes
  • Size of remote file: 850 kB
ablation/ibims/representative_images/ours_representative_rgb_gt_pred_error.png ADDED

Git LFS Details

  • SHA256: 269ec317b899b64ee0fbb6d46d60dfd35354e2510e4ecd6d08ce4ad6671c0786
  • Pointer size: 132 Bytes
  • Size of remote file: 2.97 MB
ablation/ibims/source.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "run": "run_121747",
3
+ "source_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-17-47/ibims"
4
+ }
ablation/nyuv2/data/eval_experiment.json ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": "nyuv2",
3
+ "data_root": "/root/vepfs/Infinity/data/NYUv2/hf-parquet/tanganke/nyuv2/data",
4
+ "partition": "val",
5
+ "pn": "1M",
6
+ "max_samples": 0,
7
+ "input_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/_eval_set/images",
8
+ "eval_set_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/_eval_set",
9
+ "source_eval_set_dir": "",
10
+ "eval_image": "",
11
+ "methods": [
12
+ "ours"
13
+ ],
14
+ "ours_checkpoints": [
15
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth"
16
+ ],
17
+ "normal_tokenizer_ckpt": "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
18
+ "visible_cuda_devices": [
19
+ "0",
20
+ "1",
21
+ "2",
22
+ "3"
23
+ ],
24
+ "parallel_shards": "auto",
25
+ "compare_inference_time": true,
26
+ "timing_warmup": 3,
27
+ "timing_repeats": 5,
28
+ "ours_kv_cache_fast": false,
29
+ "inference_time_protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
30
+ "normal_conventions": {
31
+ "canonical": "camera_left_up_backward",
32
+ "dataset_targets": {
33
+ "nyuv2": {
34
+ "name": "nyuv2_raw_right_forward_up",
35
+ "to_eval_perm": [
36
+ 0,
37
+ 2,
38
+ 1
39
+ ],
40
+ "to_eval_signs": [
41
+ -1,
42
+ 1,
43
+ -1
44
+ ],
45
+ "description": "NYUv2 parquet normals. Canonical mapping: (x, y, z) -> (-x, z, -y)."
46
+ },
47
+ "hypersim": {
48
+ "name": "camera_left_up_backward",
49
+ "to_eval_perm": [
50
+ 0,
51
+ 1,
52
+ 2
53
+ ],
54
+ "to_eval_signs": [
55
+ 1,
56
+ 1,
57
+ 1
58
+ ],
59
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
60
+ },
61
+ "scannet": {
62
+ "name": "camera_left_up_backward",
63
+ "to_eval_perm": [
64
+ 0,
65
+ 1,
66
+ 2
67
+ ],
68
+ "to_eval_signs": [
69
+ 1,
70
+ 1,
71
+ 1
72
+ ],
73
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
74
+ },
75
+ "ibims": {
76
+ "name": "camera_left_up_backward",
77
+ "to_eval_perm": [
78
+ 0,
79
+ 1,
80
+ 2
81
+ ],
82
+ "to_eval_signs": [
83
+ 1,
84
+ 1,
85
+ 1
86
+ ],
87
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
88
+ },
89
+ "sintel": {
90
+ "name": "camera_left_up_backward",
91
+ "to_eval_perm": [
92
+ 0,
93
+ 1,
94
+ 2
95
+ ],
96
+ "to_eval_signs": [
97
+ 1,
98
+ 1,
99
+ 1
100
+ ],
101
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
102
+ }
103
+ },
104
+ "model_outputs": {
105
+ "ours": {
106
+ "name": "ours_model_xyz",
107
+ "to_eval_perm": [
108
+ 0,
109
+ 1,
110
+ 2
111
+ ],
112
+ "to_eval_signs": [
113
+ 1,
114
+ 1,
115
+ 1
116
+ ],
117
+ "description": "Infinity normal output already matches the exported eval convention."
118
+ },
119
+ "marigold": {
120
+ "name": "marigold_normals_xyz",
121
+ "to_eval_perm": [
122
+ 0,
123
+ 1,
124
+ 2
125
+ ],
126
+ "to_eval_signs": [
127
+ -1,
128
+ 1,
129
+ 1
130
+ ],
131
+ "description": "Marigold normals_npy output. Canonical mapping: (x, y, z) -> (-x, y, z)."
132
+ },
133
+ "geowizard": {
134
+ "name": "geowizard_normal_xyz",
135
+ "to_eval_perm": [
136
+ 0,
137
+ 1,
138
+ 2
139
+ ],
140
+ "to_eval_signs": [
141
+ 1,
142
+ 1,
143
+ 1
144
+ ],
145
+ "description": "GeoWizard normal_npy output already matches the canonical convention."
146
+ },
147
+ "stablenormal": {
148
+ "name": "stablenormal_xyz",
149
+ "to_eval_perm": [
150
+ 0,
151
+ 1,
152
+ 2
153
+ ],
154
+ "to_eval_signs": [
155
+ 1,
156
+ 1,
157
+ 1
158
+ ],
159
+ "description": "StableNormal output already matches the canonical convention."
160
+ },
161
+ "lotusg": {
162
+ "name": "lotus_g_xyz",
163
+ "to_eval_perm": [
164
+ 0,
165
+ 1,
166
+ 2
167
+ ],
168
+ "to_eval_signs": [
169
+ 1,
170
+ 1,
171
+ 1
172
+ ],
173
+ "description": "Lotus-G output already matches the canonical convention."
174
+ },
175
+ "lotusd": {
176
+ "name": "lotus_d_xyz",
177
+ "to_eval_perm": [
178
+ 0,
179
+ 1,
180
+ 2
181
+ ],
182
+ "to_eval_signs": [
183
+ 1,
184
+ 1,
185
+ 1
186
+ ],
187
+ "description": "Lotus-D output already matches the canonical convention."
188
+ },
189
+ "dsine": {
190
+ "name": "dsine_xyz",
191
+ "to_eval_perm": [
192
+ 0,
193
+ 1,
194
+ 2
195
+ ],
196
+ "to_eval_signs": [
197
+ 1,
198
+ 1,
199
+ 1
200
+ ],
201
+ "description": "DSINE output already matches the canonical convention."
202
+ },
203
+ "metric3dv2": {
204
+ "name": "metric3d_v2_xyz",
205
+ "to_eval_perm": [
206
+ 0,
207
+ 1,
208
+ 2
209
+ ],
210
+ "to_eval_signs": [
211
+ -1,
212
+ -1,
213
+ -1
214
+ ],
215
+ "description": "Metric3D v2 output. Canonical mapping: (x, y, z) -> (-x, -y, -z)."
216
+ },
217
+ "omnidata_v2": {
218
+ "name": "omnidata_v2_xyz",
219
+ "to_eval_perm": [
220
+ 0,
221
+ 1,
222
+ 2
223
+ ],
224
+ "to_eval_signs": [
225
+ 1,
226
+ 1,
227
+ 1
228
+ ],
229
+ "description": "Omnidata V2 adapter output already matches the canonical convention."
230
+ },
231
+ "marigold_e2eft": {
232
+ "name": "marigold_e2eft_xyz",
233
+ "to_eval_perm": [
234
+ 0,
235
+ 1,
236
+ 2
237
+ ],
238
+ "to_eval_signs": [
239
+ 1,
240
+ 1,
241
+ 1
242
+ ],
243
+ "description": "Marigold E2E-FT output already matches the canonical convention."
244
+ }
245
+ },
246
+ "display_from_eval": {
247
+ "perm": [
248
+ 0,
249
+ 1,
250
+ 2
251
+ ],
252
+ "signs": [
253
+ 1,
254
+ 1,
255
+ 1
256
+ ],
257
+ "description": "Direct normal-map display: RGB = (canonical normal + 1) / 2."
258
+ }
259
+ }
260
+ }
ablation/nyuv2/data/experiment_commands.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": [
3
+ [
4
+ "/root/vepfs/Infinity/.venv/bin/python",
5
+ "tools/run_normal_estimation.py",
6
+ "--model-path",
7
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
8
+ "--input-path",
9
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_input_shards/shard_00",
10
+ "--output-dir",
11
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_shards/shard_00",
12
+ "--seed",
13
+ "0",
14
+ "--top-k",
15
+ "1",
16
+ "--top-p",
17
+ "0.0",
18
+ "--tau",
19
+ "1.0",
20
+ "--save-npy",
21
+ "--timing-warmup",
22
+ "3",
23
+ "--timing-repeats",
24
+ "5",
25
+ "--normal-vae-ckpt",
26
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
27
+ "--normal-vae-type",
28
+ "32"
29
+ ],
30
+ [
31
+ "/root/vepfs/Infinity/.venv/bin/python",
32
+ "tools/run_normal_estimation.py",
33
+ "--model-path",
34
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
35
+ "--input-path",
36
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_input_shards/shard_01",
37
+ "--output-dir",
38
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_shards/shard_01",
39
+ "--seed",
40
+ "0",
41
+ "--top-k",
42
+ "1",
43
+ "--top-p",
44
+ "0.0",
45
+ "--tau",
46
+ "1.0",
47
+ "--save-npy",
48
+ "--timing-warmup",
49
+ "3",
50
+ "--timing-repeats",
51
+ "5",
52
+ "--normal-vae-ckpt",
53
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
54
+ "--normal-vae-type",
55
+ "32"
56
+ ],
57
+ [
58
+ "/root/vepfs/Infinity/.venv/bin/python",
59
+ "tools/run_normal_estimation.py",
60
+ "--model-path",
61
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
62
+ "--input-path",
63
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_input_shards/shard_02",
64
+ "--output-dir",
65
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_shards/shard_02",
66
+ "--seed",
67
+ "0",
68
+ "--top-k",
69
+ "1",
70
+ "--top-p",
71
+ "0.0",
72
+ "--tau",
73
+ "1.0",
74
+ "--save-npy",
75
+ "--timing-warmup",
76
+ "3",
77
+ "--timing-repeats",
78
+ "5",
79
+ "--normal-vae-ckpt",
80
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
81
+ "--normal-vae-type",
82
+ "32"
83
+ ],
84
+ [
85
+ "/root/vepfs/Infinity/.venv/bin/python",
86
+ "tools/run_normal_estimation.py",
87
+ "--model-path",
88
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
89
+ "--input-path",
90
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_input_shards/shard_03",
91
+ "--output-dir",
92
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/_shards/shard_03",
93
+ "--seed",
94
+ "0",
95
+ "--top-k",
96
+ "1",
97
+ "--top-p",
98
+ "0.0",
99
+ "--tau",
100
+ "1.0",
101
+ "--save-npy",
102
+ "--timing-warmup",
103
+ "3",
104
+ "--timing-repeats",
105
+ "5",
106
+ "--normal-vae-ckpt",
107
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
108
+ "--normal-vae-type",
109
+ "32"
110
+ ]
111
+ ]
112
+ }
ablation/nyuv2/data/inference_time_summary.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
3
+ "methods": {
4
+ "ours": {
5
+ "enabled": true,
6
+ "available": true,
7
+ "method": "ours",
8
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
9
+ "timed_observations": 3270,
10
+ "images": 654,
11
+ "mean_seconds": 1.8544761400122982,
12
+ "median_seconds": 1.850359095260501,
13
+ "std_seconds": 0.019757099683185158,
14
+ "ci95_seconds": 0.0006771819693837795,
15
+ "min_seconds": 1.8171202559024096,
16
+ "max_seconds": 1.960617057979107,
17
+ "images_per_second": 0.539235840474803,
18
+ "per_image_file": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/ours/inference_times.json"
19
+ }
20
+ }
21
+ }
ablation/nyuv2/data/metrics_summary.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": {
3
+ "acc_11_25": 0.39451143620621176,
4
+ "acc_22_5": 0.6669151603446459,
5
+ "acc_30": 0.752394706238665,
6
+ "angle_deg": 23.019315893132386,
7
+ "loss_angular_rad": 0.4017628481218574,
8
+ "loss_l1": 0.18980442463713684,
9
+ "loss_latent": 0.0,
10
+ "loss_norm": 5.238297881543678e-10,
11
+ "loss_total_aux": 0.0,
12
+ "samples": 654.0,
13
+ "missing": 0.0,
14
+ "inference_mean_seconds": 1.8544761400122982,
15
+ "inference_median_seconds": 1.850359095260501,
16
+ "inference_std_seconds": 0.019757099683185158,
17
+ "inference_images_per_second": 0.539235840474803
18
+ }
19
+ }
ablation/nyuv2/data/representative_method_comparison.json ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "samples": [
3
+ {
4
+ "id": "val_000085",
5
+ "mean_angle": 15.93188762664795,
6
+ "methods": 1
7
+ },
8
+ {
9
+ "id": "val_000101",
10
+ "mean_angle": 19.566728591918945,
11
+ "methods": 1
12
+ },
13
+ {
14
+ "id": "val_000441",
15
+ "mean_angle": 21.495540618896484,
16
+ "methods": 1
17
+ },
18
+ {
19
+ "id": "val_000055",
20
+ "mean_angle": 23.6015567779541,
21
+ "methods": 1
22
+ },
23
+ {
24
+ "id": "val_000321",
25
+ "mean_angle": 26.621543884277344,
26
+ "methods": 1
27
+ },
28
+ {
29
+ "id": "val_000041",
30
+ "mean_angle": 35.222721099853516,
31
+ "methods": 1
32
+ }
33
+ ],
34
+ "methods": [
35
+ "ours"
36
+ ],
37
+ "layout": "one image per representative sample; top row is RGB/GT, then one row per method with Pred/Error.",
38
+ "images": [
39
+ {
40
+ "id": "val_000085",
41
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/representative_method_comparison/val_000085_method_comparison.png",
42
+ "mean_angle": 15.93188762664795
43
+ },
44
+ {
45
+ "id": "val_000101",
46
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/representative_method_comparison/val_000101_method_comparison.png",
47
+ "mean_angle": 19.566728591918945
48
+ },
49
+ {
50
+ "id": "val_000441",
51
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/representative_method_comparison/val_000441_method_comparison.png",
52
+ "mean_angle": 21.495540618896484
53
+ },
54
+ {
55
+ "id": "val_000055",
56
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/representative_method_comparison/val_000055_method_comparison.png",
57
+ "mean_angle": 23.6015567779541
58
+ },
59
+ {
60
+ "id": "val_000321",
61
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/representative_method_comparison/val_000321_method_comparison.png",
62
+ "mean_angle": 26.621543884277344
63
+ },
64
+ {
65
+ "id": "val_000041",
66
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2/representative_method_comparison/val_000041_method_comparison.png",
67
+ "mean_angle": 35.222721099853516
68
+ }
69
+ ],
70
+ "display_from_eval": {
71
+ "perm": [
72
+ 0,
73
+ 1,
74
+ 2
75
+ ],
76
+ "signs": [
77
+ 1,
78
+ 1,
79
+ 1
80
+ ]
81
+ }
82
+ }
ablation/nyuv2/representative_images/method_comparison/val_000041_method_comparison.png ADDED

Git LFS Details

  • SHA256: b985622a0da2be3c94ef5c8c2f7552eb755bad5de6b379a2b52eb15fe927331a
  • Pointer size: 131 Bytes
  • Size of remote file: 666 kB
ablation/nyuv2/representative_images/method_comparison/val_000055_method_comparison.png ADDED

Git LFS Details

  • SHA256: ad47086894688d20d5930e61bf1d53b309d68042f51b103d77157d03afb36f11
  • Pointer size: 131 Bytes
  • Size of remote file: 596 kB
ablation/nyuv2/representative_images/method_comparison/val_000085_method_comparison.png ADDED

Git LFS Details

  • SHA256: 1c830087bc93dfd88f4ff8eb35ecad1b426390d6a5adc94f0a5db303f6cb9718
  • Pointer size: 131 Bytes
  • Size of remote file: 589 kB
ablation/nyuv2/representative_images/method_comparison/val_000101_method_comparison.png ADDED

Git LFS Details

  • SHA256: 0f12efc0c715852418f15759a3adaf72a7a771b88ff817022632fc4b0a900529
  • Pointer size: 131 Bytes
  • Size of remote file: 585 kB
ablation/nyuv2/representative_images/method_comparison/val_000321_method_comparison.png ADDED

Git LFS Details

  • SHA256: 059519253745bd94700795937b4b4163dc1e060c9d230909f2e41c7a7d0b20cc
  • Pointer size: 131 Bytes
  • Size of remote file: 598 kB
ablation/nyuv2/representative_images/method_comparison/val_000441_method_comparison.png ADDED

Git LFS Details

  • SHA256: b7bbf23e9fff383048b35d9a64e14f8ecfd348a9e229117ffde47f768c6dee2d
  • Pointer size: 131 Bytes
  • Size of remote file: 651 kB
ablation/nyuv2/representative_images/ours_representative_rgb_gt_pred_error.png ADDED

Git LFS Details

  • SHA256: 2e2edd8b0a1882420a425e26a8f7dbc8d4f7776514f13f1caec7706db04fd64b
  • Pointer size: 132 Bytes
  • Size of remote file: 2.68 MB
ablation/nyuv2/source.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "run": "run_123850",
3
+ "source_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/nyuv2"
4
+ }
ablation/ours_vs_ablation_comparison.csv ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ dataset,baseline_method,baseline_angle_deg,ablation_method,ablation_run,ablation_angle_deg,delta_angle_deg,baseline_acc_11_25,ablation_acc_11_25,delta_acc_11_25
2
+ nyuv2,ours_ckpt3500,22.75464242970178,ours,run_123850,23.019315893132386,0.2646734634306078,0.41326634905981724,0.39451143620621176,-0.018754912853605477
3
+ scannet,ours_ckpt3500,21.15351497332255,ours,run_123850,21.39486180464427,0.2413468313217173,0.472137817904974,0.4585078304835285,-0.0136299874214455
4
+ sintel,ours_ckpt3500,37.86511148187451,ours,run_123850,38.26282845583177,0.3977169739572659,0.18697244788632078,0.17808037532162607,-0.008892072564694709
5
+ ibims,ours_ckpt3500,17.555685510635374,ours,run_121747,18.20290114402771,0.6472156333923351,0.6427510130405426,0.6245251177251339,-0.018225895315408747
6
+ toy,ours_ckpt3500,,ours,run_121747,,,,,
ablation/ours_vs_ablation_comparison.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ours Ablation Comparison
2
+
3
+ Baseline values come from `../tables/mean_angular_error_table.csv` row `ours_ckpt3500`.
4
+ Ablation values come from `ablation_metrics_summary.csv` row `ours`.
5
+
6
+ Lower angle is better; higher acc@11.25 is better. Delta is ablation minus baseline.
7
+
8
+ | Dataset | Baseline angle | Ablation angle | Delta angle | Baseline acc@11.25 | Ablation acc@11.25 | Delta acc@11.25 | Ablation run |
9
+ |---|---:|---:|---:|---:|---:|---:|---|
10
+ | nyuv2 | 22.75 | 23.02 | +0.26 | 41.3 | 39.5 | -1.9 | run_123850 |
11
+ | scannet | 21.15 | 21.39 | +0.24 | 47.2 | 45.9 | -1.4 | run_123850 |
12
+ | sintel | 37.87 | 38.26 | +0.40 | 18.7 | 17.8 | -0.9 | run_123850 |
13
+ | ibims | 17.56 | 18.20 | +0.65 | 64.3 | 62.5 | -1.8 | run_121747 |
14
+ | toy | NA | NA | NA | NA | NA | NA | run_121747 |
ablation/scannet/data/eval_experiment.json ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": "scannet",
3
+ "data_root": "/root/vepfs/Infinity/data",
4
+ "partition": "val",
5
+ "pn": "1M",
6
+ "max_samples": 0,
7
+ "input_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/_eval_set/images",
8
+ "eval_set_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/_eval_set",
9
+ "source_eval_set_dir": "",
10
+ "eval_image": "",
11
+ "methods": [
12
+ "ours"
13
+ ],
14
+ "ours_checkpoints": [
15
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth"
16
+ ],
17
+ "normal_tokenizer_ckpt": "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
18
+ "visible_cuda_devices": [
19
+ "0",
20
+ "1",
21
+ "2",
22
+ "3"
23
+ ],
24
+ "parallel_shards": "auto",
25
+ "compare_inference_time": true,
26
+ "timing_warmup": 3,
27
+ "timing_repeats": 5,
28
+ "ours_kv_cache_fast": false,
29
+ "inference_time_protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
30
+ "normal_conventions": {
31
+ "canonical": "camera_left_up_backward",
32
+ "dataset_targets": {
33
+ "nyuv2": {
34
+ "name": "nyuv2_raw_right_forward_up",
35
+ "to_eval_perm": [
36
+ 0,
37
+ 2,
38
+ 1
39
+ ],
40
+ "to_eval_signs": [
41
+ -1,
42
+ 1,
43
+ -1
44
+ ],
45
+ "description": "NYUv2 parquet normals. Canonical mapping: (x, y, z) -> (-x, z, -y)."
46
+ },
47
+ "hypersim": {
48
+ "name": "camera_left_up_backward",
49
+ "to_eval_perm": [
50
+ 0,
51
+ 1,
52
+ 2
53
+ ],
54
+ "to_eval_signs": [
55
+ 1,
56
+ 1,
57
+ 1
58
+ ],
59
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
60
+ },
61
+ "scannet": {
62
+ "name": "camera_left_up_backward",
63
+ "to_eval_perm": [
64
+ 0,
65
+ 1,
66
+ 2
67
+ ],
68
+ "to_eval_signs": [
69
+ 1,
70
+ 1,
71
+ 1
72
+ ],
73
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
74
+ },
75
+ "ibims": {
76
+ "name": "camera_left_up_backward",
77
+ "to_eval_perm": [
78
+ 0,
79
+ 1,
80
+ 2
81
+ ],
82
+ "to_eval_signs": [
83
+ 1,
84
+ 1,
85
+ 1
86
+ ],
87
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
88
+ },
89
+ "sintel": {
90
+ "name": "camera_left_up_backward",
91
+ "to_eval_perm": [
92
+ 0,
93
+ 1,
94
+ 2
95
+ ],
96
+ "to_eval_signs": [
97
+ 1,
98
+ 1,
99
+ 1
100
+ ],
101
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
102
+ }
103
+ },
104
+ "model_outputs": {
105
+ "ours": {
106
+ "name": "ours_model_xyz",
107
+ "to_eval_perm": [
108
+ 0,
109
+ 1,
110
+ 2
111
+ ],
112
+ "to_eval_signs": [
113
+ 1,
114
+ 1,
115
+ 1
116
+ ],
117
+ "description": "Infinity normal output already matches the exported eval convention."
118
+ },
119
+ "marigold": {
120
+ "name": "marigold_normals_xyz",
121
+ "to_eval_perm": [
122
+ 0,
123
+ 1,
124
+ 2
125
+ ],
126
+ "to_eval_signs": [
127
+ -1,
128
+ 1,
129
+ 1
130
+ ],
131
+ "description": "Marigold normals_npy output. Canonical mapping: (x, y, z) -> (-x, y, z)."
132
+ },
133
+ "geowizard": {
134
+ "name": "geowizard_normal_xyz",
135
+ "to_eval_perm": [
136
+ 0,
137
+ 1,
138
+ 2
139
+ ],
140
+ "to_eval_signs": [
141
+ 1,
142
+ 1,
143
+ 1
144
+ ],
145
+ "description": "GeoWizard normal_npy output already matches the canonical convention."
146
+ },
147
+ "stablenormal": {
148
+ "name": "stablenormal_xyz",
149
+ "to_eval_perm": [
150
+ 0,
151
+ 1,
152
+ 2
153
+ ],
154
+ "to_eval_signs": [
155
+ 1,
156
+ 1,
157
+ 1
158
+ ],
159
+ "description": "StableNormal output already matches the canonical convention."
160
+ },
161
+ "lotusg": {
162
+ "name": "lotus_g_xyz",
163
+ "to_eval_perm": [
164
+ 0,
165
+ 1,
166
+ 2
167
+ ],
168
+ "to_eval_signs": [
169
+ 1,
170
+ 1,
171
+ 1
172
+ ],
173
+ "description": "Lotus-G output already matches the canonical convention."
174
+ },
175
+ "lotusd": {
176
+ "name": "lotus_d_xyz",
177
+ "to_eval_perm": [
178
+ 0,
179
+ 1,
180
+ 2
181
+ ],
182
+ "to_eval_signs": [
183
+ 1,
184
+ 1,
185
+ 1
186
+ ],
187
+ "description": "Lotus-D output already matches the canonical convention."
188
+ },
189
+ "dsine": {
190
+ "name": "dsine_xyz",
191
+ "to_eval_perm": [
192
+ 0,
193
+ 1,
194
+ 2
195
+ ],
196
+ "to_eval_signs": [
197
+ 1,
198
+ 1,
199
+ 1
200
+ ],
201
+ "description": "DSINE output already matches the canonical convention."
202
+ },
203
+ "metric3dv2": {
204
+ "name": "metric3d_v2_xyz",
205
+ "to_eval_perm": [
206
+ 0,
207
+ 1,
208
+ 2
209
+ ],
210
+ "to_eval_signs": [
211
+ -1,
212
+ -1,
213
+ -1
214
+ ],
215
+ "description": "Metric3D v2 output. Canonical mapping: (x, y, z) -> (-x, -y, -z)."
216
+ },
217
+ "omnidata_v2": {
218
+ "name": "omnidata_v2_xyz",
219
+ "to_eval_perm": [
220
+ 0,
221
+ 1,
222
+ 2
223
+ ],
224
+ "to_eval_signs": [
225
+ 1,
226
+ 1,
227
+ 1
228
+ ],
229
+ "description": "Omnidata V2 adapter output already matches the canonical convention."
230
+ },
231
+ "marigold_e2eft": {
232
+ "name": "marigold_e2eft_xyz",
233
+ "to_eval_perm": [
234
+ 0,
235
+ 1,
236
+ 2
237
+ ],
238
+ "to_eval_signs": [
239
+ 1,
240
+ 1,
241
+ 1
242
+ ],
243
+ "description": "Marigold E2E-FT output already matches the canonical convention."
244
+ }
245
+ },
246
+ "display_from_eval": {
247
+ "perm": [
248
+ 0,
249
+ 1,
250
+ 2
251
+ ],
252
+ "signs": [
253
+ 1,
254
+ 1,
255
+ 1
256
+ ],
257
+ "description": "Direct normal-map display: RGB = (canonical normal + 1) / 2."
258
+ }
259
+ }
260
+ }
ablation/scannet/data/experiment_commands.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": [
3
+ [
4
+ "/root/vepfs/Infinity/.venv/bin/python",
5
+ "tools/run_normal_estimation.py",
6
+ "--model-path",
7
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
8
+ "--input-path",
9
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_input_shards/shard_00",
10
+ "--output-dir",
11
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_shards/shard_00",
12
+ "--seed",
13
+ "0",
14
+ "--top-k",
15
+ "1",
16
+ "--top-p",
17
+ "0.0",
18
+ "--tau",
19
+ "1.0",
20
+ "--save-npy",
21
+ "--timing-warmup",
22
+ "3",
23
+ "--timing-repeats",
24
+ "5",
25
+ "--normal-vae-ckpt",
26
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
27
+ "--normal-vae-type",
28
+ "32"
29
+ ],
30
+ [
31
+ "/root/vepfs/Infinity/.venv/bin/python",
32
+ "tools/run_normal_estimation.py",
33
+ "--model-path",
34
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
35
+ "--input-path",
36
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_input_shards/shard_01",
37
+ "--output-dir",
38
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_shards/shard_01",
39
+ "--seed",
40
+ "0",
41
+ "--top-k",
42
+ "1",
43
+ "--top-p",
44
+ "0.0",
45
+ "--tau",
46
+ "1.0",
47
+ "--save-npy",
48
+ "--timing-warmup",
49
+ "3",
50
+ "--timing-repeats",
51
+ "5",
52
+ "--normal-vae-ckpt",
53
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
54
+ "--normal-vae-type",
55
+ "32"
56
+ ],
57
+ [
58
+ "/root/vepfs/Infinity/.venv/bin/python",
59
+ "tools/run_normal_estimation.py",
60
+ "--model-path",
61
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
62
+ "--input-path",
63
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_input_shards/shard_02",
64
+ "--output-dir",
65
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_shards/shard_02",
66
+ "--seed",
67
+ "0",
68
+ "--top-k",
69
+ "1",
70
+ "--top-p",
71
+ "0.0",
72
+ "--tau",
73
+ "1.0",
74
+ "--save-npy",
75
+ "--timing-warmup",
76
+ "3",
77
+ "--timing-repeats",
78
+ "5",
79
+ "--normal-vae-ckpt",
80
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
81
+ "--normal-vae-type",
82
+ "32"
83
+ ],
84
+ [
85
+ "/root/vepfs/Infinity/.venv/bin/python",
86
+ "tools/run_normal_estimation.py",
87
+ "--model-path",
88
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
89
+ "--input-path",
90
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_input_shards/shard_03",
91
+ "--output-dir",
92
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/_shards/shard_03",
93
+ "--seed",
94
+ "0",
95
+ "--top-k",
96
+ "1",
97
+ "--top-p",
98
+ "0.0",
99
+ "--tau",
100
+ "1.0",
101
+ "--save-npy",
102
+ "--timing-warmup",
103
+ "3",
104
+ "--timing-repeats",
105
+ "5",
106
+ "--normal-vae-ckpt",
107
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
108
+ "--normal-vae-type",
109
+ "32"
110
+ ]
111
+ ]
112
+ }
ablation/scannet/data/inference_time_summary.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
3
+ "methods": {
4
+ "ours": {
5
+ "enabled": true,
6
+ "available": true,
7
+ "method": "ours",
8
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
9
+ "timed_observations": 1500,
10
+ "images": 300,
11
+ "mean_seconds": 1.8565222447564205,
12
+ "median_seconds": 1.852135144174099,
13
+ "std_seconds": 0.01928934004573679,
14
+ "ci95_seconds": 0.00097617529201788,
15
+ "min_seconds": 1.8278531096875668,
16
+ "max_seconds": 1.9190935641527176,
17
+ "images_per_second": 0.5386415394829821,
18
+ "per_image_file": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/ours/inference_times.json"
19
+ }
20
+ }
21
+ }
ablation/scannet/data/metrics_summary.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": {
3
+ "acc_11_25": 0.4585078304835285,
4
+ "acc_22_5": 0.7153138614818454,
5
+ "acc_30": 0.7848363836357991,
6
+ "angle_deg": 21.39486180464427,
7
+ "loss_angular_rad": 0.3734107763071855,
8
+ "loss_l1": 0.1772806303203106,
9
+ "loss_latent": 0.0,
10
+ "loss_norm": 5.598008211612123e-10,
11
+ "loss_total_aux": 0.0,
12
+ "samples": 300.0,
13
+ "missing": 0.0,
14
+ "inference_mean_seconds": 1.8565222447564205,
15
+ "inference_median_seconds": 1.852135144174099,
16
+ "inference_std_seconds": 0.01928934004573679,
17
+ "inference_images_per_second": 0.5386415394829821
18
+ }
19
+ }
ablation/scannet/data/representative_method_comparison.json ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "samples": [
3
+ {
4
+ "id": "scene0223_00_000600",
5
+ "mean_angle": 12.284090995788574,
6
+ "methods": 1
7
+ },
8
+ {
9
+ "id": "scene0645_01_000340",
10
+ "mean_angle": 15.68735122680664,
11
+ "methods": 1
12
+ },
13
+ {
14
+ "id": "scene0303_00_001250",
15
+ "mean_angle": 18.916147232055664,
16
+ "methods": 1
17
+ },
18
+ {
19
+ "id": "scene0552_01_000430",
20
+ "mean_angle": 21.800033569335938,
21
+ "methods": 1
22
+ },
23
+ {
24
+ "id": "scene0600_02_001350",
25
+ "mean_angle": 26.825334548950195,
26
+ "methods": 1
27
+ },
28
+ {
29
+ "id": "scene0548_00_002050",
30
+ "mean_angle": 39.613460540771484,
31
+ "methods": 1
32
+ }
33
+ ],
34
+ "methods": [
35
+ "ours"
36
+ ],
37
+ "layout": "one image per representative sample; top row is RGB/GT, then one row per method with Pred/Error.",
38
+ "images": [
39
+ {
40
+ "id": "scene0223_00_000600",
41
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/representative_method_comparison/scene0223_00_000600_method_comparison.png",
42
+ "mean_angle": 12.284090995788574
43
+ },
44
+ {
45
+ "id": "scene0645_01_000340",
46
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/representative_method_comparison/scene0645_01_000340_method_comparison.png",
47
+ "mean_angle": 15.68735122680664
48
+ },
49
+ {
50
+ "id": "scene0303_00_001250",
51
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/representative_method_comparison/scene0303_00_001250_method_comparison.png",
52
+ "mean_angle": 18.916147232055664
53
+ },
54
+ {
55
+ "id": "scene0552_01_000430",
56
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/representative_method_comparison/scene0552_01_000430_method_comparison.png",
57
+ "mean_angle": 21.800033569335938
58
+ },
59
+ {
60
+ "id": "scene0600_02_001350",
61
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/representative_method_comparison/scene0600_02_001350_method_comparison.png",
62
+ "mean_angle": 26.825334548950195
63
+ },
64
+ {
65
+ "id": "scene0548_00_002050",
66
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet/representative_method_comparison/scene0548_00_002050_method_comparison.png",
67
+ "mean_angle": 39.613460540771484
68
+ }
69
+ ],
70
+ "display_from_eval": {
71
+ "perm": [
72
+ 0,
73
+ 1,
74
+ 2
75
+ ],
76
+ "signs": [
77
+ 1,
78
+ 1,
79
+ 1
80
+ ]
81
+ }
82
+ }
ablation/scannet/representative_images/method_comparison/scene0223_00_000600_method_comparison.png ADDED

Git LFS Details

  • SHA256: 42c91e791f614e6806ba1aebddc8b4b140f3db01137448dba91e7d29a2bf9c15
  • Pointer size: 131 Bytes
  • Size of remote file: 665 kB
ablation/scannet/representative_images/method_comparison/scene0303_00_001250_method_comparison.png ADDED

Git LFS Details

  • SHA256: 4aecc6a9de9b2157775c5a40b2b625e2e19d1e8ca8f5ee4db38ff2a5228977d5
  • Pointer size: 131 Bytes
  • Size of remote file: 634 kB
ablation/scannet/representative_images/method_comparison/scene0548_00_002050_method_comparison.png ADDED

Git LFS Details

  • SHA256: 6e1e29e2c689ecd10841306d06bc2cfe75534dccd6b7a668ad2fae216d72a5f8
  • Pointer size: 131 Bytes
  • Size of remote file: 551 kB
ablation/scannet/representative_images/method_comparison/scene0552_01_000430_method_comparison.png ADDED

Git LFS Details

  • SHA256: 10758ebe4393de683ef7622bcdbf33ab58646d7ca4dedf1035f1071fc74bea61
  • Pointer size: 131 Bytes
  • Size of remote file: 604 kB
ablation/scannet/representative_images/method_comparison/scene0600_02_001350_method_comparison.png ADDED

Git LFS Details

  • SHA256: 361bf7b14b69f9b3a4940551b468ec8a0806437e5c624ff8c4be2aa8da78da21
  • Pointer size: 131 Bytes
  • Size of remote file: 595 kB
ablation/scannet/representative_images/method_comparison/scene0645_01_000340_method_comparison.png ADDED

Git LFS Details

  • SHA256: 19633135dbcca66b615a28baf9e9247d0aef8daca1787448fb99bc3e06f30c71
  • Pointer size: 131 Bytes
  • Size of remote file: 676 kB
ablation/scannet/representative_images/ours_representative_rgb_gt_pred_error.png ADDED

Git LFS Details

  • SHA256: 7d678a0dfbda0f37130735ba1e32836c5c73bace7ebdad68366528d77597a6ec
  • Pointer size: 132 Bytes
  • Size of remote file: 2.7 MB
ablation/scannet/source.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "run": "run_123850",
3
+ "source_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/scannet"
4
+ }
ablation/sintel/data/eval_experiment.json ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dataset": "sintel",
3
+ "data_root": "/root/vepfs/Infinity/data",
4
+ "partition": "val",
5
+ "pn": "1M",
6
+ "max_samples": 0,
7
+ "input_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/_eval_set/images",
8
+ "eval_set_dir": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/_eval_set",
9
+ "source_eval_set_dir": "",
10
+ "eval_image": "",
11
+ "methods": [
12
+ "ours"
13
+ ],
14
+ "ours_checkpoints": [
15
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth"
16
+ ],
17
+ "normal_tokenizer_ckpt": "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
18
+ "visible_cuda_devices": [
19
+ "0",
20
+ "1",
21
+ "2",
22
+ "3"
23
+ ],
24
+ "parallel_shards": "auto",
25
+ "compare_inference_time": true,
26
+ "timing_warmup": 3,
27
+ "timing_repeats": 5,
28
+ "ours_kv_cache_fast": false,
29
+ "inference_time_protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
30
+ "normal_conventions": {
31
+ "canonical": "camera_left_up_backward",
32
+ "dataset_targets": {
33
+ "nyuv2": {
34
+ "name": "nyuv2_raw_right_forward_up",
35
+ "to_eval_perm": [
36
+ 0,
37
+ 2,
38
+ 1
39
+ ],
40
+ "to_eval_signs": [
41
+ -1,
42
+ 1,
43
+ -1
44
+ ],
45
+ "description": "NYUv2 parquet normals. Canonical mapping: (x, y, z) -> (-x, z, -y)."
46
+ },
47
+ "hypersim": {
48
+ "name": "camera_left_up_backward",
49
+ "to_eval_perm": [
50
+ 0,
51
+ 1,
52
+ 2
53
+ ],
54
+ "to_eval_signs": [
55
+ 1,
56
+ 1,
57
+ 1
58
+ ],
59
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
60
+ },
61
+ "scannet": {
62
+ "name": "camera_left_up_backward",
63
+ "to_eval_perm": [
64
+ 0,
65
+ 1,
66
+ 2
67
+ ],
68
+ "to_eval_signs": [
69
+ 1,
70
+ 1,
71
+ 1
72
+ ],
73
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
74
+ },
75
+ "ibims": {
76
+ "name": "camera_left_up_backward",
77
+ "to_eval_perm": [
78
+ 0,
79
+ 1,
80
+ 2
81
+ ],
82
+ "to_eval_signs": [
83
+ 1,
84
+ 1,
85
+ 1
86
+ ],
87
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
88
+ },
89
+ "sintel": {
90
+ "name": "camera_left_up_backward",
91
+ "to_eval_perm": [
92
+ 0,
93
+ 1,
94
+ 2
95
+ ],
96
+ "to_eval_signs": [
97
+ 1,
98
+ 1,
99
+ 1
100
+ ],
101
+ "description": "Canonical metric convention: +x left, +y up, +z backward."
102
+ }
103
+ },
104
+ "model_outputs": {
105
+ "ours": {
106
+ "name": "ours_model_xyz",
107
+ "to_eval_perm": [
108
+ 0,
109
+ 1,
110
+ 2
111
+ ],
112
+ "to_eval_signs": [
113
+ 1,
114
+ 1,
115
+ 1
116
+ ],
117
+ "description": "Infinity normal output already matches the exported eval convention."
118
+ },
119
+ "marigold": {
120
+ "name": "marigold_normals_xyz",
121
+ "to_eval_perm": [
122
+ 0,
123
+ 1,
124
+ 2
125
+ ],
126
+ "to_eval_signs": [
127
+ -1,
128
+ 1,
129
+ 1
130
+ ],
131
+ "description": "Marigold normals_npy output. Canonical mapping: (x, y, z) -> (-x, y, z)."
132
+ },
133
+ "geowizard": {
134
+ "name": "geowizard_normal_xyz",
135
+ "to_eval_perm": [
136
+ 0,
137
+ 1,
138
+ 2
139
+ ],
140
+ "to_eval_signs": [
141
+ 1,
142
+ 1,
143
+ 1
144
+ ],
145
+ "description": "GeoWizard normal_npy output already matches the canonical convention."
146
+ },
147
+ "stablenormal": {
148
+ "name": "stablenormal_xyz",
149
+ "to_eval_perm": [
150
+ 0,
151
+ 1,
152
+ 2
153
+ ],
154
+ "to_eval_signs": [
155
+ 1,
156
+ 1,
157
+ 1
158
+ ],
159
+ "description": "StableNormal output already matches the canonical convention."
160
+ },
161
+ "lotusg": {
162
+ "name": "lotus_g_xyz",
163
+ "to_eval_perm": [
164
+ 0,
165
+ 1,
166
+ 2
167
+ ],
168
+ "to_eval_signs": [
169
+ 1,
170
+ 1,
171
+ 1
172
+ ],
173
+ "description": "Lotus-G output already matches the canonical convention."
174
+ },
175
+ "lotusd": {
176
+ "name": "lotus_d_xyz",
177
+ "to_eval_perm": [
178
+ 0,
179
+ 1,
180
+ 2
181
+ ],
182
+ "to_eval_signs": [
183
+ 1,
184
+ 1,
185
+ 1
186
+ ],
187
+ "description": "Lotus-D output already matches the canonical convention."
188
+ },
189
+ "dsine": {
190
+ "name": "dsine_xyz",
191
+ "to_eval_perm": [
192
+ 0,
193
+ 1,
194
+ 2
195
+ ],
196
+ "to_eval_signs": [
197
+ 1,
198
+ 1,
199
+ 1
200
+ ],
201
+ "description": "DSINE output already matches the canonical convention."
202
+ },
203
+ "metric3dv2": {
204
+ "name": "metric3d_v2_xyz",
205
+ "to_eval_perm": [
206
+ 0,
207
+ 1,
208
+ 2
209
+ ],
210
+ "to_eval_signs": [
211
+ -1,
212
+ -1,
213
+ -1
214
+ ],
215
+ "description": "Metric3D v2 output. Canonical mapping: (x, y, z) -> (-x, -y, -z)."
216
+ },
217
+ "omnidata_v2": {
218
+ "name": "omnidata_v2_xyz",
219
+ "to_eval_perm": [
220
+ 0,
221
+ 1,
222
+ 2
223
+ ],
224
+ "to_eval_signs": [
225
+ 1,
226
+ 1,
227
+ 1
228
+ ],
229
+ "description": "Omnidata V2 adapter output already matches the canonical convention."
230
+ },
231
+ "marigold_e2eft": {
232
+ "name": "marigold_e2eft_xyz",
233
+ "to_eval_perm": [
234
+ 0,
235
+ 1,
236
+ 2
237
+ ],
238
+ "to_eval_signs": [
239
+ 1,
240
+ 1,
241
+ 1
242
+ ],
243
+ "description": "Marigold E2E-FT output already matches the canonical convention."
244
+ }
245
+ },
246
+ "display_from_eval": {
247
+ "perm": [
248
+ 0,
249
+ 1,
250
+ 2
251
+ ],
252
+ "signs": [
253
+ 1,
254
+ 1,
255
+ 1
256
+ ],
257
+ "description": "Direct normal-map display: RGB = (canonical normal + 1) / 2."
258
+ }
259
+ }
260
+ }
ablation/sintel/data/experiment_commands.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": [
3
+ [
4
+ "/root/vepfs/Infinity/.venv/bin/python",
5
+ "tools/run_normal_estimation.py",
6
+ "--model-path",
7
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
8
+ "--input-path",
9
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_input_shards/shard_00",
10
+ "--output-dir",
11
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_shards/shard_00",
12
+ "--seed",
13
+ "0",
14
+ "--top-k",
15
+ "1",
16
+ "--top-p",
17
+ "0.0",
18
+ "--tau",
19
+ "1.0",
20
+ "--save-npy",
21
+ "--timing-warmup",
22
+ "3",
23
+ "--timing-repeats",
24
+ "5",
25
+ "--normal-vae-ckpt",
26
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
27
+ "--normal-vae-type",
28
+ "32"
29
+ ],
30
+ [
31
+ "/root/vepfs/Infinity/.venv/bin/python",
32
+ "tools/run_normal_estimation.py",
33
+ "--model-path",
34
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
35
+ "--input-path",
36
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_input_shards/shard_01",
37
+ "--output-dir",
38
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_shards/shard_01",
39
+ "--seed",
40
+ "0",
41
+ "--top-k",
42
+ "1",
43
+ "--top-p",
44
+ "0.0",
45
+ "--tau",
46
+ "1.0",
47
+ "--save-npy",
48
+ "--timing-warmup",
49
+ "3",
50
+ "--timing-repeats",
51
+ "5",
52
+ "--normal-vae-ckpt",
53
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
54
+ "--normal-vae-type",
55
+ "32"
56
+ ],
57
+ [
58
+ "/root/vepfs/Infinity/.venv/bin/python",
59
+ "tools/run_normal_estimation.py",
60
+ "--model-path",
61
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
62
+ "--input-path",
63
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_input_shards/shard_02",
64
+ "--output-dir",
65
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_shards/shard_02",
66
+ "--seed",
67
+ "0",
68
+ "--top-k",
69
+ "1",
70
+ "--top-p",
71
+ "0.0",
72
+ "--tau",
73
+ "1.0",
74
+ "--save-npy",
75
+ "--timing-warmup",
76
+ "3",
77
+ "--timing-repeats",
78
+ "5",
79
+ "--normal-vae-ckpt",
80
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
81
+ "--normal-vae-type",
82
+ "32"
83
+ ],
84
+ [
85
+ "/root/vepfs/Infinity/.venv/bin/python",
86
+ "tools/run_normal_estimation.py",
87
+ "--model-path",
88
+ "/root/vepfs/Infinity/outputs/normal_estimation/2026-06-11/04-33-27/checkpoints/step_0003500_val_ar_nyu_deg_103.7338.pth",
89
+ "--input-path",
90
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_input_shards/shard_03",
91
+ "--output-dir",
92
+ "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/_shards/shard_03",
93
+ "--seed",
94
+ "0",
95
+ "--top-k",
96
+ "1",
97
+ "--top-p",
98
+ "0.0",
99
+ "--tau",
100
+ "1.0",
101
+ "--save-npy",
102
+ "--timing-warmup",
103
+ "3",
104
+ "--timing-repeats",
105
+ "5",
106
+ "--normal-vae-ckpt",
107
+ "/root/vepfs/Infinity/outputs/results/checkpoints/original_tokenizer_infinity_vae_d32reg.pth",
108
+ "--normal-vae-type",
109
+ "32"
110
+ ]
111
+ ]
112
+ }
ablation/sintel/data/inference_time_summary.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
3
+ "methods": {
4
+ "ours": {
5
+ "enabled": true,
6
+ "available": true,
7
+ "method": "ours",
8
+ "protocol": "Batch-size-1 per-image model inference latency measured inside each predictor with time.perf_counter and CUDA synchronization around the model-call section only. Each image uses unmeasured warmup iterations followed by measured repeats. Model loading, process startup, dataset export, image file I/O, metric computation, visualization writing, and result serialization are excluded.",
9
+ "timed_observations": 5320,
10
+ "images": 1064,
11
+ "mean_seconds": 1.8277028220793219,
12
+ "median_seconds": 1.8259914284572005,
13
+ "std_seconds": 0.014033581550791104,
14
+ "ci95_seconds": 0.0003771106329976519,
15
+ "min_seconds": 1.7931781895458698,
16
+ "max_seconds": 1.9092448819428682,
17
+ "images_per_second": 0.5471348995688098,
18
+ "per_image_file": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/ours/inference_times.json"
19
+ }
20
+ }
21
+ }
ablation/sintel/data/metrics_summary.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ours": {
3
+ "acc_11_25": 0.17808037532162607,
4
+ "acc_22_5": 0.38137201149072636,
5
+ "acc_30": 0.4995710332632849,
6
+ "angle_deg": 38.26282845583177,
7
+ "loss_angular_rad": 0.6678123309143952,
8
+ "loss_l1": 0.3118699598301174,
9
+ "loss_latent": 0.0,
10
+ "loss_norm": 9.085933116340199e-10,
11
+ "loss_total_aux": 0.0,
12
+ "samples": 1064.0,
13
+ "missing": 0.0,
14
+ "inference_mean_seconds": 1.8277028220793219,
15
+ "inference_median_seconds": 1.8259914284572005,
16
+ "inference_std_seconds": 0.014033581550791104,
17
+ "inference_images_per_second": 0.5471348995688098
18
+ }
19
+ }
ablation/sintel/data/representative_method_comparison.json ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "samples": [
3
+ {
4
+ "id": "alley_2_frame_0028",
5
+ "mean_angle": 20.74757957458496,
6
+ "methods": 1
7
+ },
8
+ {
9
+ "id": "ambush_5_frame_0026",
10
+ "mean_angle": 31.60484504699707,
11
+ "methods": 1
12
+ },
13
+ {
14
+ "id": "cave_4_frame_0022",
15
+ "mean_angle": 35.800350189208984,
16
+ "methods": 1
17
+ },
18
+ {
19
+ "id": "ambush_7_frame_0035",
20
+ "mean_angle": 39.16755676269531,
21
+ "methods": 1
22
+ },
23
+ {
24
+ "id": "bandage_2_frame_0027",
25
+ "mean_angle": 45.92593765258789,
26
+ "methods": 1
27
+ },
28
+ {
29
+ "id": "ambush_2_frame_0014",
30
+ "mean_angle": 64.7751693725586,
31
+ "methods": 1
32
+ }
33
+ ],
34
+ "methods": [
35
+ "ours"
36
+ ],
37
+ "layout": "one image per representative sample; top row is RGB/GT, then one row per method with Pred/Error.",
38
+ "images": [
39
+ {
40
+ "id": "alley_2_frame_0028",
41
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/representative_method_comparison/alley_2_frame_0028_method_comparison.png",
42
+ "mean_angle": 20.74757957458496
43
+ },
44
+ {
45
+ "id": "ambush_5_frame_0026",
46
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/representative_method_comparison/ambush_5_frame_0026_method_comparison.png",
47
+ "mean_angle": 31.60484504699707
48
+ },
49
+ {
50
+ "id": "cave_4_frame_0022",
51
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/representative_method_comparison/cave_4_frame_0022_method_comparison.png",
52
+ "mean_angle": 35.800350189208984
53
+ },
54
+ {
55
+ "id": "ambush_7_frame_0035",
56
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/representative_method_comparison/ambush_7_frame_0035_method_comparison.png",
57
+ "mean_angle": 39.16755676269531
58
+ },
59
+ {
60
+ "id": "bandage_2_frame_0027",
61
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/representative_method_comparison/bandage_2_frame_0027_method_comparison.png",
62
+ "mean_angle": 45.92593765258789
63
+ },
64
+ {
65
+ "id": "ambush_2_frame_0014",
66
+ "path": "/root/vepfs/Infinity/outputs/normal_eval/2026-06-17/12-38-50/sintel/representative_method_comparison/ambush_2_frame_0014_method_comparison.png",
67
+ "mean_angle": 64.7751693725586
68
+ }
69
+ ],
70
+ "display_from_eval": {
71
+ "perm": [
72
+ 0,
73
+ 1,
74
+ 2
75
+ ],
76
+ "signs": [
77
+ 1,
78
+ 1,
79
+ 1
80
+ ]
81
+ }
82
+ }
ablation/sintel/representative_images/method_comparison/alley_2_frame_0028_method_comparison.png ADDED

Git LFS Details

  • SHA256: aada9fecd908bef95a8072c53f52b0b2181f981b3aa41d3db3abc83724bc861c
  • Pointer size: 131 Bytes
  • Size of remote file: 661 kB