ClarkCGA / multi-temporal-crop-classification-baseline

Baseline model for crop type segmentation as part of the HLS FM downstream task evaluations
19 stars 6 forks source link
crop-type-mapping foundation-models geospatial machine-learning remote-sensing

Baseline Model for Segmentation Fine-Tuning of the HLS Foundation Model

This repo contains the code, performance metrics and trained model weights for a supervised CNN model as the baseline for multi-temporal crop type segmentation fine-tuning of the HLS Foundation Model (FM). The FM is released by NASA and IBM here, and the fine-tuned FM model for this task is presented here. You can also access the training dataset for this task here.

This project is funded by an award from NASA to the Center for Geospatial Analytics at Clark University.

Instructions to run the code using Docker:

Step 1- Change directory to an empty folder in your machine and clone the repo.

$ cd /to_empty/dir/on_host/

$ git clone  git@github.com:ClarkCGA/multi-temporal-crop-classification-baseline.git

$ cd path/to/cloned directory/

Step 2- Make sure the Docker daemon is running and build the Docker image as following:

$ docker build -t <image_name>:<tag> .

Example:

$ docker build -t semseg_baseline:v1 .

step 3- Run the Docker image as a container from within the cloned folder:

$ docker run --gpus all -it -p 8888:8888 -v <path/to/the/cloned-repo/on-host>:/home/workdir -v <path/to/the/dataset/on-host>:/home/data  <image_name>:<tag>

This command will start a container based on the specified Docker image and starts a JupyterLab session. Type localhost:8888 in your browser and copy the provided token from the terminal to open the JupyterLab.

step 4- Run the pipeline:

Open the jupyter notebook located at notebooks/main.ipynb.

Modify the "default_config.yaml" or create your own config file and run the cells as explained in the notebook.

Model Weights

The model weights trained on the dataset for 100 epochs with the parameters specified in the "default_config.yaml", is stored in the model_weights/multi_temporal_crop_classification.pth. Instructions to load and use the pre-trained model for zero-shot inference or warm-up training is explained in the notebook.

Evaluation metrics:

Confusion Matrix

Overall Metrics:

Metric Value
Overall Accuracy 0.63056
Mean Accuracy 0.61915
Mean IoU 0.42086
mean Precision 0.57392
mean Recall 0.57492
Mean F1 Score 0.57251

Class-wise Metrics:

Class Accuracy IoU Precision Recall F1 Score
Natural Vegetation 0.6366 0.4577 0.6196 0.6366 0.6280
Forest 0.7171 0.4772 0.5878 0.7171 0.6461
Corn 0.6332 0.5226 0.7494 0.6332 0.6864
Soybeans 0.6676 0.51675 0.6957 0.6676 0.6814
Wetlands 0.6035 0.4109 0.5628 0.6035 0.5825
Developed/Barren 0.6022 0.4637 0.6684 0.6022 0.6336
Open Water 0.8775 0.7596 0.8496 0.8775 0.8633
Winter Wheat 0.6639 0.4950 0.6606 0.6639 0.6622
Alfalfa 0.5902 0.3847 0.5250 0.5902 0.5557
Fallow/Idle Cropland 0.5293 0.3599 0.5292 0.5293 0.5293
Cotton 0.4529 0.3258 0.5371 0.4529 0.4914
Sorghum 0.6152 0.3909 0.5174 0.6152 0.5621
Other 0.4589 0.3268 0.5316 0.4589 0.4926