Skip to content

Model & Data Cards

Structured metadata cards for published models and datasets. Cards make artifacts discoverable, reproducible, and interoperable with HuggingFace Hub and the broader geospatial ML community.

Cards are not a separate system - they are a view of existing artifact metadata (provenance, ml: schema, geo: extent) formatted for human consumption and platform interop.

Why Cards

ProblemWhat cards solve
"Can I use this model on my data?"Intended use, input requirements, geographic/temporal validity
"How well does it perform?"Structured evaluation results with dataset and methodology
"What are the known limitations?"Explicit out-of-distribution warnings, bias assessment
"Where did this dataset come from?"Collection process, source products, processing steps
"Is this compatible with my model?"Embedding properties, grid spacing, band alignment

Model Cards

A model card describes a trained model artifact. Based on the geo-embeddings model card specification, extended with folia provenance.

Schema

The card: block is optional on model layers:

yaml
layers:
  models/crop-segmentation:
    type: model
    uri: catalog://models/crop-segmentation-sentinel2@v3

    ml:
      task: segmentation
      architecture: unet
      foundation_model: prithvi-100m
      format: onnx
      input_bands: [B02, B03, B04, B08]
      input_shape: [4, 6, 224, 224]
      output_classes:
        - { id: 0, name: background }
        - { id: 1, name: corn }
        - { id: 2, name: soybean }
        - { id: 3, name: wheat }
      metrics:
        miou: 0.61
        accuracy: 0.83

    card:
      description: >
        Crop type segmentation model for European agriculture,
        fine-tuned from Prithvi-100M on HLS imagery.
      intended_use: Regional crop mapping from Harmonized Landsat Sentinel imagery
      limitations:
        - Trained on European crops only  - not validated for tropical agriculture
        - Requires 6+ cloud-free observations per growing season
        - Accuracy degrades below 60% for fields smaller than 0.5 ha
      license: Apache-2.0
      citation: "doi:10.1234/crop-seg-2024"
      provider: NASA IMPACT
      funder: NASA

    geo:
      bbox: [-10.0, 35.0, 30.0, 60.0]
    temporal:
      range: [2024-01-01, 2024-12-31]

Card Fields

FieldTypeRequiredDescription
descriptionstringYesFree-text explanation of the model
intended_usestringYesWhat the model is designed for
limitationslistNoKnown constraints, failure modes, geographic/temporal bounds
licensestringYesSPDX license identifier
citationstringNoDOI or citation string
providerstringYesOrganization or individual that developed the model
funderstringNoFunding institution(s)
cautionslistNoWarnings for users (e.g., "not trained on snow cover")

Embedding Properties

For foundation models and embedding-producing models, additional fields align with the geo-embeddings specification:

FieldTypeDescriptionValues
embedding_spatial_typeslistSpatial type of embeddingspixel, patch, scene
embedding_temporal_typelistTemporal type of embeddingssingle-date, multi-date
embedding_spatial_contextstringWhether spatial context extends beyond the embedding unitfree text
embedding_temporal_contextstringWhether temporal context extends beyond the embedding unitfree text
yaml
layers:
  models/clay-v1:
    type: model
    uri: huggingface://made-with-clay/Clay

    ml:
      task: embedding
      architecture: vit
      embedding_dim: 768
      format: safetensors

    card:
      description: >
        Clay Foundation Model v1. A vision transformer pre-trained
        on global Sentinel-2 imagery using masked image modeling.
      intended_use: General-purpose geospatial embedding extraction
      limitations:
        - Pre-trained on Sentinel-2 L2A only
        - Single-date embeddings (no temporal stacking)
      license: Apache-2.0
      provider: Clay
      embedding_spatial_types: [patch]
      embedding_temporal_type: [single-date]
      embedding_spatial_context: "spatial context beyond embedding spatial type"
      embedding_temporal_context: "temporal context determined by embedding temporal type"

Pretraining Metadata

For models where training details are known:

FieldTypeDescription
pretraining.data_typeslistData types used: multispectral, SAR, RGB, DEM, etc.
pretraining.product_nameslistSource data products (e.g., sentinel-2-l2a)
pretraining.training_strategystringTraining approach: MIM, Contrastive, Supervised, etc.
pretraining.spatial_extentbboxGeographic extent of training data
pretraining.temporal_extentrangeTemporal extent of training data
pretraining.patch_sizeintegerInput patch size in pixels
yaml
    card:
      # ...
      pretraining:
        data_types: [multispectral]
        product_names: [sentinel-2-l2a]
        training_strategy: MIM
        spatial_extent: [-180, -90, 180, 90]
        temporal_extent: [2017-01-01, 2023-12-31]
        patch_size: 224

Evaluation Results

Structured evaluation results per downstream task, following the HuggingFace model-index pattern:

yaml
    card:
      # ...
      evaluations:
        - task: crop field segmentation
          dataset: PASTIS
          split: test
          metrics:
            - { type: miou, value: 0.61 }
            - { type: accuracy, value: 0.83 }
            - { type: f1, value: 0.72 }
          source: "https://arxiv.org/abs/..."
FieldTypeRequiredDescription
evaluations[].taskstringYesDownstream task name
evaluations[].datasetstringYesEvaluation dataset name
evaluations[].splitstringNoDataset split (e.g., test, val)
evaluations[].metricslistYesMetric type/value pairs
evaluations[].sourcestringNoLink to evaluation methodology or paper

Data Cards

A data card describes a published dataset or embedding dataset. Based on the geo-embeddings data card specification.

Schema

yaml
layers:
  embeddings/clay-conus-2024:
    type: raster
    uri: catalog://embeddings/clay-conus-2024@v1

    ml:
      task: embedding
      foundation_model: clay-v1
      embedding_dim: 768

    card:
      description: >
        Pre-computed Clay v1 embeddings covering the contiguous US,
        derived from Sentinel-2 L2A imagery at 10m resolution.
      license: CC-BY-4.0
      creator: folia
      intended_use: >
        Linear probing, nearest-neighbor search, and downstream
        classification without re-running the foundation model.
      limitations:
        - Single-date composites (monthly median)  - no intra-month variation
        - Cloud-masked gaps in Pacific Northwest winter months

      source_data:
        products: [sentinel-2-l2a]
        model_name: Clay-v1
        model_link: "https://huggingface.co/made-with-clay/Clay"

      grid_spacing: [10, 10]
      postprocessing: null
      quantization: null

    geo:
      bbox: [-125, 24, -66, 50]
    temporal:
      range: [2024-01-01, 2024-12-31]

Card Fields

FieldTypeRequiredDescription
descriptionstringYesWhat this dataset contains
licensestringYesSPDX license identifier
creatorstringYesOrganization or individual that created the dataset
funderstringNoFunding institution(s)
intended_usestringNoHow this dataset is meant to be used
limitationslistNoKnown gaps, coverage issues, quality caveats
citationstringNoDOI or citation string

Source Information

For datasets derived from other data (embeddings, composites, predictions):

FieldTypeRequiredDescription
source_data.productslistYesSource data products used
source_data.model_namestringCond.Model used to generate (for embeddings)
source_data.model_linkstringCond.URL to the model card

Processing Details

FieldTypeDescription
grid_spacing[x, y]Output footprint size in meters
postprocessingstringAny post-generation processing (smoothing, gap-filling, etc.)
quantizationstringQuantization applied to values (e.g., int8), or null

Dataset Statistics

yaml
    card:
      # ...
      statistics:
        features:
          - { name: embedding, dtype: float32, shape: [768] }
          - { name: h3_index, dtype: string }
          - { name: timestamp, dtype: datetime }
        record_count: 14_200_000
        download_size: 42GB
        spatial_coverage: 0.87    # fraction of AOI with valid data

HuggingFace Interop

folia publish can generate HuggingFace-compatible model and data card YAML from the card: block. This maps folia's richer provenance model onto the HF frontmatter format.

folia fieldHF model card field
card.licenselicense
card.providerprovider
card.descriptiondescription
ml.architecturemodel_architecture
ml.embedding_dimembedding_dimension
card.embedding_spatial_typesembedding_spatial_types
card.evaluationsmodel-index
card.pretrainingpretraining
geo.bboxpretraining.spatial_extent
temporal.rangepretraining.temporal_extent

For data cards:

folia fieldHF data card field
card.creatorcreator
card.source_data.productsinference_datasets
card.source_data.model_namemodel_name
card.grid_spacinggrid_spacing
card.quantizationquantization

The full geo-embeddings specification defines the canonical field names and acceptable values for geospatial foundation model metadata on HuggingFace Hub.

Relationship to Provenance

Cards complement folia's provenance chain - they don't replace it. Provenance tracks the full computational lineage (source data -> operations -> output). Cards summarize the human-relevant context that provenance alone doesn't capture: intended use, known limitations, ethical considerations.

Provenance: source imagery -> cloud_filter -> chip -> train -> model
Card:       "This model is for European crop mapping. Don't use it in the tropics."

Both are attached to the same artifact in the catalog.

Licensed under CC-BY-4.0