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
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
Tools
Tables
Basemap
Project Contents:
Solution Contents
Contents
Layers
Screenshots
Terms of Use
No special restrictions or limitations on using the item's content have been provided.
Details
Dashboard views: Desktop
Source:
Creating data in:
Published as:
Other Views:
Dependent items in the recycle bin
Applicable: 2d
Size: 1,488.065 MB
ID: 39e598cb9eed4f1eac28f8484c5f3679
Image Count: 0
Image Properties
Layer Drawing
Using tiles from a cache
Dynamically from data
Share
Owner
Folder
Categories
This item has not been categorized.
Credits (Attribution)
No acknowledgements.IBM, NASA
Comments (3)
错误 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 栅格函数。
ArcGIS Pro3.1
Hi, can you please share the ArcGIS Pro and python api version.