diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_nandi_ps4.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_nandi_ps4.yaml new file mode 100644 index 000000000..cdda4bd1d --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_nandi_ps4.yaml @@ -0,0 +1,138 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.upsample.Upsample + init_args: + scale_factor: 4 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 9 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/nandi/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 9 + nodata_value: 8 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + transforms: + - class_path: rslearn.train.transforms.pad.Pad + init_args: + size: 63 + mode: "center" + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.train.transforms.crop.Crop + init_args: + crop_size: 32 + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.pad.Pad + init_args: + size: 63 + mode: "center" + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.train.transforms.crop.Crop + init_args: + crop_size: 32 + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "test" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + crop_size: 32 + overlap_pixels: 4 + skip_targets: true + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: nandi_ps4_interpolate_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects \ No newline at end of file diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps1.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps1.yaml new file mode 100644 index 000000000..4e28f9d97 --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps1.yaml @@ -0,0 +1,112 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 1 + decoder: + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 13 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps1_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects \ No newline at end of file diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps2.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps2.yaml new file mode 100644 index 000000000..8a9a33d71 --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps2.yaml @@ -0,0 +1,114 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + decoder: + - class_path: rslearn.models.upsample.Upsample + init_args: + scale_factor: 2 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 13 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps2_interpolate_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4.yaml new file mode 100644 index 000000000..1b3243a95 --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4.yaml @@ -0,0 +1,115 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.upsample.Upsample + init_args: + scale_factor: 4 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 13 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps4_interpolate_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects \ No newline at end of file diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_bicubic.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_bicubic.yaml new file mode 100644 index 000000000..6d297c97b --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_bicubic.yaml @@ -0,0 +1,116 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.upsample.Upsample + init_args: + scale_factor: 4 + mode: bicubic + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 13 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps4_bicubic_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_finetune.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_finetune.yaml new file mode 100644 index 000000000..ba3d22f4e --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_finetune.yaml @@ -0,0 +1,113 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.unet.UNetDecoder + init_args: + in_channels: [[4, 768]] + out_channels: 13 + num_channels: {2: 256, 1: 128} + conv_layers_per_resolution: 1 + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + unfreeze_at_epoch: 20 + unfreeze_lr_factor: 10 + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps4_finetune_02_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_fourlayer.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_fourlayer.yaml new file mode 100644 index 000000000..ace58f66a --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_fourlayer.yaml @@ -0,0 +1,130 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 768 + kernel_size: 1 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 768 + kernel_size: 1 + - class_path: rslearn.models.upsample.Upsample + init_args: + scale_factor: 4 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 768 + kernel_size: 1 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 13 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps4_fourlayer_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_reshape.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_reshape.yaml new file mode 100644 index 000000000..3c8e9ed98 --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_reshape.yaml @@ -0,0 +1,116 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 208 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.models.reshape_feature_maps.ReshapeFeatureMaps + init_args: + # Reshape CHW tensor from 208x8x8 to 13x32x32. + upscale_factor: 4 + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps4_reshape_02_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects diff --git a/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_twolayer.yaml b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_twolayer.yaml new file mode 100644 index 000000000..4bc1890d0 --- /dev/null +++ b/one_off_projects/2026_02_23_worldcover_embedding/2026_02_24_supervised_model/config_worldcover_ps4_twolayer.yaml @@ -0,0 +1,120 @@ +model: + class_path: rslearn.train.lightning_module.RslearnLightningModule + init_args: + model: + class_path: rslearn.models.singletask.SingleTaskModel + init_args: + encoder: + - class_path: rslearn.models.olmoearth_pretrain.model.OlmoEarth + init_args: + checkpoint_path: /weka/dfive-default/helios/checkpoints/gabrielt/single_bandset_all12_random_band_dropout_ndvi_era5_random_time_decode_masked_neg_decoder_supervision_updated/step295000 + patch_size: 4 + decoder: + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 768 + kernel_size: 1 + - class_path: rslearn.models.upsample.Upsample + init_args: + scale_factor: 4 + - class_path: rslearn.models.conv.Conv + init_args: + in_channels: 768 + out_channels: 13 + kernel_size: 1 + activation: + class_path: torch.nn.Identity + - class_path: rslearn.train.tasks.segmentation.SegmentationHead + scheduler: + class_path: rslearn.train.scheduler.PlateauScheduler + init_args: + factor: 0.2 + patience: 2 + min_lr: 0 + cooldown: 10 + optimizer: + class_path: rslearn.train.optimizer.AdamW + init_args: + lr: 0.0001 +data: + class_path: rslearn.train.data_module.RslearnDataModule + init_args: + path: /weka/dfive-default/rslearn-eai/datasets/worldcover/ + inputs: + sentinel2_l2a: + data_type: "raster" + layers: ["sentinel2"] + bands: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + passthrough: true + dtype: FLOAT32 + load_all_item_groups: true + load_all_layers: true + targets: + data_type: "raster" + layers: ["label_raster"] + bands: ["label"] + is_target: true + dtype: INT32 + task: + class_path: rslearn.train.tasks.segmentation.SegmentationTask + init_args: + num_classes: 13 + nodata_value: 0 + metric_kwargs: + average: "micro" + batch_size: 4 + num_workers: 32 + default_config: + crop_size: 32 + transforms: + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + train_config: + transforms: + - class_path: rslearn.train.transforms.flip.Flip + init_args: + image_selectors: ["sentinel2_l2a", "target/classes", "target/valid"] + - class_path: rslearn.models.olmoearth_pretrain.norm.OlmoEarthNormalize + init_args: + band_names: + sentinel2_l2a: ["B02", "B03", "B04", "B08", "B05", "B06", "B07", "B8A", "B11", "B12", "B01", "B09"] + tags: + split: "train" + val_config: + tags: + split: "val" + test_config: + tags: + split: "test" + predict_config: + load_all_crops: true + overlap_pixels: 4 + skip_targets: true +trainer: + max_epochs: 100 + logger: + callbacks: + - class_path: lightning.pytorch.callbacks.LearningRateMonitor + init_args: + logging_interval: "epoch" + - class_path: rslearn.train.callbacks.checkpointing.ManagedBestLastCheckpoint + init_args: + monitor: val_accuracy + mode: max + - class_path: rslearn.train.callbacks.freeze_unfreeze.FreezeUnfreeze + init_args: + module_selector: ["model", "encoder", 0] + - class_path: rslearn.train.prediction_writer.RslearnWriter + init_args: + path: null + output_layer: output + merger: + class_path: rslearn.train.prediction_writer.RasterMerger + init_args: + overlap_pixels: 4 +project_name: 2026_02_11_embedding_interpolation +run_name: worldcover_ps4_twolayer_01_supervisedpretraining_v2 +management_dir: ${RSLP_PREFIX}/projects