LeeYG commited on
Commit
f2fb01e
·
verified ·
1 Parent(s): f23a1d3

LaCT l24_d768_ttt2x, sparse-view DL3DV 256x256, iter 65000

Browse files
LICENSE-LaCT ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tianyuan Zhang, Hao Tan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the “Software”), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
README.md ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - novel-view-synthesis
5
+ - lact
6
+ - test-time-training
7
+ - dl3dv
8
+ ---
9
+
10
+ # test_lact
11
+
12
+ A LaCT (Large-Chunk Test-Time Training) novel-view-synthesis model, trained from scratch on DL3DV at 256×256 with **sparse inputs (2–6 context views)**.
13
+
14
+ The architecture is unmodified `LaCTLVSM` from [a1600012888/LaCT](https://github.com/a1600012888/LaCT) (commit `a648340`), using config `lact_l24_d768_ttt2x`: 24 blocks, dim 768, 312.3M parameters.
15
+
16
+ This is **not** the official LaCT checkpoint. The official scene models use 32–64 input views, batch 768 and far more compute. This run used a small sparse-view recipe, so the numbers below are much lower than the paper's.
17
+
18
+ ## Files
19
+
20
+ | file | content |
21
+ |---|---|
22
+ | `model.safetensors` | Model weights at iteration 65,000, fp32. Keys match `LaCTLVSM` exactly. No optimizer state. |
23
+ | `configs/lact_l24_d768_ttt2x.yaml` | Model config, copied from the LaCT repo. |
24
+ | `configs/train_abl_lact_l24.yaml` | Training config used for this run. |
25
+ | `code/encoder_decoder_lact.py` | Wrapper used in training. It maps the training code's camera inputs (w2c + K) to LaCT's `c2w` / `fxfycxcy`. |
26
+ | `eval_results.json` | PSNR / SSIM / LPIPS every 5k iterations, 0–65k. |
27
+ | `logs/train.log` | Full training log. |
28
+ | `LICENSE-LaCT` | MIT license of the LaCT code. |
29
+
30
+ ## Usage
31
+
32
+ ```python
33
+ import sys, torch
34
+ from omegaconf import OmegaConf
35
+ from safetensors.torch import load_file
36
+
37
+ # git clone https://github.com/a1600012888/LaCT && git -C LaCT checkout a648340
38
+ sys.path.insert(0, "LaCT/lact_nvs")
39
+ from model import LaCTLVSM
40
+
41
+ cfg = OmegaConf.to_container(OmegaConf.load("configs/lact_l24_d768_ttt2x.yaml"), resolve=True)
42
+ model = LaCTLVSM(**cfg)
43
+ model.load_state_dict(load_file("model.safetensors"), strict=True)
44
+ model = model.cuda().eval()
45
+
46
+ # input_data = {"image": [B, N, 3, 256, 256] in [0, 1],
47
+ # "fxfycxcy": [B, N, 4] in pixels at 256x256,
48
+ # "c2w": [B, N, 4, 4]}
49
+ # target_data = {"fxfycxcy": [B, T, 4], "c2w": [B, T, 4, 4]}
50
+ with torch.no_grad(), torch.autocast("cuda", dtype=torch.bfloat16):
51
+ rendered = model(input_data, target_data) # [B, T, 3, 256, 256], values in [0, 1]
52
+ ```
53
+
54
+ LaCT's `lact_ttt.py` uses `torch.compile`, so the first call compiles.
55
+
56
+ ### Camera convention
57
+
58
+ Cameras use the OpenCV convention for `c2w`. The training poses were normalized as follows:
59
+
60
+ 1. Re-center the scene on the first context camera.
61
+ 2. Divide translations by `1.35 × max(distance of the context cameras from the first camera)`.
62
+
63
+ After this, the farthest context camera is at distance 1/1.35. Use the same normalization at inference.
64
+
65
+ ## Training
66
+
67
+ - **Data:** DL3DV, `images_8` (480×270, distorted, as released), resized and cropped to 256×256.
68
+ - **Views per sample:** 2–6 context views (weights 2:8, 3:2, 4:8, 5:2, 6:8) plus 8 target views.
69
+ - Context views are evenly spaced 10–20 frames apart, with jitter.
70
+ - Targets are drawn from the context span, extended by one spacing on each side.
71
+ - **Optimization:**
72
+ - Batch size 16. The training code batches by view count: with c context views, each step has floor(2 × 16 / c) scenes.
73
+ - AdamW, lr 4e-4, betas (0.9, 0.95), weight decay 0.05.
74
+ - Warmup 3k iterations, then cosine decay to 0 at 65k.
75
+ - Grad clip 3.0.
76
+ - **Loss:** L2 + 0.5 × perceptual.
77
+ - **Hardware:** one GPU (B300), bf16 autocast. Activation checkpointing on the first 12 blocks; per-block `torch.compile`. About 24 hours.
78
+
79
+ ## Results
80
+
81
+ The test set is 140 DL3DV benchmark scenes at 256×256, with fixed context/target view indices. "Nv" means N context views.
82
+
83
+ | iter | 2v PSNR | 4v PSNR | 6v PSNR | 2v / 4v / 6v SSIM | 2v / 4v / 6v LPIPS |
84
+ |---|---|---|---|---|---|
85
+ | 5k | 16.14 | 17.67 | 18.24 | 0.416 / 0.440 / 0.448 | 0.665 / 0.642 / 0.637 |
86
+ | 25k | 16.86 | 19.05 | 20.02 | 0.464 / 0.526 / 0.556 | 0.533 / 0.453 / 0.421 |
87
+ | 45k | 17.42 | 20.20 | 21.24 | 0.493 / 0.584 / 0.619 | 0.491 / 0.381 / 0.345 |
88
+ | **65k** | **17.65** | **20.68** | **21.78** | **0.504 / 0.607 / 0.644** | **0.475 / 0.358 / 0.320** |
89
+
90
+ `eval_results.json` has every 5k step.
code/encoder_decoder_lact.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """LaCT (Large-Chunk TTT, LVSM 계열) 를 abl kit 학습 루프에 끼우는 wrapper.
2
+
3
+ 모델 코드는 git clone 한 LaCT repo (lact_nvs/model.py, lact_ttt.py) 를 수정 없이 그대로 쓴다.
4
+ kit 의 입력 (images, rays, camera_cond, num_cond_views) 을 LaCT 입력으로 바꿀 뿐이다:
5
+ camera_cond["extrinsics"] = 정규화된 c2w 의 역행렬 (w2c, normalize_for_da3=False)
6
+ camera_cond["intrinsics"] = 학습 해상도 (256x256) 기준 K
7
+ -> LaCT 의 c2w / fxfycxcy. kit 의 renderer 가 쓰는 Plucker ray 와 같은 카메라 정규화
8
+ (첫 context 카메라 기준, 가장 먼 context 카메라가 1/1.35) 를 그대로 받는다.
9
+ 출력은 kit 모델과 같이 [context 이미지, 렌더링한 target] 을 view 축으로 붙여 돌려준다.
10
+ """
11
+
12
+ import os
13
+ import sys
14
+
15
+ import torch
16
+ import torch.nn as nn
17
+ import torch.utils.checkpoint
18
+ from omegaconf import OmegaConf
19
+
20
+
21
+ def _import_lact(lact_nvs_dir):
22
+ # LaCT config 의 block type 이 "model.SelfAttention", "lact_ttt.FastWeightGluMLPMultihead"
23
+ # 처럼 top-level 모듈 이름이라 lact_nvs 폴더를 sys.path 에 넣어야 한다.
24
+ lact_nvs_dir = os.path.abspath(lact_nvs_dir)
25
+ if lact_nvs_dir not in sys.path:
26
+ sys.path.insert(0, lact_nvs_dir)
27
+ import model as lact_model # noqa: E402 (LaCT/lact_nvs/model.py)
28
+ assert os.path.dirname(os.path.abspath(lact_model.__file__)) == lact_nvs_dir, lact_model.__file__
29
+ return lact_model
30
+
31
+
32
+ class LaCTWrapper(nn.Module):
33
+ def __init__(self, lact_nvs_dir, lact_config, ckpt_blocks=0, compile_blocks=False):
34
+ super().__init__()
35
+ lact_model = _import_lact(lact_nvs_dir)
36
+ cfg = OmegaConf.to_container(OmegaConf.load(lact_config), resolve=True)
37
+ self.lact = lact_model.LaCTLVSM(**cfg)
38
+ # 학습 중 앞에서부터 ckpt_blocks 개 Block 을 activation checkpointing 한다 (0 = 끔).
39
+ # Block.forward 만 바꾸므로 state_dict key 는 LaCTLVSM 그대로다.
40
+ self.ckpt_blocks = int(ckpt_blocks)
41
+ for i, blk in enumerate(self.lact.blocks):
42
+ if i < self.ckpt_blocks:
43
+ blk.forward = self._ckpt_forward(blk.forward)
44
+ # LaCT README: TTT 모델은 compile 해야 제 속도가 난다. Block 을 하나씩 in-place 로 compile
45
+ # 하고 checkpoint 는 compile 안에서 돈다 (2026-11-13 memtest, B300):
46
+ # LaCTLVSM 전체를 compile -> inductor 커널이 "misaligned address" 로 죽는다.
47
+ # checkpoint 바깥 + compile 안쪽 -> backward 재계산에서 CheckpointError.
48
+ self.compile_blocks = bool(compile_blocks)
49
+ if self.compile_blocks:
50
+ # block 마다 guard (forward closure id) 가 달라 block 수만큼 재컴파일된다 (기본 한도 8).
51
+ torch._dynamo.config.recompile_limit = 128
52
+ torch._dynamo.config.accumulated_recompile_limit = 1024
53
+ for blk in self.lact.blocks:
54
+ blk.compile()
55
+
56
+ def _ckpt_forward(self, fwd):
57
+ def run(x, info):
58
+ if self.training and torch.is_grad_enabled():
59
+ return torch.utils.checkpoint.checkpoint(fwd, x, info, use_reentrant=False)
60
+ return fwd(x, info)
61
+ return run
62
+
63
+ def forward(self, images, rays, camera_cond, num_cond_views, timeit=False):
64
+ n = int(num_cond_views)
65
+ w2c = camera_cond["extrinsics"].to(images.device).float()
66
+ K = camera_cond["intrinsics"].to(images.device).float()
67
+ c2w = torch.linalg.inv(w2c)
68
+ fxfycxcy = torch.stack([K[..., 0, 0], K[..., 1, 1], K[..., 0, 2], K[..., 1, 2]], dim=-1)
69
+
70
+ input_data = {"image": images[:, :n].float(), "fxfycxcy": fxfycxcy[:, :n], "c2w": c2w[:, :n]}
71
+ target_data = {"fxfycxcy": fxfycxcy[:, n:], "c2w": c2w[:, n:]}
72
+ rendered = self.lact(input_data, target_data)
73
+ return torch.cat([images[:, :n], rendered.to(images.dtype)], dim=1)
configs/lact_l24_d768_ttt2x.yaml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ patch_size: 8
2
+ dim: 768
3
+ layers: 24
4
+
5
+ block_config:
6
+ - type: model.SelfAttention
7
+ length_dim: l
8
+ params:
9
+ head_dim: 64
10
+ use_qk_norm: true
11
+ - type: lact_ttt.FastWeightGluMLPMultihead
12
+ length_dim: vl
13
+ params:
14
+ head_dim: 768 # 256
15
+ inter_multi: 2
16
+ base_lr: 0.01
17
+ muon_update_steps: 5
18
+ - type: model.MLP
19
+ length_dim: vl
20
+ params:
21
+ inter_multi: 4
configs/train_abl_lact_l24.yaml ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # abl_lact_l24: LaCT baseline (git clone https://github.com/a1600012888/LaCT @ a648340, lact_nvs 의
2
+ # LaCTLVSM + config/lact_l24_d768_ttt2x.yaml, 처음부터 학습) 를 abl_da3_l12 와 같은 조건으로 돌린다 (2026-11-13, B300 GPU 3).
3
+ # abl_da3_l12.yaml 과 model 블록만 다르다: 데이터 / view (context 2-6 + target 8) / batch 16 / 256x256 /
4
+ # lr 4e-4, warmup 3000, cosine 65k / loss (L2 + 0.5 perceptual) / eval 5k / W&B abl_enc6 이 모두 같다.
5
+ # LaCT 는 encoder 가 없어서 카메라는 da3 형식 (w2c + K) 으로 받아 c2w / fxfycxcy 로 바꿔 쓴다
6
+ # (models/encoder_decoder_lact.py). LaCT repo 코드는 수정하지 않았다.
7
+ # memtest batch 16 (B300, 컨테이너 yglee_lact): checkpointing 없음 -> cond 2 OOM.
8
+ # ckpt 24: cond 2 37,862 MiB / 2.78 s | ckpt 12: cond 2 220,166 MiB / 2.58 s
9
+ # ckpt 12 + compile (채택): cond 2 179,558 MiB / 1.87 s, cond 4 109,538 MiB / 1.05 s, cond 6 81,436 MiB / 0.72 s
10
+ module: train
11
+ seed: 0
12
+
13
+ opt:
14
+ lr: 4e-4
15
+ weight_decay: 0.05
16
+ num_iter_total: 65001 # GPU 2,3 를 이틀 쓰는 길이 (VGGT 2.3 s/iter + eval 5 분/2.5k -> 약 44 h)
17
+ lr_scheduler_iter: 65001
18
+ warmup_steps: 3000
19
+ batch_size: 16 # memtest 2026-11-08: 두 arm 공통 최대 (cond 2 가 최악: DA3 165.5 GB, VGGT 168.3 GB; 24 는 VGGT OOM)
20
+ batch_size_test: 16
21
+ target_has_input_p: 1.0
22
+ l2_loss_weight: 1.0
23
+ perceptual_loss_weight: 0.5
24
+ grad_clip_norm: 3.0
25
+ allowed_gradnorm_factor: 5
26
+ betas:
27
+ - 0.9
28
+ - 0.95
29
+ lr_scheduler: cosine
30
+ hold_steps: 0
31
+ cosine_min_range: 0.0
32
+ freeze_da3: false # encoder 도 학습 (논문 256 모델과 같다)
33
+ print_every: 50
34
+
35
+ model:
36
+ model_type: regressive
37
+ encoder: lact
38
+ lact_nvs_dir: /data/models/yglee_lager/LaCT/lact_nvs
39
+ lact_config: /data/models/yglee_lager/LaCT/lact_nvs/config/lact_l24_d768_ttt2x.yaml
40
+ lact_ckpt_blocks: 12 # activation checkpointing 하는 앞쪽 Block 수 (계산 결과는 같다)
41
+ lact_compile: true # LaCT Block 을 torch.compile (LaCT README 권장)
42
+ da_model_weights_path: 'pretrained_weights/model_giant.safetensors' # run.sh 가 넘기는 값. LaCT 는 쓰지 않는다
43
+
44
+ data:
45
+ camera_condition_type: da3
46
+ subdataset_list:
47
+ - name: dl3dv
48
+ view_sampler_range:
49
+ - 10
50
+ - 20
51
+ expansion_factor: 1.0
52
+ equalization_length: 200000
53
+ num_cond_views_aug:
54
+ - 2
55
+ - 6
56
+ aspect_ratio_range:
57
+ - 1.0
58
+ - 1.0
59
+ im_size_hw:
60
+ - 256
61
+ - 256
62
+ num_views: 10
63
+ zero_out_cam_cond_p: 0.0
64
+ num_tgt_views: 8
65
+ view_to_sample_prob:
66
+ - 2,8
67
+ - 3,2
68
+ - 4,8
69
+ - 5,2
70
+ - 6,8
71
+
72
+ test_data:
73
+ dataset_names: [dl3dv, dl3dv, dl3dv]
74
+ dataset_names_log: [dl3dv_2view, dl3dv_4view, dl3dv_6view]
75
+ zero_out_cam_cond_p: [0.0, 0.0, 0.0]
76
+ test_view_indices_paths: [assets/dl3dv_2v.json, assets/dl3dv_4v.json, assets/dl3dv_6v.json]
77
+ num_cond_views: [2, 4, 6]
78
+ camera_condition_type: da3
79
+
80
+ view_sampler:
81
+ train_method: bounded_interp
82
+ test_method: fixed
83
+
84
+ log_dir: ./output
85
+
86
+ wandb:
87
+ api_key_path: ./config/api_keys.yaml
88
+ enabled: true
89
+ project: abl_enc6
90
+ entity: dudrms514
91
+ name: null
92
+ resume: allow
93
+ id: null
94
+ log_iter: 50
95
+ vis_iter: 500
96
+
97
+ eval:
98
+ log_iter: 50
99
+ eval_at_start: true
100
+ eval_iter: 5000
101
+ ckpt_iter: 100000000 # 번호 붙은 체크포인트는 만들지 않는다 (latest 는 1000 마다 덮어쓴다)
eval_results.json ADDED
@@ -0,0 +1,254 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "iter": 0,
4
+ "dl3dv_2view": {
5
+ "psnr": 11.421739,
6
+ "ssim": 0.065604,
7
+ "lpips": 0.788644
8
+ },
9
+ "dl3dv_4view": {
10
+ "psnr": 11.422578,
11
+ "ssim": 0.065605,
12
+ "lpips": 0.788819
13
+ },
14
+ "dl3dv_6view": {
15
+ "psnr": 11.422861,
16
+ "ssim": 0.065604,
17
+ "lpips": 0.788792
18
+ }
19
+ },
20
+ {
21
+ "iter": 5000,
22
+ "dl3dv_2view": {
23
+ "psnr": 16.143566,
24
+ "ssim": 0.416415,
25
+ "lpips": 0.66512
26
+ },
27
+ "dl3dv_4view": {
28
+ "psnr": 17.673761,
29
+ "ssim": 0.440066,
30
+ "lpips": 0.642324
31
+ },
32
+ "dl3dv_6view": {
33
+ "psnr": 18.242579,
34
+ "ssim": 0.44798,
35
+ "lpips": 0.636527
36
+ }
37
+ },
38
+ {
39
+ "iter": 10000,
40
+ "dl3dv_2view": {
41
+ "psnr": 16.489031,
42
+ "ssim": 0.439963,
43
+ "lpips": 0.605489
44
+ },
45
+ "dl3dv_4view": {
46
+ "psnr": 18.298374,
47
+ "ssim": 0.4804,
48
+ "lpips": 0.557058
49
+ },
50
+ "dl3dv_6view": {
51
+ "psnr": 19.074331,
52
+ "ssim": 0.499484,
53
+ "lpips": 0.538382
54
+ }
55
+ },
56
+ {
57
+ "iter": 15000,
58
+ "dl3dv_2view": {
59
+ "psnr": 16.557905,
60
+ "ssim": 0.446517,
61
+ "lpips": 0.564823
62
+ },
63
+ "dl3dv_4view": {
64
+ "psnr": 18.557508,
65
+ "ssim": 0.497642,
66
+ "lpips": 0.498675
67
+ },
68
+ "dl3dv_6view": {
69
+ "psnr": 19.409191,
70
+ "ssim": 0.521651,
71
+ "lpips": 0.473214
72
+ }
73
+ },
74
+ {
75
+ "iter": 20000,
76
+ "dl3dv_2view": {
77
+ "psnr": 16.463772,
78
+ "ssim": 0.448511,
79
+ "lpips": 0.54851
80
+ },
81
+ "dl3dv_4view": {
82
+ "psnr": 18.719131,
83
+ "ssim": 0.51003,
84
+ "lpips": 0.470424
85
+ },
86
+ "dl3dv_6view": {
87
+ "psnr": 19.628149,
88
+ "ssim": 0.536896,
89
+ "lpips": 0.442171
90
+ }
91
+ },
92
+ {
93
+ "iter": 25000,
94
+ "dl3dv_2view": {
95
+ "psnr": 16.858255,
96
+ "ssim": 0.46427,
97
+ "lpips": 0.533192
98
+ },
99
+ "dl3dv_4view": {
100
+ "psnr": 19.045271,
101
+ "ssim": 0.526044,
102
+ "lpips": 0.453275
103
+ },
104
+ "dl3dv_6view": {
105
+ "psnr": 20.020243,
106
+ "ssim": 0.555756,
107
+ "lpips": 0.420685
108
+ }
109
+ },
110
+ {
111
+ "iter": 30000,
112
+ "dl3dv_2view": {
113
+ "psnr": 16.958929,
114
+ "ssim": 0.469906,
115
+ "lpips": 0.521318
116
+ },
117
+ "dl3dv_4view": {
118
+ "psnr": 19.342415,
119
+ "ssim": 0.54211,
120
+ "lpips": 0.430941
121
+ },
122
+ "dl3dv_6view": {
123
+ "psnr": 20.310455,
124
+ "ssim": 0.573381,
125
+ "lpips": 0.396702
126
+ }
127
+ },
128
+ {
129
+ "iter": 35000,
130
+ "dl3dv_2view": {
131
+ "psnr": 16.954477,
132
+ "ssim": 0.474047,
133
+ "lpips": 0.5025
134
+ },
135
+ "dl3dv_4view": {
136
+ "psnr": 19.558046,
137
+ "ssim": 0.555949,
138
+ "lpips": 0.406279
139
+ },
140
+ "dl3dv_6view": {
141
+ "psnr": 20.597551,
142
+ "ssim": 0.58913,
143
+ "lpips": 0.372302
144
+ }
145
+ },
146
+ {
147
+ "iter": 40000,
148
+ "dl3dv_2view": {
149
+ "psnr": 17.270464,
150
+ "ssim": 0.484966,
151
+ "lpips": 0.493843
152
+ },
153
+ "dl3dv_4view": {
154
+ "psnr": 19.936426,
155
+ "ssim": 0.570776,
156
+ "lpips": 0.393177
157
+ },
158
+ "dl3dv_6view": {
159
+ "psnr": 20.957508,
160
+ "ssim": 0.604687,
161
+ "lpips": 0.356841
162
+ }
163
+ },
164
+ {
165
+ "iter": 45000,
166
+ "dl3dv_2view": {
167
+ "psnr": 17.417568,
168
+ "ssim": 0.492875,
169
+ "lpips": 0.491123
170
+ },
171
+ "dl3dv_4view": {
172
+ "psnr": 20.203033,
173
+ "ssim": 0.584476,
174
+ "lpips": 0.381447
175
+ },
176
+ "dl3dv_6view": {
177
+ "psnr": 21.237524,
178
+ "ssim": 0.618938,
179
+ "lpips": 0.344819
180
+ }
181
+ },
182
+ {
183
+ "iter": 50000,
184
+ "dl3dv_2view": {
185
+ "psnr": 17.475805,
186
+ "ssim": 0.496668,
187
+ "lpips": 0.479948
188
+ },
189
+ "dl3dv_4view": {
190
+ "psnr": 20.386845,
191
+ "ssim": 0.594407,
192
+ "lpips": 0.369613
193
+ },
194
+ "dl3dv_6view": {
195
+ "psnr": 21.483255,
196
+ "ssim": 0.631511,
197
+ "lpips": 0.331847
198
+ }
199
+ },
200
+ {
201
+ "iter": 55000,
202
+ "dl3dv_2view": {
203
+ "psnr": 17.616961,
204
+ "ssim": 0.502485,
205
+ "lpips": 0.475959
206
+ },
207
+ "dl3dv_4view": {
208
+ "psnr": 20.577383,
209
+ "ssim": 0.601876,
210
+ "lpips": 0.362314
211
+ },
212
+ "dl3dv_6view": {
213
+ "psnr": 21.660151,
214
+ "ssim": 0.638468,
215
+ "lpips": 0.324519
216
+ }
217
+ },
218
+ {
219
+ "iter": 60000,
220
+ "dl3dv_2view": {
221
+ "psnr": 17.627119,
222
+ "ssim": 0.502907,
223
+ "lpips": 0.475652
224
+ },
225
+ "dl3dv_4view": {
226
+ "psnr": 20.662294,
227
+ "ssim": 0.605849,
228
+ "lpips": 0.3587
229
+ },
230
+ "dl3dv_6view": {
231
+ "psnr": 21.750998,
232
+ "ssim": 0.642899,
233
+ "lpips": 0.320617
234
+ }
235
+ },
236
+ {
237
+ "iter": 65000,
238
+ "dl3dv_2view": {
239
+ "psnr": 17.649261,
240
+ "ssim": 0.50394,
241
+ "lpips": 0.474991
242
+ },
243
+ "dl3dv_4view": {
244
+ "psnr": 20.684305,
245
+ "ssim": 0.607008,
246
+ "lpips": 0.358075
247
+ },
248
+ "dl3dv_6view": {
249
+ "psnr": 21.778204,
250
+ "ssim": 0.644274,
251
+ "lpips": 0.319716
252
+ }
253
+ }
254
+ ]
logs/train.log ADDED
The diff for this file is too large to render. See raw diff
 
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc6ad4805ee577beaacbfccc97d3cc8da3cb20d3685c077aa7745cf94efc913c
3
+ size 1249236840