nasaharvest / crop-mask

End-to-end workflow for generating high resolution cropland maps
Apache License 2.0
94 stars 26 forks source link

Crop Map Generation

Status Status

End-to-end workflow for generating high resolution cropland maps.

Contents

Cropland gif

Training a new model

To train a new model run the following colab notebook (or use it as a guide): Open In Colab

Two models are trained - a multi-headed pixel wise classifier to classify pixels as containing crop or not, and a multi-spectral satellite image forecaster which forecasts a 12 month timeseries given a partial input:

models

Adding new labeled data

Open In Colab To add new labeled data follow the OpenMapFlow documentation OR run the linked colab notebook.

Setting up a local environment

Ensure you have anaconda installed.

1. For development

Ensure you have gcloud installed.

conda install mamba -n base -c conda-forge  # Install mamba
mamba env create -f environment-dev.yml     # Create environment with mamba (faster)
conda activate landcover-mapping            # Activate environment
gcloud auth application-default login       # Authenticates with Google Cloud
pre-commit install                          # Setup automatic linting on every commit
pre-commit run --all-files                  # Run linting on all files

2. For shapefile notebook

conda env create -f environment-lite.yml    # Create environment
conda activate landcover-lite               # Activate environment
jupyter notebook

Tests

The following tests can be run against the pipeline:

flake8 . # code formatting
mypy .  # type checking
python -m unittest # unit tests

# Integration tests
python -m unittest test/integration_test_model_bbox.py
python -m unittest test/integration_test_model_evaluation.py

Steps to resolve module related issues on a Windows environment

I]Steps to resolve the issue related with 'fiona' and 'geopandas' module

pip uninstall geopandas  #if the package is already installed in the environment
pip install pipwin
pipwin install gdal
pipwin install fiona
pip install geopandas

II]Steps to resolve the issue related with 'netcdf' module

pip uninstall netcdf4
pip install netcdf4

III]Steps to resolve the warning encountered with the 'pyproj' module
mamba remove pyproj or pip uninstall pyproj
pip install pyproj

Previously generated crop maps

Google Earth Engine:

Zenodo

Reference

If you find this code useful, please cite the following paper:

Gabriel Tseng, Hannah Kerner, Catherine Nakalembe and Inbal Becker-Reshef. 2020. Annual and in-season mapping of cropland at field scale with sparse labels. Tackling Climate Change with Machine Learning workshop at NeurIPS ’20: December 11th, 2020