experiments/stitch_search_vggt/conv3d_init_layer2.ptVGGT-Ω를 Phase 4 reward backbone으로 채택하기로 결정(260629)한 뒤, LGM connector 통합 경로를 위해 어느 Aggregator block에서 feature를 뽑아야 하는지(stitch layer ℓ̂) 결정이 필요했다.
기존 DA3 트랙에서 find_stitch_layer_da3.py로 closed-form ridge regression 방법을 사용해 ℓ̂=6을 결정한 것과 동일한 방식으로, VGGT-Ω Aggregator에 적용. 목표는 "Conv3d(VAE latent 16ch → VGGT-Ω feature 1024ch)가 어느 layer를 모방하도록 초기화하면 최소 MSE인가".
cached_layer_indices를 임시 확장 → 각 block 출력에서 2C concat 중 후반부 C(tokens) 추출
scripts/find_stitch_layer_vggt.py 작성. DA3 버전과 동일한 closed-form 3-pass 알고리즘이나 VGGT-Ω native API에 맞게 재구성:
[1, F, 3, H, W]로 독립 forward → inter-cam contamination 없이 within-cam temporal attention만. DA3와 동일 convention.[..., C:] = post-inter-frame tokens. camera+register token 제거 ([..., patch_token_start:, :])| Layer (ℓ) | Eval MSE ↓ | 비고 |
|---|---|---|
| 2 | 7.61e-3 | ← BEST |
| 4 | 9.26e-3 | +22% |
| 6 | 1.00e-2 | +32% |
| 8 | 1.18e-2 | +55% |
| 10 | 1.61e-2 | +112% |
| 12 | 4.38e-2 | +476% |
| 14 | 1.60e-1 | +2002% |
| 16 | 5.06e-1 | ×66 |
| 18 | 1.07e+0 | ×141 |
| 20 | 1.12e+0 | ×147 (worst) |
DA3(vitl, best=6)는 alt_start=8 직전 — cross-view attention이 섞이기 전 per-cam feature가 최적. VGGT-Ω(best=2)는 훨씬 앞쪽: Aggregator의 초반 frame_block이 공간 geometry에 가장 직접 대응. 더 깊이 가면 inter-frame attention이 feature를 task-specific하게 변형시켜 VAE latent와 선형 정렬이 깨진다고 해석할 수 있음. 두 backbone의 정보 추출 방식 차이 반영.
LGMConnectorDA3 코드 재사용 가능, stitch layer만 교체src/models/lgm_connector_vggt.py — LGMConnectorDA3에서 backbone=VGGT-Ω, stitch_layer=2로 교체. capture_hidden 함수는 이미 find_stitch_layer_vggt.py에 구현됨