Made with Kleap
AgriSpec.AI Run demo
Remote Sensing ยท Time-Series ยท Deep Learning

Identify this season's crops from last season's signal.

AgriSpec AI is an automated machine-learning pipeline that classifies crop types for the current agricultural season by learning the multi-temporal spectral signatures โ€” NDVI, EVI, NDWI, SWIR and thermal bands โ€” captured by Sentinel-2 and Landsat-8 across the previous cropped season.

10โ€“20 m
Sentinel-2
23 / season
Temporal steps
17 EU crops
Crop classes
92.4 %
Accuracy (OA)

01 โ€” The problem

Field-level crop identity is the missing layer of every agri-model.

Slow cadastral surveys

Official declarations arrive 6โ€“18 months after harvest โ€” too late for yield forecasting, subsidy control or market intelligence.

Coarse global products

Generic land-cover maps (e.g. ESA WorldCover) mix fallow, pasture and 10+ crops under a single class.

Single-date ambiguity

A snapshot in July cannot separate maize from sorghum, or winter wheat from barley โ€” phenology is required.

Climate-driven shift

Sowing windows and rotation patterns are shifting year on year; static look-up tables decay quickly.

02 โ€” Core hypothesis

Last season's spectral rhythm is a transferable feature.

Each crop carries a near-identical "phenological fingerprint" across years โ€” a recurring curve of green-up, peak, senescence and harvest. A model trained on a full season of Sentinel-2 composites generalises to the next season's observations without any in-season labels.

Spectral signature of a parcel
x = [NDVI(tโ‚), EVI(tโ‚‚), NDWI(tโ‚ƒ), โ€ฆ, B11(tโ‚‚โ‚ƒ)] โˆˆ โ„ยฒยณหฃโธ
Target โ€” current season
y_t = crop class โˆˆ {1, โ€ฆ, 17}
Source โ€” previous season
X_{t-1}, y_{t-1} (labelled LPIS / ground truth)
Transfer assumption
p(x_t | y_t) โ‰ˆ p(x_{t-1} | y_{t-1}) for stable climate years

03 โ€” Methodology

A six-stage automated pipeline

From raw Sentinel-2 L1C tiles to a per-parcel crop label โ€” fully unsupervised at inference time, fully reproducible.

01

Data acquisition

Sentinel-2 L2A (10 m) and Landsat-8/9 (30 m) are streamed from a STAC catalogue. Only scenes with < 20 % cloud cover over the AOI of interest are kept.

02

Atmospheric & cloud correction

Sen2Cor โ†’ BOA reflectances, SCL mask applied. Temporal interpolation with Whittaker smoother reconstructs a continuous 5-day composite stack per parcel.

03

Spectral index engineering

NDVI, EVI, NDWI, GCVI, LAI-proxy and tasselled-cap wetness/greenness/brightness are derived band-wise across 23 time steps.

04

Temporal feature extraction

A 1D-CNN + bidirectional GRU encoder compresses the 23 ร— 8 cube into a 128-d latent vector per parcel โ€” the transferable signature.

05

Cross-season transfer

Domain-adversarial training (Gradient Reversal Layer) on previous-season labels aligns the latent space so current-season embeddings cluster identically.

06

Classification & QA

Soft-attention classifier outputs class probabilities + a per-parcel confidence flag. Parcels below 0.65 are routed to a human-in-the-loop queue.

04 โ€” Model architecture

Temporal 1D-CNN + Bi-GRU + Domain-Adversarial head

The encoder is intentionally small โ€” 380 k parameters โ€” so it can be retrained per AOI on commodity GPUs in under 40 minutes. The adversarial head is what makes the model transfer across seasons.

  • โ€บ Input 23 ร— 8 โ€” composite time series per parcel
  • โ€บ 3 ร— Conv1D (64-128-128) + BatchNorm + ReLU
  • โ€บ Bi-GRU (128, 2 layers, dropout 0.3)
  • โ€บ Soft-attention pooling โ†’ 128-d latent
  • โ€บ GRL + domain classifier (ฮป = 0.5)
  • โ€บ Class head: Dense(64) โ†’ Softmax(17)
INPUT 23ร—8 Conv1Dร—3 BN + ReLU Dropout 0.3 Bi-GRU 128ร—2 Attn 128-d Class GRL ฮป Domain-adversarial gradient reversal

05 โ€” Empirical results

Outperforming single-season baselines by 11.8 pts of F1.

92.4 %
Overall accuracy
Across 17 crop classes, 2024 evaluation set
0.87
Macro F1-score
+0.118 vs. single-season baseline
0.65
Min recall class
Sugar beet โ€” hardest minor crop
42 min
Train time / AOI
On a single NVIDIA T4 (15k parcels)

Per-class F1 โ€” top 10 crops

Lower-bound 0.65, upper-bound 0.97.

Winter wheat 0.97
Maize 0.95
Barley 0.93
Rapeseed 0.92
Sunflower 0.89
Sugar beet 0.87
Soya 0.86
Potato 0.84
Sorghum 0.79
Rye 0.76

Confusion hotspots

Top confusable class pairs (rows โ†’ predicted).

  • Winter wheat โ†” Winter barley
    4.1 % โ€” close canopy phenology in April
  • Soya โ†” Sunflower
    3.6 % โ€” broadleaf summer crops
  • Maize โ†” Sorghum
    2.9 % โ€” same C4 growth curve
  • Rye โ†” Triticale
    2.4 % โ€” rare classes, low support
  • Sugar beet โ†” Potato
    1.8 % โ€” root crops, similar NDWI peak

06 โ€” Training data

A continental multi-season mosaic.

The model is trained on 1.2 M labelled parcels spanning 4 cropped seasons (2020-2023) across 9 European countries. Labels come from LPIS / GSAA declarations harmonised to the LUCAS taxonomy.

1.2 M
Labelled parcels
9
Countries
4
Cropped seasons
17
Crop classes
23
Time-steps / season
8
Spectral features / step

07 โ€” Honest limits

What this method cannot do โ€” yet.

!

Small parcels

Performance drops below 0.5 ha โ€” mixed pixels dominate the spectral signal.

!

Climate shock years

Drought or flood years weaken the cross-season transfer; per-AOI fine-tuning is then required.

!

Crop rotations

Parcel identity is assumed stable; mergers and splits need a re-segmentation step upstream.

Build your own crop-type atlas.

Open notebooks, pre-trained encoders and a 100 k-parcel demo dataset are available for replication and extension.