Switch to shared DINOv3 WEB encoder (saves ~4-5 GB VRAM)
- Single DINOv3 WEB for both drone and satellite branches (shared_encoder=True default) - One set of MONA adapters instead of two: 7M trainable vs 14M - Total params: 438M (was 748M), trainable: 10.6M (was 17.6M) - Asymmetric mode still available via shared_encoder=False - Add gradient accumulation (grad_accum_steps, --grad-accum CLI flag) - Update model summary in README Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -73,6 +73,7 @@ class TrainConfigGTAUAV:
|
||||
lrsclip_path: str = _LRSCLIP
|
||||
init_gate: float = 0.7
|
||||
baseline_mode: bool = False
|
||||
shared_encoder: bool = True # single DINOv3 WEB for both branches (saves ~4-5 GB)
|
||||
|
||||
# Training.
|
||||
resume_from: str | None = None # path to checkpoint for resuming
|
||||
@@ -341,13 +342,15 @@ def train(cfg: TrainConfigGTAUAV) -> None:
|
||||
start_epoch = resume_ckpt.get("epoch", -1) + 1
|
||||
else:
|
||||
mode_str = "baseline (no text)" if cfg.baseline_mode else "with text (L1/L2/L3)"
|
||||
LOGGER.info("Building model — %s", mode_str)
|
||||
enc_str = "shared DINOv3 WEB" if cfg.shared_encoder else "asymmetric (WEB + SAT)"
|
||||
LOGGER.info("Building model — %s, %s", mode_str, enc_str)
|
||||
model = AsymmetricEncoder(
|
||||
dino_web_path=cfg.dino_web_path,
|
||||
dino_sat_path=cfg.dino_sat_path,
|
||||
lrsclip_path=cfg.lrsclip_path,
|
||||
init_gate=cfg.init_gate,
|
||||
baseline_mode=cfg.baseline_mode,
|
||||
shared_encoder=cfg.shared_encoder,
|
||||
device=cfg.device,
|
||||
).to(cfg.device)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user