Skip to content
Loading…
This layer is editable and shared with the public. To prevent unwanted editing, unshare this item or approve it for public data collection.
Finish setting up your layer
Describe your item below. Add fields on the Data tab. Configure editing on the Settings tab. Configure drawing and pop-ups through Map Viewer or Visualization tab.

Deep learning model to classify crops in multispectral satellite imagery. A brief summary of the item is not available. Add a brief summary about the item.

‎Deep learning package by

Item created: Jan 3, 2024 Item updated: Jan 1, 2025 Number of downloads: 6,996

Snapshot last refreshed:

1975 characters left.

Description

In modern agriculture, crop classification plays a crucial role. It provides essential information that can assist in tasks such as early crop monitoring and water irrigation management. However, classifying crops poses a significant challenge for policymakers due to the complexity involved in differentiating between crop types. The growing accessibility to satellite imagery with high temporal and spectral information and advancement in machine learning methods has paved the way for automated monitoring and management of agricultural production and land use on a large scale. 

The Prithvi-100M-multi-temporal-crop-classification model has been developed by NASA and IBM by finetuning their foundation model for earth observation - Prithvi-100m, using multi-temporal crop classification dataset. Use this model to automate the process of identifying and classifying different crops in multispectral satellite imagery. 

Using the model

Follow the guide to use the model. Before using this model, ensure that the supported deep learning libraries are installed. For more details, check Deep Learning Libraries Installer for ArcGIS.

Fine-tuning the model

This model can be fine-tuned using the ArcGIS API for Python. Follow the guide to fine-tune this model.

Input

Raster, mosaic dataset, or image service. These should be a composite of 3 time series scenes each with 6 bands, totaling 18 bands of either Harmonized Landsat 8 (HLSL30) or Harmonized Sentinel 2 (HLSS30). Retrieve these 3 scenes with low cloud cover occurring between March and September, ensuring that one scene is captured early in the season, another in the middle, and the third towards the end of the crop season. The model can also be used with level-2 products of Sentinel-2 and Landsat-8, yet it performs most effectively with HLSL30 and HLSS30.

The composite raster should contain the following 6 bands: Blue, Green, Red, Narrow NIR, SWIR, SWIR 2 for the three timestamps. 

Band numbers for the above mentioned bands are: 

  • For HLSS30 and Sentinel-2: Band2, Band3, Band4, Band8A, Band11, Band12 
  • For HLSL30 and Landsat 8: Band2, Band3, Band4, Band5, Band6, Band7

Output
Classified raster with the same 13 classes as in the multi-temporal crop classification dataset.

Applicable geographies

This model is expected to work well in USA.

Model architecture

This model packages IBM and NASA's Prithvi-100M-multi-temporal-crop-classification model and uses a self-supervised encoder developed with a ViT architecture and Masked AutoEncoder (MAE) learning strategy.

Accuracy metrics

This model has a mean intersection over union of 0.43 and mean accuracy of 64.06 percent.

Class IoU Accuracy
Forest 0.47 66.38
Corn
0.54 65.47
Soyabean
0.52 67.46
Wetlands
0.40 58.91
Developed/Barren 0.36 56.49
Open Water
0.68 90.37
Winter Wheat
0.49 67.16
Natural Vegetation
0.40 46.89
Fallow/Idle Cropland
0.34 59.23
Cotton
0.32 66.94
Sorghum 0.32 73.56
Alfalfa
0.30 66.75
Other
0.34 47.12


Training data

This model finetunes the pretrained Prithvi-100m model to classify crops on multispectral satellite images from the multi-temporal crop classification dataset.

Sample results
Here are a few results from the model.



Citations
Cecil, M., Kordi, H., Khallaghi, S., and Alemohammad, H. (2023). HLS Multi Temporal Crop Classification.

An in-depth description of the item is not available.

Layers

Ground Layers

Tools

Tables

Basemap

Project Contents:

Solution Contents

Contents

Layers

Screenshots

Terms of Use

https://downloads.esri.com/blogs/arcgisonline/esrilogo_new.png This work is licensed under the Esri Master License Agreement.

No special restrictions or limitations on using the item's content have been provided.

Comments (3)

Sign in to add a comment.

1542052797 Item Owner commented 10 months ago Delete Reply

错误 002667 无法使用标量参数初始化 Python 栅格函数。 [C:\Users\ADMINI~1\AppData\Local\Temp\2\ArcGISProTemp1352676\Prithvi_CropClassification.dlpk\ArcGISCropImageClassifier.py] Traceback (most recent call last): File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 52, in build_from_cfg return obj_cls(**args) TypeError: __init__() got an unexpected keyword argument 'avg_non_ignore' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 52, in build_from_cfg return obj_cls(**args) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\models\decode_heads\fcn_head.py", line 34, in __init__ super(FCNHead, self).__init__(**kwargs) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\models\decode_heads\decode_head.py", line 88, in __init__ self.loss_decode = build_loss(loss_decode) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\models\builder.py", line 35, in build_loss return LOSSES.build(cfg) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 212, in build return self.build_func(*args, **kwargs, registry=self) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\cnn\builder.py", line 27, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 55, in build_from_cfg raise type(e)(f'{obj_cls.__name__}: {e}') TypeError: CrossEntropyLoss: __init__() got an unexpected keyword argument 'avg_non_ignore' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 52, in build_from_cfg return obj_cls(**args) File "C:\Users\ADMINI~1\AppData\Local\Temp\2\ArcGISProTemp1352676\Prithvi_CropClassification.dlpk\_prithivi_archs_crop\temporal_encoder_decoder_crop.py", line 569, in __init__ self._init_decode_head(decode_head) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\models\segmentors\encoder_decoder.py", line 49, in _init_decode_head self.decode_head = builder.build_head(decode_head) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\models\builder.py", line 30, in build_head return HEADS.build(cfg) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 212, in build return self.build_func(*args, **kwargs, registry=self) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\cnn\builder.py", line 27, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 55, in build_from_cfg raise type(e)(f'{obj_cls.__name__}: {e}') TypeError: FCNHead: CrossEntropyLoss: __init__() got an unexpected keyword argument 'avg_non_ignore' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\ADMINI~1\AppData\Local\Temp\2\ArcGISProTemp1352676\Prithvi_CropClassification.dlpk\ArcGISCropImageClassifier.py", line 274, in initialize self.model = init_segmentor(config, ckpt) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\apis\inference.py", line 32, in init_segmentor model = build_segmentor(config.model, test_cfg=config.get('test_cfg')) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmseg\models\builder.py", line 48, in build_segmentor return SEGMENTORS.build( File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 212, in build return self.build_func(*args, **kwargs, registry=self) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\cnn\builder.py", line 27, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "C:\Program Files\ArcGISpro\bin\Python\envs\arcgispro-py3\lib\site-packages\mmcv\utils\registry.py", line 55, in build_from_cfg raise type(e)(f'{obj_cls.__name__}: {e}') TypeError: TemporalEncoderDecoderCrop: FCNHead: CrossEntropyLoss: __init__() got an unexpected keyword argument 'avg_non_ignore' 无法使用标量参数初始化 Python 栅格函数。

1542052797 Item Owner commented 10 months ago Delete

ArcGIS Pro3.1

spathak_deldev Item Owner commented 10 months ago Delete

Hi, can you please share the ArcGIS Pro and python api version.

Item Information

LowHigh

Item Information

LowHigh

Make your item easy to find, understand, and use by providing this information.

    Details

    Dashboard views: Desktop

    Creating data in:

    Published as:

      Other Views:

        Dependent items in the recycle bin

          Applicable: 2d

          Size: 1,488.065 MB

          Attachments size: 0 KB

          ID: 39e598cb9eed4f1eac28f8484c5f3679

          Image Count: 0

          Image Properties

          Layer Drawing

          Using tiles from a cache

          Dynamically from data

          Share
          Owner

          esri_analytics

          Folder

          Categories

          This item has not been categorized.

          Assign Category
          Edit Tags
          Credits (Attribution)
          No acknowledgements.

          IBM, NASA

          URL View
          WMTS View
          Loading…