()
| 7 | |
| 8 | |
| 9 | def config_parser(): |
| 10 | parser = configargparse.ArgumentParser() |
| 11 | |
| 12 | # General settings |
| 13 | parser.add_argument("-c", "--config", is_config_file=True, help='Path to config file') |
| 14 | parser.add_argument("-n", "--run_name", type=str, required=True, help='Experiment name') |
| 15 | parser.add_argument("-l", "--logbase", type=str, default='logs', help='Base directory to store checkpoints and logs') |
| 16 | parser.add_argument("-d", "--datadir", type=str, required=True, help='Input data directory') |
| 17 | parser.add_argument("-p", "--pretrained_model_path", type=str, help='Path to pretrained model') |
| 18 | |
| 19 | # Dataset options |
| 20 | parser.add_argument("-k", "--train_skip", type=int, default=1, help='Load 1/N images from training sets') |
| 21 | parser.add_argument("--test_skip", type=int, default=1, help='Load 1/N images from test/validation sets') |
| 22 | parser.add_argument("--sample_ratio", type=float, default=1, help='Sample ratio for test/val sets') |
| 23 | parser.add_argument("-t", "--dataset_type", type=str, default='Colmap', help='Dataset type (Colmap/7Scenes/Cambridge)') |
| 24 | parser.add_argument("--rap_resolution", type=float, default=2.0, help='Image downscale factor or resolution for RAP') |
| 25 | |
| 26 | # Training options |
| 27 | parser.add_argument("--device", type=str, default='cuda', help='Device to run training on') |
| 28 | parser.add_argument("--compile_model", action='store_true', default=True, help='Compile model to improve efficiency') |
| 29 | parser.add_argument("--amp", action='store_true', default=True, help='Enable automatic mixed precision') |
| 30 | parser.add_argument("--amp_dtype", type=eval_type, default='torch.float16', help='Mixed precision data type') |
| 31 | parser.add_argument("--resume", action='store_true', default=False, help='Resume training from checkpoint') |
| 32 | parser.add_argument("--epochs", type=int, default=2000, help='Max number of training epochs') |
| 33 | parser.add_argument("--learning_rate", type=float, default=0.0001, help='Learning rate') |
| 34 | parser.add_argument("--batch_size", type=int, default=8, help='Batch size for training') |
| 35 | parser.add_argument("--val_batch_size", type=int, default=8, help='Batch size for validation') |
| 36 | parser.add_argument("--val_num_workers", type=int, default=8, help='Number of workers for validation data loading') |
| 37 | parser.add_argument("--feature_loss", type=str, default='vicreg', choices=['triplet', 'vicreg', 'ntxent', 'infonce', 'mse'], help='Feature loss type') |
| 38 | parser.add_argument("--infonce_temperature", type=float, default=0.07, help='Temperature for InfoNCE loss') |
| 39 | parser.add_argument("--triplet_margin", type=float, default=1.0, help='Margin for triplet loss') |
| 40 | parser.add_argument("--patience", type=int, nargs=2, default=[200, 50], help='EarlyStopping and reduceLR schedule') |
| 41 | parser.add_argument("--freeze_batch_norm", action='store_true', default=True, help='Freeze BatchNorm layers during training') |
| 42 | parser.add_argument("--seed", type=int, default=7, help='Random seed for (limited) reproducibility') |
| 43 | parser.add_argument("--save_all_ckpt", action='store_true', default=False, help='Save all checkpoints for each epoch') |
| 44 | parser.add_argument("--save_only_best", action='store_true', default=False, help='Save only best model') |
| 45 | |
| 46 | # Loss configuration |
| 47 | parser.add_argument("--loss_weights", type=float, nargs=4, default=[1, 1, 1, 0.7], help='Weights for combined loss') |
| 48 | parser.add_argument("--loss_learnable", action='store_true', default=True, help='Enable learnable pose loss') |
| 49 | parser.add_argument("--loss_norm", type=int, default=2, help='Pose loss norm order') |
| 50 | parser.add_argument("--s_x", type=float, default=-3, help='Pose loss s_x parameter') |
| 51 | parser.add_argument("--s_q", type=float, default=-6.5, help='Pose loss s_q parameter') |
| 52 | |
| 53 | # RVS settings |
| 54 | parser.add_argument("--max_attempts", type=int, default=100, help='Max attempts for RVS') |
| 55 | parser.add_argument("--brisque_threshold", type=float, default=50, help='BRISQUE threshold for RVS') |
| 56 | parser.add_argument("--no_appearance_augmentation", action='store_true', default=False, help='Disable appearance augmentation') |
| 57 | parser.add_argument("--rvs_uniform_and_sphere", action='store_true', default=False, help='Use uniform and sphere sampling for RVS') |
| 58 | parser.add_argument("--xz_plane_only", action='store_true', default=False, help='Use only XZ plane for RVS') |
| 59 | parser.add_argument("--rvs_refresh_rate", type=int, default=2, help='Epochs between RVS refreshes') |
| 60 | parser.add_argument("--rvs_trans", type=float, default=5, help='Translation jitter range for RVS') |
| 61 | parser.add_argument("--rvs_rotation", type=float, default=1.2, help='Rotation jitter range for RVS (log_10 scale)') |
| 62 | parser.add_argument("--d_max", type=float, default=1, help='Maximum RVS bound') |
| 63 | |
| 64 | # Visualization options |
| 65 | parser.add_argument("--vis_rvs", action='store_true', default=False, help='Enable RVS visualization') |
| 66 | parser.add_argument("--vis_featuremap", action='store_true', default=False, help='Visualize feature maps') |
no outgoing calls
no test coverage detected