TerraTorch配置文件详解YAML驱动的灵活微调参数设置指南【免费下载链接】terratorchA Python toolkit for fine-tuning Geospatial Foundation Models (GFMs).项目地址: https://gitcode.com/gh_mirrors/te/terratorchTerraTorch是一个用于微调地理空间基础模型GFMs的Python工具包其核心功能之一是通过YAML配置文件实现灵活的参数设置。本文将详细解析TerraTorch的YAML配置文件结构帮助新手用户快速掌握通过YAML文件配置模型微调流程的方法。YAML配置文件在TerraTorch中的核心作用 YAMLYet Another Markup Language是TerraTorch中用于配置整个工作流程的主要格式。编写YAML文件类似于低代码任务用户无需直接处理代码库中的类和结构只需了解所需组件的输入参数及其在 pipeline 中的位置即可完成配置。这种方式极大降低了地理空间基础模型微调的门槛使新手用户也能轻松上手。TerraTorch的YAML文件采用近乎封闭的格式包含几个固定字段每个字段只能填充有限的类集合这使得新用户可以很容易地获取现有YAML文件并根据自己的需求进行调整。图TerraTorch YAML配置文件解析流程示意图展示了YAML文件如何通过解析器生成模型实例、优化器、训练器等关键组件核心配置字段详解Trainer训练过程的总控中心trainer部分定义了所有直接发送给Lightning Trainer对象的参数主要包括硬件加速配置、日志设置、回调函数等。以下是一个典型的Trainer配置示例trainer: accelerator: auto strategy: auto devices: auto num_nodes: 1 precision: 16-mixed logger: class_path: TensorBoardLogger init_args: save_dir: ./output/prithvi_eurosat name: eurosat callbacks: - class_path: RichProgressBar - class_path: LearningRateMonitor init_args: logging_interval: epoch - class_path: EarlyStopping init_args: monitor: val/loss patience: 20 max_epochs: 100 check_val_every_n_epoch: 1 log_every_n_steps: 50 enable_checkpointing: true default_root_dir: ./output/prithvi_eurosat关键参数说明accelerator指定运行实验的设备类型通常设为auto自动选择GPU或CPUprecision模型使用的精度类型16-mixed是常用选择logger配置日志记录器如TensorBoardcallbacks定义训练过程中的回调操作如进度条、学习率监控、早停策略max_epochs训练的最大轮数default_root_dir保存模型检查点的目录Data数据加载与预处理配置data部分用于配置数据模块Datamodule指定数据加载、预处理和批处理等参数。TerraTorch提供了多种内置数据模块也支持自定义数据模块。data: class_path: terratorch.datamodules.TorchNonGeoDataModule init_args: transforms: - class_path: albumentations.augmentations.geometric.resize.Resize init_args: height: 224 width: 224 - class_path: albumentations.pytorch.transforms.ToTensorV2 cls: torchgeo.datamodules.EuroSATDataModule batch_size: 32 num_workers: 8 dict_kwargs: root: ./EuroSat download: True bands: - B02 - B03 - B04 - B8A - B11 - B12主要配置项class_path指定数据模块类的路径init_args数据模块的初始化参数包括 transforms数据变换、batch_size批大小等dict_kwargs传递给数据模块的额外参数如数据根目录、是否下载数据、使用的波段等Model模型架构与任务配置model部分是整个配置文件的核心用于定义任务类型和模型结构包括骨干网络、解码器、头部等组件及其参数。model: class_path: terratorch.tasks.ClassificationTask init_args: model_args: decoder: IdentityDecoder backbone_pretrained: true backbone: prithvi_eo_v2_300 head_dim_list: - 384 - 128 backbone_bands: - BLUE - GREEN - RED - NIR_NARROW - SWIR_1 - SWIR_2 num_classes: 10 head_dropout: 0.1 loss: ce freeze_backbone: false model_factory: EncoderDecoderFactory关键参数解析class_path指定任务类如分类任务ClassificationTask、分割任务SegmentationTask等model_args模型实例化的参数包括backbone指定骨干网络如prithvi_eo_v2_300decoder指定解码器类型如IdentityDecoder、UperNetDecoder等backbone_bands指定使用的光谱波段num_classes分类任务的类别数loss指定损失函数如ce交叉熵、rmse均方根误差等freeze_backbone是否冻结骨干网络权重model_factory指定模型工厂类用于构建模型Optimizer和Learning Rate Scheduler优化器与学习率调度器这两个部分用于配置模型训练的优化器和学习率调度策略。optimizer: class_path: torch.optim.AdamW init_args: lr: 1.e-4 weight_decay: 0.05 lr_scheduler: class_path: ReduceLROnPlateau init_args: monitor: val/lossoptimizer指定优化器类型如AdamW及其参数学习率lr、权重衰减weight_decay等lr_scheduler指定学习率调度策略如ReduceLROnPlateau通常会监控验证集损失来调整学习率YAML配置实战示例EuroSAT分类任务下面是一个完整的EuroSAT数据集分类任务的YAML配置文件示例来自examples/classification/classification_eurosat.yaml# lightning.pytorch2.1.1 seed_everything: 0 trainer: accelerator: auto strategy: auto devices: auto num_nodes: 1 precision: 16-mixed logger: class_path: TensorBoardLogger init_args: save_dir: ./output/prithvi_eurosat name: eurosat callbacks: - class_path: RichProgressBar - class_path: LearningRateMonitor init_args: logging_interval: epoch - class_path: EarlyStopping init_args: monitor: val/loss patience: 20 max_epochs: 100 check_val_every_n_epoch: 1 log_every_n_steps: 50 enable_checkpointing: true default_root_dir: ./output/prithvi_eurosat data: class_path: terratorch.datamodules.TorchNonGeoDataModule init_args: transforms: - class_path: albumentations.augmentations.geometric.resize.Resize init_args: height: 224 width: 224 - class_path: albumentations.pytorch.transforms.ToTensorV2 cls: torchgeo.datamodules.EuroSATDataModule batch_size: 32 num_workers: 8 dict_kwargs: root: ./EuroSat download: True bands: - B02 - B03 - B04 - B8A - B11 - B12 model: class_path: terratorch.tasks.ClassificationTask init_args: model_args: decoder: IdentityDecoder backbone_pretrained: true backbone: prithvi_eo_v2_300 head_dim_list: - 384 - 128 backbone_bands: - BLUE - GREEN - RED - NIR_NARROW - SWIR_1 - SWIR_2 num_classes: 10 head_dropout: 0.1 loss: ce freeze_backbone: false model_factory: EncoderDecoderFactory optimizer: class_path: torch.optim.AdamW init_args: lr: 1.e-4 weight_decay: 0.05 lr_scheduler: class_path: ReduceLROnPlateau init_args: monitor: val/lossYAML配置文件的高级技巧自定义模块集成TerraTorch支持集成自定义组件如模型骨干网络、解码器、任务、数据模块等。只需在YAML配置文件中指定自定义模块的路径# 在YAML中指定自定义模块路径 custom_modules_path: ./custom_modules然后在相应的配置部分引用自定义类model: class_path: custom_modules.hello_geo_module.MyCustomTask init_args: # 自定义任务的参数详细信息可参考docs/tutorials/adding_custom_modules.md。配置文件的继承与复用对于相似的实验可以创建基础YAML配置文件然后在其他配置文件中通过!include指令继承基础配置并覆盖需要修改的部分提高配置文件的复用性。超参数调优YAML配置文件非常适合超参数调优。可以通过修改model_args中的参数如backbone_drop_path_rate、head_dropout、优化器参数如lr、weight_decay等来进行超参数搜索找到最佳的模型配置。YAML配置在实际应用中的效果展示通过合理配置YAML文件TerraTorch可以实现对各种地理空间数据的处理和分析。以下是使用TerraTorch进行遥感图像分析的示例图用于分析的遥感图像输入展示了某地区的地表特征图通过TerraTorch模型处理后得到的分割掩码红色区域表示特定地物类型总结YAML配置文件是TerraTorch实现灵活微调的核心通过合理配置Trainer、Data、Model、Optimizer和Learning Rate Scheduler等字段用户可以轻松实现地理空间基础模型的微调。无论是新手还是有经验的用户都可以通过YAML配置文件快速上手TerraTorch并根据自己的需求定制模型训练流程。更多YAML配置相关的详细信息请参考官方文档docs/tutorials/the_yaml_config.md。希望本文能够帮助您更好地理解和使用TerraTorch的YAML配置文件祝大家在地理空间基础模型微调的道路上取得成功 【免费下载链接】terratorchA Python toolkit for fine-tuning Geospatial Foundation Models (GFMs).项目地址: https://gitcode.com/gh_mirrors/te/terratorch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考