vuong69 commited on
Commit
398afcf
·
verified ·
1 Parent(s): a62bc30

Add files using upload-large-folder tool

Browse files
Files changed (37) hide show
  1. .gitattributes +8 -0
  2. Pixal3D/TencentARC_Pixal3D/ckpts/shape_dec_next_dc_f16c32_fp16.safetensors +3 -0
  3. Pixal3D/TencentARC_Pixal3D/ckpts/slat_flow_img2shape_dit_1_3B_1024_bf16.safetensors +3 -0
  4. Pixal3D/TencentARC_Pixal3D/ckpts/slat_flow_img2shape_dit_1_3B_512_bf16.safetensors +3 -0
  5. Pixal3D/TencentARC_Pixal3D/ckpts/slat_flow_imgshape2tex_dit_1_3B_1024_bf16.safetensors +3 -0
  6. Pixal3D/TencentARC_Pixal3D/ckpts/ss_dec_conv3d_16l8_fp16.safetensors +3 -0
  7. Pixal3D/TencentARC_Pixal3D/ckpts/ss_flow_img_dit_1_3B_64_bf16.safetensors +3 -0
  8. Pixal3D/TencentARC_Pixal3D/ckpts/tex_dec_next_dc_f16c32_fp16.safetensors +3 -0
  9. Pixal3D/briaai_RMBG-2.0/model.safetensors +3 -0
  10. Pixal3D/briaai_RMBG-2.0/onnx/model.onnx +3 -0
  11. Pixal3D/briaai_RMBG-2.0/onnx/model_bnb4.onnx +3 -0
  12. Pixal3D/briaai_RMBG-2.0/onnx/model_fp16.onnx +3 -0
  13. Pixal3D/briaai_RMBG-2.0/onnx/model_int8.onnx +3 -0
  14. Pixal3D/briaai_RMBG-2.0/onnx/model_q4.onnx +3 -0
  15. Pixal3D/briaai_RMBG-2.0/onnx/model_q4f16.onnx +3 -0
  16. Pixal3D/briaai_RMBG-2.0/onnx/model_quantized.onnx +3 -0
  17. Pixal3D/briaai_RMBG-2.0/pytorch_model.bin +3 -0
  18. Pixal3D/camenduru_dinov3-vitl16-pretrain-lvd1689m/facebookdinov3-vits16-pretrain-lvd1689m-transformers-default-v1.tar.gz +3 -0
  19. Pixal3D/camenduru_dinov3-vitl16-pretrain-lvd1689m/model.safetensors +3 -0
  20. Pixal3D/torch_hub/hub/checkpoints/naf_release.pth +3 -0
  21. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/attention.gif +3 -0
  22. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/dinov3.png +3 -0
  23. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/dog0.jpg +3 -0
  24. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/inference.png +3 -0
  25. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/resolution.png +3 -0
  26. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/results.png +3 -0
  27. Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/teaser.gif +3 -0
  28. Pixal3D/torch_hub/hub/valeoai_NAF_main/evaluation/dataset/kitti360/train_split.json +3 -0
  29. Pixal3D/torch_hub/hub/valeoai_NAF_main/test/forward_speed.py +64 -0
  30. Pixal3D/torch_hub/hub/valeoai_NAF_main/test/pytest.ini +2 -0
  31. Pixal3D/torch_hub/hub/valeoai_NAF_main/test/test_results.json +580 -0
  32. Pixal3D/torch_hub/hub/valeoai_NAF_main/test/test_utils.py +155 -0
  33. Pixal3D/torch_hub/hub/valeoai_NAF_main/utils/img.py +28 -0
  34. Pixal3D/torch_hub/hub/valeoai_NAF_main/utils/training.py +231 -0
  35. Pixal3D/torch_hub/hub/valeoai_NAF_main/utils/wrapper.py +52 -0
  36. geometry_estimation/moge_1_vitl_fp16.safetensors +3 -0
  37. geometry_estimation/moge_2_vitl_normal_fp16.safetensors +3 -0
.gitattributes CHANGED
@@ -33,3 +33,11 @@ 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
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/evaluation/dataset/kitti360/train_split.json filter=lfs diff=lfs merge=lfs -text
37
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/attention.gif filter=lfs diff=lfs merge=lfs -text
38
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/dinov3.png filter=lfs diff=lfs merge=lfs -text
39
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/dog0.jpg filter=lfs diff=lfs merge=lfs -text
40
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/inference.png filter=lfs diff=lfs merge=lfs -text
41
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/resolution.png filter=lfs diff=lfs merge=lfs -text
42
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/results.png filter=lfs diff=lfs merge=lfs -text
43
+ Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/teaser.gif filter=lfs diff=lfs merge=lfs -text
Pixal3D/TencentARC_Pixal3D/ckpts/shape_dec_next_dc_f16c32_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e3b718d3e43e4f8780e9a24ac6fff231811a67e3b058e336e10fe654c911d581
3
+ size 948490494
Pixal3D/TencentARC_Pixal3D/ckpts/slat_flow_img2shape_dit_1_3B_1024_bf16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e6d1df0e62bc5bc863320d1d63d6b996235eef4abb8b851e878c88f316369f1
3
+ size 5546764048
Pixal3D/TencentARC_Pixal3D/ckpts/slat_flow_img2shape_dit_1_3B_512_bf16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:63569838c1da93f010e2fa805b202ecf802cc758830230abac202a81b70e5b45
3
+ size 5546764048
Pixal3D/TencentARC_Pixal3D/ckpts/slat_flow_imgshape2tex_dit_1_3B_1024_bf16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:65df179ad02f9e92bc18335d7861fadd95f268e6249217352468dd83cb79d1d0
3
+ size 5546960656
Pixal3D/TencentARC_Pixal3D/ckpts/ss_dec_conv3d_16l8_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1c76d4a40519aa2d711cc263a8404105231ac26db31d946bed48b84fee79009a
3
+ size 147591972
Pixal3D/TencentARC_Pixal3D/ckpts/ss_flow_img_dit_1_3B_64_bf16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6d0147bb347eb61fa81c304cc68c7fd69d447e91870357a549b47e1d0fd77242
3
+ size 5359822584
Pixal3D/TencentARC_Pixal3D/ckpts/tex_dec_next_dc_f16c32_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:97ea69addea2ecd9312910f5f548234665eef51c088386180b7cd5b258645e3c
3
+ size 948458812
Pixal3D/briaai_RMBG-2.0/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:566ed80c3d95f87ada6864d4cbe2290a1c5eb1c7bb0b123e984f60f76b02c3a7
3
+ size 884878856
Pixal3D/briaai_RMBG-2.0/onnx/model.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5b486f08200f513f460da46dd701db5fbb47d79b4be4b708a19444bcd4e79958
3
+ size 1024331469
Pixal3D/briaai_RMBG-2.0/onnx/model_bnb4.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dadc9222fbffa53a348efea52d97475350ecee463a4a46f452e6e6b7b8757d25
3
+ size 355288046
Pixal3D/briaai_RMBG-2.0/onnx/model_fp16.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9dc47db40d113090ba5d7a13d8fcfd9ee4eda510ce92613219b2fe19da4746f6
3
+ size 513576499
Pixal3D/briaai_RMBG-2.0/onnx/model_int8.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f8ee7690d8c5e7fc45d7b4938ac2fe4eab63fdeddd537673cda2d4c6e74809af
3
+ size 366087445
Pixal3D/briaai_RMBG-2.0/onnx/model_q4.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a813e0eab56c982b71254214f41fa860cc7b565a6f2aab55d1f99f41c646ece1
3
+ size 367451512
Pixal3D/briaai_RMBG-2.0/onnx/model_q4f16.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8bfeb5f93220eb19f6747c217b62cf04342840c4e973f55bf64e9762919f446d
3
+ size 233815293
Pixal3D/briaai_RMBG-2.0/onnx/model_quantized.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fcea23951a378f92634834888896cc1eec54655366ae6e949282646ce17c5420
3
+ size 366087549
Pixal3D/briaai_RMBG-2.0/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0986c2881028a2d0ef9b638ab06bc4cfe7c529760d451eaa7098ade2592015f2
3
+ size 885079136
Pixal3D/camenduru_dinov3-vitl16-pretrain-lvd1689m/facebookdinov3-vits16-pretrain-lvd1689m-transformers-default-v1.tar.gz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:259f9290d4a116932914ea2cd3900f7dca31d27b4e1f568ab384c3a857c50c2c
3
+ size 80420993
Pixal3D/camenduru_dinov3-vitl16-pretrain-lvd1689m/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dcb2e45127cccbf1601e5f42fef165eea275c8e5213197e8dcf3f48822718179
3
+ size 1212559808
Pixal3D/torch_hub/hub/checkpoints/naf_release.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c096c1ab2217a5c3ac136365f721685e2201379cb69d509cfb0261183847c98f
3
+ size 2664431
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/attention.gif ADDED

Git LFS Details

  • SHA256: d4c8a03a163322539b7f32922add1a5c66dc62f815bbd83b824ade52aaa83f1a
  • Pointer size: 132 Bytes
  • Size of remote file: 6.25 MB
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/dinov3.png ADDED

Git LFS Details

  • SHA256: 74bc9a7aa014fb38330e4b969c48907889ffaebf3ec8487ac13de5a02b9e8341
  • Pointer size: 132 Bytes
  • Size of remote file: 1.86 MB
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/dog0.jpg ADDED

Git LFS Details

  • SHA256: 0eded613933e31bc27464ab73791eb68e614e0f105338d59bbfa6ec9625cf7d8
  • Pointer size: 132 Bytes
  • Size of remote file: 5.98 MB
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/inference.png ADDED

Git LFS Details

  • SHA256: 4ec4c3f7190da857922123f9751b687125f4a9413d5451e7838500e7d511fca8
  • Pointer size: 132 Bytes
  • Size of remote file: 1.3 MB
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/resolution.png ADDED

Git LFS Details

  • SHA256: a9fff325670fb2591b5306969e5127c4c22713a8ccafaff1581b5a0c5a1245bd
  • Pointer size: 132 Bytes
  • Size of remote file: 1.07 MB
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/results.png ADDED

Git LFS Details

  • SHA256: a74bff65bd92da78b88b90ea50352e2be9cbcd3c0cd7adc22111378e1598b8b4
  • Pointer size: 131 Bytes
  • Size of remote file: 430 kB
Pixal3D/torch_hub/hub/valeoai_NAF_main/asset/teaser.gif ADDED

Git LFS Details

  • SHA256: b0056284facf91ab9fe383daefed1a363472e75339c09880728b25d02f7ade41
  • Pointer size: 132 Bytes
  • Size of remote file: 7.5 MB
Pixal3D/torch_hub/hub/valeoai_NAF_main/evaluation/dataset/kitti360/train_split.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b64b01e524754f25774e7875b264c9e4fc7ffe746f2895e6bf95d8e0ae16873e
3
+ size 12599168
Pixal3D/torch_hub/hub/valeoai_NAF_main/test/forward_speed.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pytest
2
+ import torch
3
+ from test_utils import create_tensors, get_active_factor, print_test_info, setup_parametrization
4
+
5
+ from utils.wrapper import ModelWrapper
6
+
7
+ NUM_RUNS = 10
8
+
9
+
10
+ @pytest.fixture(params=["FeatUp", "AnyUp", "JAFAR", "NAF"])
11
+ def model_name(request):
12
+ return request.param
13
+
14
+
15
+ # Main test - optimized parametrization
16
+ def pytest_generate_tests(metafunc):
17
+ setup_parametrization(metafunc)
18
+
19
+
20
+ def test_forward_speed(model_name, img_size, embed_dim, ratio, lr_size, request):
21
+ # Determine which factor is being swept
22
+ factor = get_active_factor(request)
23
+
24
+ # Create model
25
+ model = ModelWrapper(name=model_name, embed_dim=embed_dim, ratio=ratio).cuda()
26
+
27
+ # Create input tensors
28
+ img, lr_feats, output_size = create_tensors(img_size, embed_dim, ratio, lr_size)
29
+
30
+ # Warmup runs
31
+ for _ in range(5):
32
+ with torch.no_grad():
33
+ torch.cuda.empty_cache()
34
+ _ = model(img, lr_feats, output_size)
35
+
36
+ total_time = 0
37
+
38
+ # CUDA events for precise timing
39
+ start_event = torch.cuda.Event(enable_timing=True)
40
+ end_event = torch.cuda.Event(enable_timing=True)
41
+
42
+ for _ in range(NUM_RUNS):
43
+ torch.cuda.empty_cache()
44
+ torch.cuda.synchronize() # Ensure all previous operations are complete
45
+ start_event.record()
46
+ with torch.no_grad():
47
+ _ = model(img, lr_feats, output_size)
48
+ end_event.record()
49
+ torch.cuda.synchronize() # Wait for the events to complete
50
+ total_time += start_event.elapsed_time(end_event) # Time in milliseconds
51
+
52
+ avg_time = total_time / NUM_RUNS
53
+
54
+ # Print results using shared utility
55
+ print_test_info(
56
+ model_name,
57
+ factor,
58
+ embed_dim,
59
+ img_size,
60
+ lr_size,
61
+ ratio,
62
+ save=True,
63
+ **{"Average forward pass time": f"{avg_time:.6f} ms"},
64
+ )
Pixal3D/torch_hub/hub/valeoai_NAF_main/test/pytest.ini ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [pytest]
2
+ addopts = -q --tb=short --disable-warnings -s -v
Pixal3D/torch_hub/hub/valeoai_NAF_main/test/test_results.json ADDED
@@ -0,0 +1,580 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "model": "FeatUp",
4
+ "factor_swept": "ratio",
5
+ "embed_dim": 384,
6
+ "img_size": 448,
7
+ "lr_size": 28,
8
+ "ratio": 2,
9
+ "metrics": {
10
+ "Peak GPU memory usage (backward)": "74.09 MB",
11
+ "Average backward pass time": "14.882304 ms",
12
+ "Average forward pass time": "8.870912 ms",
13
+ "Peak GPU memory usage (forward)": "52.38 MB",
14
+ "GFLOPS": "0.98",
15
+ "# Params": "173540"
16
+ }
17
+ },
18
+ {
19
+ "model": "AnyUp",
20
+ "factor_swept": "ratio",
21
+ "embed_dim": 384,
22
+ "img_size": 448,
23
+ "lr_size": 28,
24
+ "ratio": 2,
25
+ "metrics": {
26
+ "Peak GPU memory usage (backward)": "719.75 MB",
27
+ "Average backward pass time": "38.561280 ms",
28
+ "Average forward pass time": "11.235226 ms",
29
+ "Peak GPU memory usage (forward)": "315.98 MB",
30
+ "GFLOPS": "7.74",
31
+ "# Params": "878080"
32
+ }
33
+ },
34
+ {
35
+ "model": "JAFAR",
36
+ "factor_swept": "ratio",
37
+ "embed_dim": 384,
38
+ "img_size": 448,
39
+ "lr_size": 28,
40
+ "ratio": 2,
41
+ "metrics": {
42
+ "Peak GPU memory usage (backward)": "5923.12 MB",
43
+ "Average backward pass time": "106.851736 ms",
44
+ "Average forward pass time": "57.254605 ms",
45
+ "Peak GPU memory usage (forward)": "604.26 MB",
46
+ "GFLOPS": "6.05",
47
+ "# Params": "628480"
48
+ }
49
+ },
50
+ {
51
+ "model": "NAF",
52
+ "factor_swept": "ratio",
53
+ "embed_dim": 384,
54
+ "img_size": 448,
55
+ "lr_size": 28,
56
+ "ratio": 2,
57
+ "metrics": {
58
+ "Peak GPU memory usage (backward)": "3670.42 MB",
59
+ "Average backward pass time": "88.292659 ms",
60
+ "Average forward pass time": "39.513908 ms",
61
+ "Peak GPU memory usage (forward)": "604.98 MB",
62
+ "GFLOPS": "4.14",
63
+ "# Params": "662528"
64
+ }
65
+ },
66
+ {
67
+ "model": "FeatUp",
68
+ "factor_swept": "ratio",
69
+ "embed_dim": 384,
70
+ "img_size": 448,
71
+ "lr_size": 28,
72
+ "ratio": 4,
73
+ "metrics": {
74
+ "Peak GPU memory usage (backward)": "284.56 MB",
75
+ "Average backward pass time": "22.538547 ms",
76
+ "Average forward pass time": "10.212659 ms",
77
+ "Peak GPU memory usage (forward)": "180.35 MB",
78
+ "GFLOPS": "4.88",
79
+ "# Params": "173540"
80
+ }
81
+ },
82
+ {
83
+ "model": "AnyUp",
84
+ "factor_swept": "ratio",
85
+ "embed_dim": 384,
86
+ "img_size": 448,
87
+ "lr_size": 28,
88
+ "ratio": 4,
89
+ "metrics": {
90
+ "Peak GPU memory usage (backward)": "1347.67 MB",
91
+ "Average backward pass time": "50.124697 ms",
92
+ "Average forward pass time": "18.281574 ms",
93
+ "Peak GPU memory usage (forward)": "400.47 MB",
94
+ "GFLOPS": "23.01",
95
+ "# Params": "878080"
96
+ }
97
+ },
98
+ {
99
+ "model": "JAFAR",
100
+ "factor_swept": "ratio",
101
+ "embed_dim": 384,
102
+ "img_size": 448,
103
+ "lr_size": 28,
104
+ "ratio": 4,
105
+ "metrics": {
106
+ "Peak GPU memory usage (backward)": "6525.77 MB",
107
+ "Average backward pass time": "124.415592 ms",
108
+ "Average forward pass time": "58.664141 ms",
109
+ "Peak GPU memory usage (forward)": "604.26 MB",
110
+ "GFLOPS": "23.22",
111
+ "# Params": "628480"
112
+ }
113
+ },
114
+ {
115
+ "model": "NAF",
116
+ "factor_swept": "ratio",
117
+ "embed_dim": 384,
118
+ "img_size": 448,
119
+ "lr_size": 28,
120
+ "ratio": 4,
121
+ "metrics": {
122
+ "Peak GPU memory usage (backward)": "3684.27 MB",
123
+ "Average backward pass time": "102.527796 ms",
124
+ "Average forward pass time": "40.170496 ms",
125
+ "Peak GPU memory usage (forward)": "604.98 MB",
126
+ "GFLOPS": "16.57",
127
+ "# Params": "662528"
128
+ }
129
+ },
130
+ {
131
+ "model": "FeatUp",
132
+ "factor_swept": "ratio",
133
+ "embed_dim": 384,
134
+ "img_size": 448,
135
+ "lr_size": 28,
136
+ "ratio": 8,
137
+ "metrics": {
138
+ "Peak GPU memory usage (backward)": "1099.72 MB",
139
+ "Average backward pass time": "45.861990 ms",
140
+ "Average forward pass time": "18.657178 ms",
141
+ "Peak GPU memory usage (forward)": "677.52 MB",
142
+ "GFLOPS": "20.50",
143
+ "# Params": "173540"
144
+ }
145
+ },
146
+ {
147
+ "model": "AnyUp",
148
+ "factor_swept": "ratio",
149
+ "embed_dim": 384,
150
+ "img_size": 448,
151
+ "lr_size": 28,
152
+ "ratio": 8,
153
+ "metrics": {
154
+ "Peak GPU memory usage (backward)": "4812.09 MB",
155
+ "Average backward pass time": "133.391360 ms",
156
+ "Average forward pass time": "51.705651 ms",
157
+ "Peak GPU memory usage (forward)": "1552.49 MB",
158
+ "GFLOPS": "84.11",
159
+ "# Params": "878080"
160
+ }
161
+ },
162
+ {
163
+ "model": "JAFAR",
164
+ "factor_swept": "ratio",
165
+ "embed_dim": 384,
166
+ "img_size": 448,
167
+ "lr_size": 28,
168
+ "ratio": 8,
169
+ "metrics": {
170
+ "Peak GPU memory usage (backward)": "8943.22 MB",
171
+ "Average backward pass time": "220.743989 ms",
172
+ "Average forward pass time": "64.862413 ms",
173
+ "Peak GPU memory usage (forward)": "1439.94 MB",
174
+ "GFLOPS": "91.87",
175
+ "# Params": "628480"
176
+ }
177
+ },
178
+ {
179
+ "model": "NAF",
180
+ "factor_swept": "ratio",
181
+ "embed_dim": 384,
182
+ "img_size": 448,
183
+ "lr_size": 28,
184
+ "ratio": 8,
185
+ "metrics": {
186
+ "Peak GPU memory usage (backward)": "4028.77 MB",
187
+ "Average backward pass time": "112.663655 ms",
188
+ "Average forward pass time": "42.510439 ms",
189
+ "Peak GPU memory usage (forward)": "604.98 MB",
190
+ "GFLOPS": "66.28",
191
+ "# Params": "662528"
192
+ }
193
+ },
194
+ {
195
+ "model": "FeatUp",
196
+ "factor_swept": "ratio",
197
+ "embed_dim": 384,
198
+ "img_size": 448,
199
+ "lr_size": 28,
200
+ "ratio": 16,
201
+ "metrics": {
202
+ "Peak GPU memory usage (backward)": "4929.11 MB",
203
+ "Average backward pass time": "171.858228 ms",
204
+ "Average forward pass time": "57.109504 ms",
205
+ "Peak GPU memory usage (forward)": "2673.83 MB",
206
+ "GFLOPS": "82.97",
207
+ "# Params": "173540"
208
+ }
209
+ },
210
+ {
211
+ "model": "AnyUp",
212
+ "factor_swept": "ratio",
213
+ "embed_dim": 384,
214
+ "img_size": 448,
215
+ "lr_size": 28,
216
+ "ratio": 16,
217
+ "metrics": {
218
+ "Peak GPU memory usage (backward)": "18675.29 MB",
219
+ "Average backward pass time": "502.506192 ms",
220
+ "Average forward pass time": "181.956609 ms",
221
+ "Peak GPU memory usage (forward)": "6162.59 MB",
222
+ "GFLOPS": "328.50",
223
+ "# Params": "878080"
224
+ }
225
+ },
226
+ {
227
+ "model": "JAFAR",
228
+ "factor_swept": "ratio",
229
+ "embed_dim": 384,
230
+ "img_size": 448,
231
+ "lr_size": 28,
232
+ "ratio": 16,
233
+ "metrics": {
234
+ "Peak GPU memory usage (backward)": "18613.05 MB",
235
+ "Average backward pass time": "489.506000 ms",
236
+ "Average forward pass time": "108.141977 ms",
237
+ "Peak GPU memory usage (forward)": "5410.94 MB",
238
+ "GFLOPS": "366.47",
239
+ "# Params": "628480"
240
+ }
241
+ },
242
+ {
243
+ "model": "NAF",
244
+ "factor_swept": "ratio",
245
+ "embed_dim": 384,
246
+ "img_size": 448,
247
+ "lr_size": 28,
248
+ "ratio": 16,
249
+ "metrics": {
250
+ "Peak GPU memory usage (backward)": "6016.48 MB",
251
+ "Average backward pass time": "163.075171 ms",
252
+ "Average forward pass time": "56.241766 ms",
253
+ "Peak GPU memory usage (forward)": "1786.52 MB",
254
+ "GFLOPS": "265.12",
255
+ "# Params": "662528"
256
+ }
257
+ },
258
+ {
259
+ "model": "FeatUp",
260
+ "factor_swept": "embed_dim",
261
+ "embed_dim": 128,
262
+ "img_size": 448,
263
+ "lr_size": 28,
264
+ "ratio": 16,
265
+ "metrics": {
266
+ "Peak GPU memory usage (backward)": "3292.90 MB",
267
+ "Average backward pass time": "117.686886 ms",
268
+ "Average forward pass time": "44.057805 ms",
269
+ "Peak GPU memory usage (forward)": "2558.69 MB",
270
+ "GFLOPS": "12.96",
271
+ "# Params": "41700"
272
+ }
273
+ },
274
+ {
275
+ "model": "AnyUp",
276
+ "factor_swept": "embed_dim",
277
+ "embed_dim": 128,
278
+ "img_size": 448,
279
+ "lr_size": 28,
280
+ "ratio": 16,
281
+ "metrics": {
282
+ "Peak GPU memory usage (backward)": "18375.39 MB",
283
+ "Average backward pass time": "492.871991 ms",
284
+ "Average forward pass time": "179.089816 ms",
285
+ "Peak GPU memory usage (forward)": "6161.83 MB",
286
+ "GFLOPS": "246.65",
287
+ "# Params": "878080"
288
+ }
289
+ },
290
+ {
291
+ "model": "JAFAR",
292
+ "factor_swept": "embed_dim",
293
+ "embed_dim": 128,
294
+ "img_size": 448,
295
+ "lr_size": 28,
296
+ "ratio": 16,
297
+ "metrics": {
298
+ "Peak GPU memory usage (backward)": "18415.26 MB",
299
+ "Average backward pass time": "472.802716 ms",
300
+ "Average forward pass time": "103.970201 ms",
301
+ "Peak GPU memory usage (forward)": "5408.40 MB",
302
+ "GFLOPS": "285.80",
303
+ "# Params": "562688"
304
+ }
305
+ },
306
+ {
307
+ "model": "NAF",
308
+ "factor_swept": "embed_dim",
309
+ "embed_dim": 128,
310
+ "img_size": 448,
311
+ "lr_size": 28,
312
+ "ratio": 16,
313
+ "metrics": {
314
+ "Peak GPU memory usage (backward)": "5139.84 MB",
315
+ "Average backward pass time": "132.395419 ms",
316
+ "Average forward pass time": "50.801562 ms",
317
+ "Peak GPU memory usage (forward)": "1197.75 MB",
318
+ "GFLOPS": "265.12",
319
+ "# Params": "662528"
320
+ }
321
+ },
322
+ {
323
+ "model": "FeatUp",
324
+ "factor_swept": "embed_dim",
325
+ "embed_dim": 384,
326
+ "img_size": 448,
327
+ "lr_size": 28,
328
+ "ratio": 16,
329
+ "metrics": {
330
+ "Peak GPU memory usage (backward)": "4926.61 MB",
331
+ "Average backward pass time": "168.519371 ms",
332
+ "Average forward pass time": "79.571660 ms",
333
+ "Peak GPU memory usage (forward)": "2673.83 MB",
334
+ "GFLOPS": "82.97",
335
+ "# Params": "173540"
336
+ }
337
+ },
338
+ {
339
+ "model": "AnyUp",
340
+ "factor_swept": "embed_dim",
341
+ "embed_dim": 384,
342
+ "img_size": 448,
343
+ "lr_size": 28,
344
+ "ratio": 16,
345
+ "metrics": {
346
+ "Peak GPU memory usage (backward)": "18675.31 MB",
347
+ "Average backward pass time": "493.956909 ms",
348
+ "Average forward pass time": "182.373581 ms",
349
+ "Peak GPU memory usage (forward)": "6162.62 MB",
350
+ "GFLOPS": "328.50",
351
+ "# Params": "878080"
352
+ }
353
+ },
354
+ {
355
+ "model": "JAFAR",
356
+ "factor_swept": "embed_dim",
357
+ "embed_dim": 384,
358
+ "img_size": 448,
359
+ "lr_size": 28,
360
+ "ratio": 16,
361
+ "metrics": {
362
+ "Peak GPU memory usage (backward)": "18613.05 MB",
363
+ "Average backward pass time": "495.504486 ms",
364
+ "Average forward pass time": "104.385638 ms",
365
+ "Peak GPU memory usage (forward)": "5410.18 MB",
366
+ "GFLOPS": "366.47",
367
+ "# Params": "628480"
368
+ }
369
+ },
370
+ {
371
+ "model": "NAF",
372
+ "factor_swept": "embed_dim",
373
+ "embed_dim": 384,
374
+ "img_size": 448,
375
+ "lr_size": 28,
376
+ "ratio": 16,
377
+ "metrics": {
378
+ "Peak GPU memory usage (backward)": "6016.48 MB",
379
+ "Average backward pass time": "151.195137 ms",
380
+ "Average forward pass time": "60.107775 ms",
381
+ "Peak GPU memory usage (forward)": "1786.52 MB",
382
+ "GFLOPS": "265.12",
383
+ "# Params": "662528"
384
+ }
385
+ },
386
+ {
387
+ "model": "FeatUp",
388
+ "factor_swept": "embed_dim",
389
+ "embed_dim": 768,
390
+ "img_size": 448,
391
+ "lr_size": 28,
392
+ "ratio": 16,
393
+ "metrics": {
394
+ "Peak GPU memory usage (backward)": "6611.20 MB",
395
+ "Average backward pass time": "236.789557 ms",
396
+ "Average forward pass time": "91.205427 ms",
397
+ "Peak GPU memory usage (forward)": "2848.23 MB",
398
+ "GFLOPS": "319.01",
399
+ "# Params": "617060"
400
+ }
401
+ },
402
+ {
403
+ "model": "AnyUp",
404
+ "factor_swept": "embed_dim",
405
+ "embed_dim": 768,
406
+ "img_size": 448,
407
+ "lr_size": 28,
408
+ "ratio": 16,
409
+ "metrics": {
410
+ "Peak GPU memory usage (backward)": "19123.01 MB",
411
+ "Average backward pass time": "495.348840 ms",
412
+ "Average forward pass time": "190.718669 ms",
413
+ "Peak GPU memory usage (forward)": "6163.74 MB",
414
+ "GFLOPS": "451.27",
415
+ "# Params": "878080"
416
+ }
417
+ },
418
+ {
419
+ "model": "JAFAR",
420
+ "factor_swept": "embed_dim",
421
+ "embed_dim": 768,
422
+ "img_size": 448,
423
+ "lr_size": 28,
424
+ "ratio": 16,
425
+ "metrics": {
426
+ "Peak GPU memory usage (backward)": "18909.72 MB",
427
+ "Average backward pass time": "490.327139 ms",
428
+ "Average forward pass time": "130.610995 ms",
429
+ "Peak GPU memory usage (forward)": "5412.85 MB",
430
+ "GFLOPS": "487.47",
431
+ "# Params": "727168"
432
+ }
433
+ },
434
+ {
435
+ "model": "NAF",
436
+ "factor_swept": "embed_dim",
437
+ "embed_dim": 768,
438
+ "img_size": 448,
439
+ "lr_size": 28,
440
+ "ratio": 16,
441
+ "metrics": {
442
+ "Peak GPU memory usage (backward)": "7487.63 MB",
443
+ "Average backward pass time": "201.987173 ms",
444
+ "Average forward pass time": "88.825344 ms",
445
+ "Peak GPU memory usage (forward)": "2669.67 MB",
446
+ "GFLOPS": "265.12",
447
+ "# Params": "662528"
448
+ }
449
+ },
450
+ {
451
+ "model": "FeatUp",
452
+ "factor_swept": "embed_dim",
453
+ "embed_dim": 1024,
454
+ "img_size": 448,
455
+ "lr_size": 28,
456
+ "ratio": 16,
457
+ "metrics": {
458
+ "Peak GPU memory usage (backward)": "9704.04 MB",
459
+ "Average backward pass time": "288.535754 ms",
460
+ "Average forward pass time": "115.101184 ms",
461
+ "Peak GPU memory usage (forward)": "2965.61 MB",
462
+ "GFLOPS": "563.72",
463
+ "# Params": "1076580"
464
+ }
465
+ },
466
+ {
467
+ "model": "AnyUp",
468
+ "factor_swept": "embed_dim",
469
+ "embed_dim": 1024,
470
+ "img_size": 448,
471
+ "lr_size": 28,
472
+ "ratio": 16,
473
+ "metrics": {
474
+ "Peak GPU memory usage (backward)": "19421.91 MB",
475
+ "Average backward pass time": "541.674496 ms",
476
+ "Average forward pass time": "197.642342 ms",
477
+ "Peak GPU memory usage (forward)": "6164.90 MB",
478
+ "GFLOPS": "533.12",
479
+ "# Params": "878080"
480
+ }
481
+ },
482
+ {
483
+ "model": "JAFAR",
484
+ "factor_swept": "embed_dim",
485
+ "embed_dim": 1024,
486
+ "img_size": 448,
487
+ "lr_size": 28,
488
+ "ratio": 16,
489
+ "metrics": {
490
+ "Peak GPU memory usage (backward)": "19107.51 MB",
491
+ "Average backward pass time": "491.764941 ms",
492
+ "Average forward pass time": "140.854272 ms",
493
+ "Peak GPU memory usage (forward)": "5414.63 MB",
494
+ "GFLOPS": "568.14",
495
+ "# Params": "792960"
496
+ }
497
+ },
498
+ {
499
+ "model": "NAF",
500
+ "factor_swept": "embed_dim",
501
+ "embed_dim": 1024,
502
+ "img_size": 448,
503
+ "lr_size": 28,
504
+ "ratio": 16,
505
+ "metrics": {
506
+ "Peak GPU memory usage (backward)": "8468.40 MB",
507
+ "Average backward pass time": "222.735052 ms",
508
+ "Average forward pass time": "104.489368 ms",
509
+ "Peak GPU memory usage (forward)": "3258.43 MB",
510
+ "GFLOPS": "265.12",
511
+ "# Params": "662528"
512
+ }
513
+ },
514
+ {
515
+ "model": "AnyUp",
516
+ "factor_swept": "ratio",
517
+ "embed_dim": 384,
518
+ "img_size": 448,
519
+ "lr_size": 28,
520
+ "ratio": 32,
521
+ "metrics": {
522
+ "Average forward pass time": "744.272083 ms",
523
+ "Peak GPU memory usage (forward)": "24594.02 MB"
524
+ }
525
+ },
526
+ {
527
+ "model": "JAFAR",
528
+ "factor_swept": "ratio",
529
+ "embed_dim": 384,
530
+ "img_size": 448,
531
+ "lr_size": 28,
532
+ "ratio": 32,
533
+ "metrics": {
534
+ "Average forward pass time": "582.697070 ms",
535
+ "Peak GPU memory usage (forward)": "21285.80 MB"
536
+ }
537
+ },
538
+ {
539
+ "model": "NAF",
540
+ "factor_swept": "ratio",
541
+ "embed_dim": 384,
542
+ "img_size": 448,
543
+ "lr_size": 28,
544
+ "ratio": 32,
545
+ "metrics": {
546
+ "Average forward pass time": "267.944962 ms",
547
+ "Peak GPU memory usage (forward)": "7101.49 MB",
548
+ "GFLOPS": "1060.49",
549
+ "# Params": "662528"
550
+ }
551
+ },
552
+ {
553
+ "model": "LargeImg",
554
+ "factor_swept": "ratio",
555
+ "embed_dim": 384,
556
+ "img_size": 896,
557
+ "lr_size": 28,
558
+ "ratio": 2,
559
+ "metrics": {
560
+ "Average forward pass time": "110.051565 ms",
561
+ "Peak GPU memory usage (forward)": "0.00 MB",
562
+ "GFLOPS": "537.78",
563
+ "# Params": "85669632"
564
+ }
565
+ },
566
+ {
567
+ "model": "LargeImg",
568
+ "factor_swept": "ratio",
569
+ "embed_dim": 384,
570
+ "img_size": 1792,
571
+ "lr_size": 28,
572
+ "ratio": 4,
573
+ "metrics": {
574
+ "Average forward pass time": "1035.683667 ms",
575
+ "Peak GPU memory usage (forward)": "0.00 MB",
576
+ "GFLOPS": "2148.59",
577
+ "# Params": "85669632"
578
+ }
579
+ }
580
+ ]
Pixal3D/torch_hub/hub/valeoai_NAF_main/test/test_utils.py ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Shared utilities for test files to eliminate code duplication.
3
+ """
4
+
5
+ import json
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ import torch
10
+
11
+ # Add the project root to path dynamically
12
+ project_root = Path(__file__).parent.parent
13
+ sys.path.append(str(project_root))
14
+
15
+ # Default values
16
+ DEFAULT_IMG_SIZE = 448
17
+ DEFAULT_EMBED_DIM = 384
18
+ DEFAULT_RATIO = 16
19
+ DEFAULT_LR_SIZE = DEFAULT_IMG_SIZE // DEFAULT_RATIO
20
+
21
+ # Test configuration constants
22
+ IMG_SIZES = [112, 224, 448, 896]
23
+ EMBED_DIMS = [128, 384, 768, 1024]
24
+ RATIOS = [2, 4, 8, 16, 32]
25
+ LR_SIZES = [32]
26
+
27
+
28
+ def setup_parametrization(metafunc):
29
+ """
30
+ Optimized pytest parametrization setup that eliminates repetitive if statements.
31
+ """
32
+ # Detect selected factor set
33
+ sweep_options = {
34
+ "embed_dim": (metafunc.config.getoption("--embed-dim"), EMBED_DIMS),
35
+ "img_size": (metafunc.config.getoption("--img-size"), IMG_SIZES),
36
+ "ratio": (metafunc.config.getoption("--ratio"), RATIOS),
37
+ "lr_size": (metafunc.config.getoption("--lr-size"), LR_SIZES),
38
+ }
39
+
40
+ # Check only one sweep option is selected
41
+ active_sweeps = [name for name, (enabled, _) in sweep_options.items() if enabled]
42
+ if len(active_sweeps) > 1:
43
+ raise ValueError("Only one fixture can be swept at a time")
44
+
45
+ # Default parameter values
46
+ defaults = {
47
+ "embed_dim": DEFAULT_EMBED_DIM,
48
+ "img_size": DEFAULT_IMG_SIZE,
49
+ "ratio": DEFAULT_RATIO,
50
+ "lr_size": DEFAULT_LR_SIZE,
51
+ }
52
+
53
+ # Set up parametrization
54
+ if active_sweeps:
55
+ sweep_param = active_sweeps[0]
56
+ for param_name, default_value in defaults.items():
57
+ if param_name == sweep_param:
58
+ # Use the sweep values for the active parameter
59
+ metafunc.parametrize(param_name, sweep_options[param_name][1])
60
+ else:
61
+ # Use default value for other parameters
62
+ metafunc.parametrize(param_name, [default_value])
63
+ else:
64
+ # Use all default values when no sweep is active
65
+ for param_name, default_value in defaults.items():
66
+ metafunc.parametrize(param_name, [default_value])
67
+
68
+
69
+ def get_active_factor(request):
70
+ """
71
+ Determine which factor is being swept based on request config.
72
+ """
73
+ sweep_options = ["embed_dim", "img_size", "ratio", "lr_size"]
74
+ active_sweeps = [opt for opt in sweep_options if request.config.getoption(f"--{opt.replace('_', '-')}")]
75
+ return active_sweeps[0] if active_sweeps else "none (all defaults)"
76
+
77
+
78
+ def create_tensors(img_size, embed_dim, ratio, lr_size, device="cuda"):
79
+ lr_feats = torch.randn(1, embed_dim, lr_size, lr_size, device=device)
80
+ output_size = (ratio * lr_size, ratio * lr_size)
81
+ img = torch.randn(1, 3, img_size, img_size, device=device)
82
+ return img, lr_feats, output_size
83
+
84
+
85
+ def print_test_info(model_name, factor, embed_dim, img_size, lr_size, ratio, save=True, **extra_info):
86
+ print("\n" + "=" * 60)
87
+ print(f"Model: {model_name}")
88
+ print(f"Factor being swept: {factor}")
89
+ print(f"Embed size: {embed_dim}")
90
+ print(f"Image size: {img_size}")
91
+ print(f"LR size: {lr_size}")
92
+ print(f"Upsampling factor (ratio): {ratio}")
93
+ print("-" * 60)
94
+
95
+ for key, value in extra_info.items():
96
+ print(f"{key}: {value}")
97
+
98
+ print("=" * 60 + "\n")
99
+
100
+ # Save results to JSON
101
+ if save:
102
+ save_test_results(model_name, factor, embed_dim, img_size, lr_size, ratio, **extra_info)
103
+
104
+
105
+ def save_test_results(model_name, factor, embed_dim, img_size, lr_size, ratio, **extra_info):
106
+ """Save test results to a JSON file for later analysis."""
107
+ # Create results directory if it doesn't exist
108
+ results_dir = Path("./test")
109
+ results_dir.mkdir(exist_ok=True)
110
+
111
+ # Load existing results or create new list
112
+ results_file = results_dir / "test_results.json"
113
+ if results_file.exists():
114
+ with open(results_file, "r") as f:
115
+ results = json.load(f)
116
+ else:
117
+ results = []
118
+
119
+ # Check if entry with same configuration already exists
120
+ existing_entry = None
121
+ for entry in results:
122
+ if (
123
+ entry["model"] == model_name
124
+ and entry["factor_swept"] == factor
125
+ and entry["embed_dim"] == embed_dim
126
+ and entry["img_size"] == img_size
127
+ and entry["lr_size"] == lr_size
128
+ and entry["ratio"] == ratio
129
+ ):
130
+ existing_entry = entry
131
+ break
132
+
133
+ if existing_entry:
134
+ # Merge metrics into existing entry
135
+ existing_entry["metrics"].update(extra_info)
136
+ print(f"Merged metrics into existing entry for {model_name} (ratio={ratio})")
137
+ else:
138
+ # Create new entry
139
+ result_entry = {
140
+ "model": model_name,
141
+ "factor_swept": factor,
142
+ "embed_dim": embed_dim,
143
+ "img_size": img_size,
144
+ "lr_size": lr_size,
145
+ "ratio": ratio,
146
+ "metrics": extra_info,
147
+ }
148
+ results.append(result_entry)
149
+ print(f"Created new entry for {model_name} (ratio={ratio})")
150
+
151
+ # Save updated results
152
+ with open(results_file, "w") as f:
153
+ json.dump(results, f, indent=2)
154
+
155
+ print(f"Results saved to: {results_file}")
Pixal3D/torch_hub/hub/valeoai_NAF_main/utils/img.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # import cv2
2
+ import random
3
+
4
+ import numpy as np
5
+ import torch
6
+ import torch.nn.functional as F
7
+ import torchvision.transforms as T
8
+ from einops import rearrange
9
+
10
+
11
+ def create_coordinate(h, w, start=0, end=1, device="cuda", dtype=torch.float32):
12
+ # Create a grid of coordinates
13
+ x = torch.linspace(start, end, h, device=device, dtype=dtype)
14
+ y = torch.linspace(start, end, w, device=device, dtype=dtype)
15
+ # Create a 2D map using meshgrid
16
+ xx, yy = torch.meshgrid(x, y, indexing="ij")
17
+ # Stack the x and y coordinates to create the final map
18
+ coord_map = torch.stack([xx, yy], axis=-1)[None, ...]
19
+ coords = rearrange(coord_map, "b h w c -> b (h w) c", h=h, w=w)
20
+ return coords
21
+
22
+
23
+ class PILToTensor:
24
+ """Convert PIL Image to Tensor"""
25
+
26
+ def __call__(self, image):
27
+ image = T.functional.pil_to_tensor(image)
28
+ return image
Pixal3D/torch_hub/hub/valeoai_NAF_main/utils/training.py ADDED
@@ -0,0 +1,231 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+
4
+ import numpy as np
5
+ import torch
6
+ import torch.nn.functional as F
7
+ import torch.utils.checkpoint as checkpoint
8
+ import torchvision.transforms as T
9
+ from hydra.utils import instantiate
10
+ from omegaconf import ListConfig
11
+ from torch.utils.tensorboard import SummaryWriter
12
+ from torchvision.transforms.functional import InterpolationMode
13
+
14
+ from src.backbone.vit_wrapper import PretrainedViTWrapper
15
+ from utils.img import PILToTensor
16
+
17
+
18
+ def seed_worker():
19
+ worker_seed = torch.initial_seed() % 2**32
20
+ np.random.seed(worker_seed)
21
+ random.seed(worker_seed)
22
+
23
+
24
+ def round_to_nearest_multiple(value, multiple=14):
25
+ return multiple * round(value / multiple)
26
+
27
+
28
+ def compute_feats(cfg, backbone, image_batch, min_rescale=0.60, max_rescale=0.25):
29
+ _, _, H, W = image_batch.shape # Get original height and width
30
+
31
+ with torch.no_grad():
32
+ hr_feats = backbone(image_batch)
33
+
34
+ if cfg.get("lr_img_size", None) is not None:
35
+ size = (cfg.lr_img_size, cfg.lr_img_size)
36
+ else:
37
+ # Downscale
38
+ if cfg.down_factor == "random":
39
+ downscale_factor = np.random.uniform(min_rescale, max_rescale)
40
+
41
+ elif cfg.down_factor == "fixed":
42
+ downscale_factor = 0.5
43
+
44
+ new_H = round_to_nearest_multiple(H * downscale_factor, backbone.patch_size)
45
+ new_W = round_to_nearest_multiple(W * downscale_factor, backbone.patch_size)
46
+ size = (new_H, new_W)
47
+ low_res_batch = F.interpolate(image_batch, size=size, mode="bilinear")
48
+ lr_feats = backbone(low_res_batch)
49
+
50
+ return hr_feats, lr_feats
51
+
52
+
53
+ def logger(args, base_log_dir):
54
+ os.makedirs(base_log_dir, exist_ok=True)
55
+ existing_versions = [
56
+ int(d.split("_")[-1])
57
+ for d in os.listdir(base_log_dir)
58
+ if os.path.isdir(os.path.join(base_log_dir, d)) and d.startswith("version_")
59
+ ]
60
+ new_version = max(existing_versions, default=-1) + 1
61
+ new_log_dir = os.path.join(base_log_dir, f"version_{new_version}")
62
+
63
+ # Create the SummaryWriter with the new log directory
64
+ writer = SummaryWriter(log_dir=new_log_dir)
65
+ return writer, new_version, new_log_dir
66
+
67
+
68
+ def get_dataloaders(cfg, shuffle=True):
69
+ """Get dataloaders for either training or evaluation.
70
+
71
+ Args:
72
+ cfg: Configuration object
73
+ backbone: Backbone model for normalization parameters
74
+ """
75
+ # Default ImageNet normalization values
76
+ transforms = {
77
+ "image": T.Compose(
78
+ [
79
+ T.Resize(cfg.img_size, interpolation=InterpolationMode.BILINEAR),
80
+ T.CenterCrop((cfg.img_size, cfg.img_size)),
81
+ T.ToTensor(),
82
+ ]
83
+ )
84
+ }
85
+
86
+ transforms["label"] = T.Compose(
87
+ [
88
+ # T.ToTensor(),
89
+ T.Resize(cfg.target_size, interpolation=InterpolationMode.NEAREST_EXACT),
90
+ T.CenterCrop((cfg.target_size, cfg.target_size)),
91
+ PILToTensor(),
92
+ ]
93
+ )
94
+ train_dataset = cfg.dataset
95
+ val_dataset = cfg.dataset.copy()
96
+ if hasattr(val_dataset, "split"):
97
+ val_dataset.split = "val"
98
+
99
+ train_dataset = instantiate(
100
+ train_dataset,
101
+ transform=transforms["image"],
102
+ target_transform=transforms["label"],
103
+ )
104
+ val_dataset = instantiate(
105
+ val_dataset,
106
+ transform=transforms["image"],
107
+ target_transform=transforms["label"],
108
+ )
109
+
110
+ # Create generator for reproducibility
111
+ if not shuffle:
112
+ g = torch.Generator()
113
+ g.manual_seed(0)
114
+ else:
115
+ g = None
116
+
117
+ # Prepare dataloader configs - set worker_init_fn to None when shuffling for randomness
118
+ train_dataloader_cfg = cfg.train_dataloader.copy()
119
+ val_dataloader_cfg = cfg.val_dataloader.copy()
120
+
121
+ if shuffle:
122
+ # Set worker_init_fn to None to allow true randomness when shuffling
123
+ if "worker_init_fn" in train_dataloader_cfg:
124
+ train_dataloader_cfg["worker_init_fn"] = None
125
+ if "worker_init_fn" in val_dataloader_cfg:
126
+ val_dataloader_cfg["worker_init_fn"] = None
127
+
128
+ return (
129
+ instantiate(train_dataloader_cfg, dataset=train_dataset, generator=g),
130
+ instantiate(val_dataloader_cfg, dataset=val_dataset, generator=g),
131
+ )
132
+
133
+
134
+ def get_batch(batch, device):
135
+ """Process batch and return required tensors."""
136
+ batch["image"] = batch["image"].to(device)
137
+ return batch
138
+
139
+
140
+ def setup_training_optimizations(model, cfg):
141
+ """
142
+ Setup training optimizations based on configuration
143
+
144
+ Args:
145
+ model: The model to apply optimizations to
146
+ cfg: Configuration object with use_bf16 and use_checkpointing flags
147
+
148
+ Returns:
149
+ tuple: (scaler, use_bf16, use_checkpointing) for use in training loop
150
+ """
151
+ # Get configuration values with defaults
152
+ use_bf16 = getattr(cfg, "use_bf16", False)
153
+ use_checkpointing = getattr(cfg, "use_checkpointing", False)
154
+
155
+ # Initialize gradient scaler for mixed precision
156
+ scaler = torch.amp.GradScaler("cuda", enabled=use_bf16)
157
+
158
+ # Enable gradient checkpointing if requested
159
+ if use_checkpointing:
160
+ if hasattr(model, "gradient_checkpointing_enable"):
161
+ model.gradient_checkpointing_enable()
162
+ print(" ✓ Using built-in gradient checkpointing")
163
+ else:
164
+ # For custom models, wrap forward methods
165
+ def checkpoint_wrapper(module):
166
+ if hasattr(module, "forward"):
167
+ original_forward = module.forward
168
+
169
+ def checkpointed_forward(*args, **kwargs):
170
+ return checkpoint.checkpoint(original_forward, *args, **kwargs)
171
+
172
+ module.forward = checkpointed_forward
173
+
174
+ # Apply to key modules (adjust based on your model structure)
175
+ checkpointed_modules = []
176
+ for name, module in model.named_modules():
177
+ if any(key in name for key in ["cross_decode", "encoder", "sft"]):
178
+ checkpoint_wrapper(module)
179
+ checkpointed_modules.append(name)
180
+
181
+ if checkpointed_modules:
182
+ print(f" ✓ Applied custom gradient checkpointing to: {checkpointed_modules}")
183
+ else:
184
+ print(" ⚠ No modules found for gradient checkpointing")
185
+
186
+ print(f"Training optimizations:")
187
+ print(f" Mixed precision (bfloat16): {use_bf16}")
188
+ print(f" Gradient checkpointing: {use_checkpointing}")
189
+
190
+ return scaler, use_bf16, use_checkpointing
191
+
192
+
193
+ def load_multiple_backbones(cfg, backbone_configs, device):
194
+ """
195
+ Load multiple backbone models based on configuration.
196
+
197
+ Args:
198
+ cfg: Hydra configuration object
199
+ device: PyTorch device to load models on
200
+
201
+ Returns:
202
+ tuple: (backbones, backbone_names, primary_backbone)
203
+ - backbones: List of loaded backbone models
204
+ - backbone_names: List of backbone names
205
+ """
206
+ backbones = []
207
+ backbone_names = []
208
+ backbone_img_sizes = []
209
+
210
+ if not isinstance(backbone_configs, list) and not isinstance(backbone_configs, ListConfig):
211
+ backbone_configs = [backbone_configs]
212
+ print(f"Loading {len(backbone_configs)} backbone(s)...")
213
+
214
+ for i, backbone_config in enumerate(backbone_configs):
215
+ name = backbone_config["name"]
216
+ if name == "rgb":
217
+ backbone = instantiate(cfg.backbone)
218
+ else:
219
+ backbone = PretrainedViTWrapper(name=name)
220
+ print(f" [{i}] Loaded {backbone_config['name']}")
221
+
222
+ # Move to device and set to eval mode
223
+ backbone = backbone.to(device)
224
+ backbone.eval() # Set to eval mode for feature extraction
225
+
226
+ # Store backbone and name
227
+ backbones.append(backbone)
228
+ backbone_names.append(backbone_config["name"])
229
+ backbone_img_sizes.append(backbone.config["input_size"][1:])
230
+
231
+ return backbones, backbone_names, backbone_img_sizes
Pixal3D/torch_hub/hub/valeoai_NAF_main/utils/wrapper.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ import torch.nn.functional as F
4
+
5
+ from src.model import *
6
+
7
+
8
+ class ModelWrapper(nn.Module):
9
+ def __init__(self, name, embed_dim=384, ratio=16, ckpt_path: str = None):
10
+ super().__init__()
11
+
12
+ self.name = name
13
+ self.embed_dim = embed_dim
14
+ self.ratio = ratio
15
+
16
+ self.model = self._load_model()
17
+
18
+ if ckpt_path is not None:
19
+ state = torch.load(ckpt_path, map_location="cpu")
20
+ if name != "FeatUp":
21
+ self.model.load_state_dict(state, strict=False)
22
+ else:
23
+ new_ckpts = {
24
+ k.replace("model.1.", "norm."): v
25
+ for k, v in state["state_dict"].items()
26
+ if "upsampler" in k or "model.1.norm" in k
27
+ }
28
+ self.model.model.load_state_dict(new_ckpts, strict=True)
29
+
30
+ def _load_model(self):
31
+ upsampler_map = {
32
+ "AnyUp": lambda: AnyUpsampler(),
33
+ "Bilinear": lambda: Bilinear(),
34
+ "FeatUp": lambda: FeatUp(feature_dim=self.embed_dim, ratio=self.ratio),
35
+ "IRCNN": lambda: IRCNN(),
36
+ "JAFAR": lambda: JAFAR(v_dim=self.embed_dim),
37
+ "JBF": lambda: JBF(),
38
+ "JBU": lambda: JBU(),
39
+ "NAF": lambda: NAF(),
40
+ "Nearest": lambda: Nearest(),
41
+ "REDNet": lambda: REDNet(),
42
+ "Restormer": lambda: Restormer(),
43
+ }
44
+
45
+ if self.name not in upsampler_map:
46
+ raise ValueError(f"Unknown upsampler: {self.name}")
47
+
48
+ return upsampler_map[self.name]()
49
+
50
+ def forward(self, image, features, output_size):
51
+ out = self.model(image, features, output_size)
52
+ return out
geometry_estimation/moge_1_vitl_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:34cab296d0474b02ab477fcef0cc3deee859f3edd4fd6f947d8ff096760a3d56
3
+ size 628391652
geometry_estimation/moge_2_vitl_normal_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cb1a692d03235671e959e81360d7b4d9f44aefadb1f852d6ca6aa17799d5e31f
3
+ size 661859924