# GTA-UAV Balanced: GatedFusion with L1/L2/L3 captions on both branches. # query = sigma(alpha) * drone + (1-sigma(alpha)) * text -> InfoNCE vs gallery # 20 epochs, DINOv3 + DGTRS-CLIP, MONA + LoRA adapters. import src.losses.multi_infonce import src.training.train_gtauav # ---- Training ---- TrainConfigGTAUAV.epochs = 10 TrainConfigGTAUAV.batch_size = 8 TrainConfigGTAUAV.num_workers = 4 TrainConfigGTAUAV.learning_rate = 1e-4 TrainConfigGTAUAV.text_lr_factor = 0.1 TrainConfigGTAUAV.weight_decay = 1e-4 TrainConfigGTAUAV.grad_clip = 1.0 TrainConfigGTAUAV.use_amp = True TrainConfigGTAUAV.eval_every = 2 TrainConfigGTAUAV.warmup_epochs = 2 TrainConfigGTAUAV.seed = 42 TrainConfigGTAUAV.device = "cuda" # ---- Model ---- TrainConfigGTAUAV.init_gate = 0.7 TrainConfigGTAUAV.baseline_mode = False # ---- Loss ---- TrainConfigGTAUAV.tau_init = 0.07 TrainConfigGTAUAV.label_smoothing = 0.1 TrainConfigGTAUAV.weight_q2g = 0.6 TrainConfigGTAUAV.weight_g2q = 0.4 TrainConfigGTAUAV.learnable_temperature = True # ---- Output ---- TrainConfigGTAUAV.output_dir = "out/gtauav/with_text" # ---- Tracking ---- TrainConfigGTAUAV.use_wandb = False TrainConfigGTAUAV.use_tb = True TrainConfigGTAUAV.use_gradcam = True TrainConfigGTAUAV.gradcam_every = 5 TrainConfigGTAUAV.use_profiler = False TrainConfigGTAUAV.log_grad_norms = True # ---- InfoNCE Loss (gin-configurable) ---- InfoNCELoss.temperature_init = 0.07 InfoNCELoss.temperature_final = 0.01 InfoNCELoss.label_smoothing = 0.1 InfoNCELoss.weight_q2g = 0.6 InfoNCELoss.weight_g2q = 0.4 InfoNCELoss.learnable_temperature = True