configuration
Referencia de Configuración
Los experimentos se definen como archivos YAML en la carpeta experiments/.
Ejemplo Completo
experiment_name: "baseline_jpm"
engine: "delineate-anything"
aoi_wkt: "POLYGON((-62.27 -33.50, -62.21 -33.50, -62.21 -33.47, -62.27 -33.47, -62.27 -33.50))"
reference_path: "data/input/reference_output.geojson"
device: "cpu"
engine_params:
conf: 0.05
iou: 0.5
tile_size: 1024
n_scenes: 10
start_date: "2025-07-01"
composite_method: "mean"
postprocess_params:
spectral_split: true
split_max_area_m2: 800000
split_n_clusters: 3
simplify_tolerance: 20.0
min_area_m2: 50000
buffer_distance: -5.0
merge_overlaps: true
remove_holes_below_m2: 10000
Campos Requeridos
| Parámetro | Tipo | Descripción |
|---|---|---|
experiment_name | string | Nombre único del experimento (máx 128 caracteres). |
engine | string | Identificador del engine de detección. Ver Engines Disponibles. |
aoi_wkt | string | Área de Interés como WKT Polygon o MultiPolygon en EPSG:4326 (lon/lat). |
reference_path | string | Path al GeoJSON de referencia con los polígonos ground-truth. |
engine_params | dict | Hiperparámetros específicos del engine. |
postprocess_params | dict | Configuración del pipeline de post-procesamiento. |
Parámetros del Engine (delineate-anything)
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
conf | float | 0.005 | Threshold de confianza YOLO. Más bajo = más detecciones, más ruido. |
iou | float | 0.3 | Threshold IoU de NMS. Más bajo = supresión más agresiva. |
tile_size | int | 512 | Tamaño de tile en pixels para inferencia tileada. |
tile_overlap | float | 0.5 | Fracción de overlap entre tiles adyacentes (0.0–1.0). |
model_size | string | "large" | Variante del modelo: "large" o "small". |
n_scenes | int | 1 | Cantidad de escenas Sentinel-2 para el composite. |
start_date | string | — | Fecha de inicio de búsqueda de imágenes (YYYY-MM-DD). |
composite_method | string | "mean" | Método de composición: "mean" o "median". |
detection_mode | string | "tiled" | Estrategia de detección: "tiled", "notile" o "spectral". |
Parámetros de Post-Procesamiento
Se aplican en orden fijo: spectral split → buffer → merge → remove holes → simplify → filter.
| Parámetro | Tipo | Default | Rango | Descripción |
|---|---|---|---|---|
simplify_tolerance | float | 10.0 | [0, 200] | Tolerancia Douglas-Peucker en metros. 0 = sin simplificación. |
min_area_m2 | float | 50000 | [0, 10M] | Área mínima de polígono en m². Los más chicos se eliminan. |
buffer_distance | float | 0.0 | [-100, 100] | Buffer en metros. Positivo expande, negativo achica. |
merge_overlaps | bool | false | — | Mergear todos los polígonos que se superponen. |
spectral_split | bool | false | — | Dividir polígonos grandes por clustering espectral. |
split_max_area_m2 | float | 500000 | [0, 100M] | Polígonos más grandes que esto son candidatos a split. |
split_n_clusters | int | 4 | — | Cantidad de clusters K-means para el split espectral. |
remove_holes_below_m2 | float | 0 | [0, 10M] | Remover huecos interiores más chicos que esta área. |
Campos Opcionales
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
device | string | "cpu" | Dispositivo de cómputo: "cpu" o "cuda". |
fine_tune | bool | false | Fine-tunear el modelo con datos de referencia antes de inferencia. |
fine_tune_epochs | int | 50 | Cantidad de epochs de fine-tuning. |
fine_tune_lr | float | 0.001 | Learning rate del fine-tuning. |
fine_tune_batch_size | int | 8 | Batch size del fine-tuning. |
param_grid | dict | null | Grilla de parámetros para expansión de sweep. |
Engines Disponibles
| Engine | Key | GPU Necesaria | Descripción |
|---|---|---|---|
| Delineate-Anything | delineate-anything | Recomendada | Segmentación de instancias YOLO, agnóstico a resolución. |
Engines adicionales (todavía no integrados):
| Engine | Key | GPU Necesaria | Descripción |
|---|---|---|---|
| Embedding Clustering | embedding | No | K-means no supervisado sobre embeddings pre-computados. |
| Ensemble | ensemble | Depende | Consenso multi-engine (voto/unión/intersección). |
| Fields of The World | ftw | Sí | Segmentación semántica con modelos pre-entrenados. |
| GeoAI | geoai | No | Mask R-CNN, requiere fine-tuning. |
| DINOv3 | dinov3 | Sí | Backbone ViT + cabezal DPT con fine-tuning LoRA. |
| Prithvi-EO-2.0 | prithvi | Recomendada | Foundation model de NASA/IBM. |
Para ambientes sin GPU, delineate-anything funciona (inferencia más lenta) y embedding es nativamente CPU.
Sweeps
Grilla de Parámetros
Definí una key param_grid para correr automáticamente todas las combinaciones:
experiment_name: "full_sweep"
engine: "delineate-anything"
aoi_wkt: "POLYGON((......))"
reference_path: "data/input/reference_output.geojson"
device: "cpu"
engine_params:
tile_size: 1024
n_scenes: 5
start_date: "2025-01-01"
postprocess_params:
simplify_tolerance: 10.0
min_area_m2: 30000
param_grid:
detection_mode: ["tiled", "notile", "spectral"]
conf: [0.01, 0.05, 0.2]
split_n_clusters: [2, 3, 4]
min_area_m2: [30000, 50000]
Esto produce 3 × 3 × 3 × 2 = 54 experimentos. Máximo 200 combinaciones permitidas.
Cada experimento recibe un nombre único derivado de los parámetros variados: delineate-anything_conf_0.01_detection_mode_tiled_....
Múltiples Configs
Alternativamente, pasá múltiples archivos YAML:
python3 -m model.cli sweep --config exp_a.yaml exp_b.yaml exp_c.yaml
Métricas de Evaluación
Todas las áreas se calculan en coordenadas proyectadas UTM (metros²).
| Métrica | Fórmula | Interpretación |
|---|---|---|
reference_coverage | intersección / área_referencia | Cuánto de la referencia está cubierto (tipo recall). |
prediction_precision | intersección / área_predicción | Cuánto de la predicción se superpone con la referencia (tipo precision). |
iou | intersección / área_unión | Calidad general del overlap. |