torchgeo/torchgeo

Time Series Support

Open

#2,382 opened on Oct 31, 2024

 (3 comments) (2 reactions) (0 assignees)Python (557 forks)github user discovery
datasetsdocumentationgood first issuemodelssamplerstaskstransformsutilities

Repository metrics

Stars
 (4,059 stars)
PR merge metrics
 (Avg merge 6d 12h) (80 merged PRs in 30d)

Description

This issue is designed to track progress towards full time series support in TorchGeo. If you are interested in helping with this effort, please join the #time-series channel on Slack and attend our weekly meetings.

Datasets

Required changes

  • Replace rtree with geopandas: #2747
  • Replace fiona with geopandas: #2962
  • Spatial-only intersection: #2837
  • Xarray support: #509, #1490, #2945
  • Collation functions for padding: #2921
  • Convert change detection datasets: #2862, #2863, #2878, #2879, #2906, #3028
  • Return time series: #2308, #3183
  • Convert time series datasets: #3042, #2921, #3368, #3369, #3371, #3372
  • Splitters: guarantee non-overlapping spatial and/or temporal splits: @hkristen

Desired changes

  • Replace BoundingBox with slicing: #2804
  • Support Polygon ROIs in all splitters: #2835
  • Deprecate BoundingBox: #2847
  • Store true image footprint: #2903
  • Properly handle vector datasets: @isaaccorley
  • Cache geopandas index: @isaaccorley
  • STACDataset: see #stac channel
  • ERA5
  • CMIP6
  • Support integer indexing?: @adamjstewart
  • Unify GeoDataset and NonGeoDataset?: #1353
  • Intersection/Union multiple queries?: #2408
  • Tuple/MultiQuery dataset?: #877

Samplers

Required changes

  • Support Polygon ROIs in all samplers: #2812
  • Separate spatial and temporal samplers: #3552
  • Ensure samplers do not sample outside Polygon bounds: #3552
  • Visualization: visualize an entire epoch with polygons and points: #3552

Desired changes

  • Support weighted samplers?: #757
  • Pre-computation?: run sample_points once per epoch for debugging?: #2300

Transforms

Models

1D

  • L-TAE: #2867
  • Presto: #2929
  • Tessera: #3243
  • Seq2Seq: #2639
  • TempCNN
  • Chronos v1, v2: @cnagda?
  • Galileo: #3305

2.5D

  • BTC: #2926
  • ChangeStar: #157
  • ChangeViT: #2910
  • FC-Siam: #108, #345

3D

  • Satlas: #1358, #1884, #2038
  • ConvLSTM: #2898
  • OlmoEarth: #3517
  • CNN-LSTM: #2938
  • AnySat
  • OmniSat
  • Prithvi v1, v2: @isaaccorley
  • SatMAE: @isaaccorley
  • SkySense v1, v2

4D

  • Aurora: #2823
  • ACE: #3402

Tasks

  • TC -> scalar, classification: TemporalClassification
  • TC -> scalar, regression: TemporalRegression (#3668)
  • 2CHW -> HW, classification: ChangeDetection (#2422, #2890)
  • TCHW -> scalar, classification: SpatioTemporalClassification (#3591)
  • TCHW -> scalar, regression: SpatioTemporalRegression (#3591)
  • TCHW -> HW, classification: SpatioTemporalSegmentation (#3671)
  • TCHW -> HW, regression: SpatioTemporalPixelwiseRegression (#3086)
  • TCHW -> BHW, classification: SpatioTemporalInstanceSegmentation
  • TCZYX -> TCZYX, regression: WeatherForecasting

Tutorials

  • 1D: air pollution tutorial (#3669)
    • Dataset: air quality (#3619)
    • Model: L-TAE (#2867)
    • Trainer: TemporalRegressionTask (#3668)
  • 2.5D: Change detection tutorial (#3222)
    • Dataset: OSCD100 (#3221)
    • Model: BTC (#2926)
    • Trainer: ChangeDetectionTask (#2422)
  • 3D: Crop type mapping tutorial (#3706)
    • Dataset: PASTIS100 (#3265)
    • Model: ConvLSTM (#2898)
    • Trainer: SpatioTemporalSegmentationTask (#3671)
  • 4D: Weather forecasting tutorial (#3654)
    • Dataset: WeatherBench (#3649)
    • Model: Aurora (#2823)
    • Trainer: WeatherForecastingTask (not strictly required right now)

Outdated discussions

  • #640
  • #1544

Contributor guide