/


Hello there! So, you have decided to use satellite imagery for agricultural purposes and prepare your own satellite imagery dataset? GREAT! You are in the right place.
This article is the result of working in Omdena’s AI challenge to estimate crop yield with the UN World Food Program in Nepal. The problem was tough, challenges were huge, and resources were scarce. Still, a community of 36 collaborators managed to build a solution with 89% accuracy. This article focuses on dataset creation.
Though the following recommendations are mainly from our experience with crop types identification project, we believe they are generic and will apply to any agricultural Machine Learning project such as identifying crop growth rate/stage or checking pest infestation in crops or checking for crop density, etc.
Happy reading ☺
Rubbish in — rubbish out’ is a popular phrase referring to poor ML model results caused by poor quality datasets.
No matter how good a model architecture is, it’s useless if not trained with appropriate good data. At the same time, the opposite holds true — sometimes even the basic model architecture is enough to get the job done if fed with a proper dataset for training.
And while so much has been written about ML model building, we think that dataset preparation has been a bit disregarded and this is understandable because it ain’t too sexy of a subject and takes forever to get it right. Unfortunately, our path to realizing the importance of ‘creating a good dataset’ was painful and agonizing.
So what really is a ‘good’ dataset? Every project is different and has unique requirements for its dataset.
Let’s start with the characteristics of an expected outcome — our ML model. It seems that a good model is the one that achieves the best results on a variety of input data — we say that model generalizes well and we call it ‘robust’.
In short, to achieve this, we need to train the model with high quality, precisely labelled datasets representing the full spectrum of input possibilities. The importance of data in ML can be understood from the fact that ‘typically 80% of an ML project is spent on data — analysis, gathering & engineering’.
The key characteristics of a good dataset are listed below:
One of the key challenges with ML projects is that exact requirements for data is NOT known at the time of data analysis & gathering and sometimes is known only after the model is built and shortcomings understood. So, an iterative approach to creating and refining dataset in order to improve model metrics is a safe bet.

Satellite images can be in the visible colors (RGB) and in other spectra, e.g. data within specific wavelength ranges across the electromagnetic spectrum like Near-Infrared. There are also elevation maps, usually made by radar images which can be used to estimate vegetation growth rate, etc. Normally, the interpretation and analysis of satellite imagery are conducted using specialized remote sensing software but advancements in AI have made the autonomous, large-scale analysis of imagery possible.
We have listed some of the key points to consider:
Almost every stage of the project is dependent on the Ground Truth (GT) data provided. In satellite imagery for agricultural purposes case, it should contain all the details about the crop fields, which will help to identify them individually, so the information can be fed to ML models via appropriate datasets for correct feature extractions. In many cases, GT data is in the form of a file containing required information gathered during field surveys. Usually, it’s a simple spreadsheet file filled with a full variety of field information that can be directly used for labeling. But in practice, we may not have all the required information and should be cautious to pay attention to the content of the file for two main reasons:
In short, the goal of the Ground Truth data should be to provide complete, well-balanced and properly distributed satellite imagery dataset. It should also serve as a reference on how to recognize different objects of interest to facilitate complete and reliable labeling.
It should have the following characteristics:
The key point to remember is that Ground Truth data quality will have a big impact on the dataset created, labeling/masking done on a dataset, and ultimately results of the solution.
With the advent of satellites launched by many countries and private organizations, satellite imagery has become more accessible to the general public for a variety of applications. Some of the more popular programs are Landsat (by USGS & NASA, 30m resolution since the early 1980s), MODIS (by NASA, near-daily satellite imagery of earth in 36 spectral bands since 2000), Sentinel (by ESA, 5 days frequency of earth in 16 spectral bands since 2016) and ASTER (by NASA, detailed maps of land surface temperature, reflectance, and elevation).
Several private organizations sell raw & processed satellite imagery with customized data as required by customers. Few popular ones are GeoEye (since Sep2008, images with a ground resolution of 0.41 meters (16 inches) in the panchromatic or black and white mode also has multispectral or color imagery at 1.65-meter resolution or about 64 inches), DigitalGlobe (imagery with 0.46m & 0.6m panchromatic only spatial resolution, also images with 0.31 m spatial resolution), OneAtlas platform (by Airbus, Optical & Radar Earth Observation), Spot Image (by Bratislava, images with 1.5 m for the panchromatic channel, 6m for multi-spectral and 0.50 meter or about 20 inches) and ImageSat International (also known as “EROS” satellites, images can be used for mapping, border control, infrastructure planning, agricultural monitoring, environmental monitoring, disaster response, training, and simulations, etc.).

While RGB bands in satellite images can show the crop fields, the terrain of these fields also plays an important role. For example, crop fields in plains tend to be large, with more regular shapes and similar crops are usually in the neighborhood; whereas in hilly areas crop fields tend to be small, different shapes & altitude and mix of other vegetation may be surrounding the fields; similarly in forest areas crop fields tend to be surrounded by thick trees without a clear visual representation of fields and their borders. Hence understanding the various terrains the crop fields are in becomes important.
The recommendation is to look at satellite images from different time periods/seasons to understand the terrain of an area of interest, include images from various terrains in the dataset, consider the challenges with images from different areas while labeling/marking and address those challenges as much as possible with appropriate labeling.

Satellite images from all the months covering various growth stages of crops should be added to the dataset. These images will help the ML model to generalize well and be able to accurately identify crops irrespective of the growth stage of crops. A better understanding of the crops’ growth cycle and seasonal crops cycle can help to find satellite images of crops at different stages of growth.
While looking for temporal data, there is a possibility that a few months in a specific year do not have any images due to bad weather or climatic conditions. In such cases, consider choosing images from other years for these months. An important assumption that needs to be validated here is that the crop cycle & seasonal crops for those years are the same as the year with ground truth. In some cases, the same crop can have a different growth cycle in different regions.
In our case with Nepal, there were 10 to 12 varieties of rice widely adopted by farmers, having two main growing seasons depending on rice variety: 1) Spring rice (February/March to June/July): Chaite 2, Chaite 4, Ch 45, Bindeswar, etc. and; 2) Main season rice (June/July to October/November): Mahsuri, Savitri, etc. (Source).
Another important point to consider regarding temporal data is the land use pattern of cultivated fields. Though there might be a defined crop cycle for each crop, there can be scenarios where the same crop fields are used for different crop cultivation in different seasons (ex: seasonal short-term crops may be cultivated in the same fields after the main crop’s harvesting is done and before next sowing). Missing out on satellite images from different months representing seasonal crops will result in an incomplete dataset, resulting in inaccurate ML models.
Talking to the subject matter experts/farmers in the area of interest to understand the temporal data to be captured is critical at this stage of dataset creation.
The resolution of satellite images is relatively high and image processing is time-consuming. Similarly, depending on the sensor from which the imagery was created, appropriate processing is required before consuming the images. For the same reason, weather (rain, clouds, etc.) & environmental (pollution, haze, etc.) conditions can affect image quality. For such reasons, publicly available satellite image datasets are typically processed for visual or scientific commercial use by third parties.
Just like any other digital image, the resolution of satellite images is critical for the purpose and varies depending on the instrument used and the altitude of the satellite’s orbit. There are four types of resolution when discussing satellite imagery in remote sensing: spatial (pixel size of an image representing the size of the surface area being measured on the ground), spectral (wavelength interval size and number of intervals), temporal (amount of time/days that passes between imagery collection periods for a given surface location) and radiometric (levels of brightness/contrast).

Though there are open datasets of satellite imagery available to the public free of cost, quality images to be used for specific purposes like crop growth detection, crop type identification, etc. are expensive. The higher the quality, the higher the cost. As simple as that.
But not always high-quality images are required. For example, for a project with the objective of identifying building structures in satellite images, we may not require images with spatial resolution as low as 30cm or so.
So, there’s no standard guideline or single rule suggesting the minimal or maximum image quality required for a project. It all depends on the objective of the project. However, there are two main factors that need to be considered before deciding on the quality of images to use:
The decision on point 1 is quite obvious — we can test the ML models using images of different quality and choose the one that meets the project’s requirements/metrics with the lowest quality images.
The decision on point 2 is more subjective in terms of what objects are to be identified on images and should be agreed upon at the beginning of the project by carefully assessing the labeling capabilities. But, the image quality must be good enough for labeling, so people can easily see and draw masks around all objects/classes of interest.
Solutions that require small objects to be identified, where distinguishing edges is more important than counting the overall coverage, require very high-quality images. That was the case with Omdena’s Trees Recognition Challenge where the goal was to identify trees close to electricity lines in order to prevent power outages and fires sparked. Here, extremely accurate masking, close to the tree’s edges were necessary. For that, high-resolution 0.5m spatial resolution pictures had to be used. Thus, not only trees but also little bushes and shadows had to be precisely annotated. And that paid off.
With only 150 original images and very basic transformations, using Deep UNet Model, the team achieved around 95% accuracy.

For our crop identification project in Nepal, such a high resolution was not necessary as crop field shapes were pretty much regular (except for the ones in hilly areas), with borders being mostly straight lines. So, in this project, the ability to distinguish similar objects (like rice vs. grass) at the labeling stage was the main factor to decide on image quality. We ended up using Sentinel2 Level-1C satellite images with 13 spectral bands from the Copernicus program (European Space Agency) with a maximum spatial resolution of 10m per pixel for certain bands. Unfortunately, it turned out that the max zoom level to get clear RBG images was only 100m. And that zoom level was not good enough for labeling since the crop field areas appear too small in the agricultural setting as seen in the images below (actual images used were 500×500 dimension and yet many fields appeared too small /unclear to recognize).


Since data from RGB channels are not enough for our AI model to identify crops, we could use data from the other spectral bands in Sentinel2 imagery to calculate different vegetation indices, include them in images, and then train ML models with that dataset. As suggested in this paper, the dataset can be based on images with other bands including RGB and appropriate vegetation indices.
However, without good RGB images, the problem of proper labeling/masking persists. And it seems that there are basically very few options as listed below:
As seen in the above section to build a satellite imagery dataset, for specialized tasks like differentiating vegetation types, it is required to analyze data contained in other spectral bands (ranging from 3 to 16 bands) of satellite images other than just RGB bands. This is where Vegetation Indices (VIs) play a critical role. Vegetation Indices are combinations of surface reflectance at two or more wavelengths designed to highlight a particular property of vegetation.
They are derived using the reflectance properties of vegetation. Each of the VIs is designed to accentuate a particular vegetation property. Satellite images from the various organizations have a varying number of spectral bands containing data useful for VI calculations. For example, Sentinel 2 satellite imagery from ESA is a wide-swath, high-resolution, multi-spectral imaging mission supporting land monitoring studies — vegetation, soil, water cover, inland waterways & coastal areas and have 13 spectral bands containing various top of atmosphere (TOA) reflectance levels which can be used for a variety of VI calculations.
More than 150 VIs have been published in scientific literature, but only a small subset has a substantial biophysical basis or has been systematically tested. Many tools/platforms provide support for calculating various VIs. For example, SNAP platform part of Sentinel Toolboxes supports around 21 VI calculations and ENVI Image Analysis platform provides 27 VIs to use to detect the presence and relative abundance of pigments, water, and carbon as expressed in the solar-reflected optical spectrum (400 nm to 2500 nm). VIs can be broadly categorized into the following groups — Broadband Greenness, Narrowband Greenness, Light Use Efficiency, Canopy Nitrogen, Dry or Senescent Carbon, Leaf Pigments, and Canopy Water Content.
The below table shows few veg indices applicable to differentiating Rice, Wheat & Other crops with respect to Sentinel2 Level1C dataset of Nepal’s specific cultivation areas. The analysis was done based on data from 30+ sample crop fields of each category. Unfortunately, the values for VIs of crops vary from region to region based on their climatic conditions, temperature, soil conditions, etc. and hence study/analysis done for crops in one region cannot be reused for the same crops in other regions and hence need to be calculated for each region/area of interest.

Specifically in the case of ‘crop type identification’, calculating the chosen vegetation indices, adding them as bands /channels in the images dataset, and then feeding them to ML models will help the model learn correlations between crop type and veg indices and ultimately identify different crop types with high accuracy. So, do not forget to explore various VIs suitable for the task at hand.
As per the ML model architecture Classification or Segmentation, objectives of labeling will change:
Since labeling for segmentation task is more demanding, here are few points to do it right:
We hope by now you have got your grips on the key ingredients of creating a ‘good’ satellite imagery dataset for agricultural applications.
Let’s recap the key points once again:
Most importantly, we need to understand that dataset creation is an iterative process — feedback & inputs from different stages like ground truth data analysis, data analysis & engineering, labeling, and model building should all be considered for improving the dataset with an iterative approach.
We clearly understand that every project has its own requirements but we hope the lessons learned will help you to better approach your own dataset preparation.
Thanks for reading. Feel free to comment below.
This article is written by Jayasudan Munsamy, Alexander Epifanov, and Łukasz Murawski.
The work has also been done by James Tan, Thomas Chambon, Erick Galinkin, Shefalika Gautam, Radhika Menon, Javier Perez Tobia, Saqib Shamsi, Sai Praveen.
You might also like:

AI-Powered Rooftop Solar Assessment: How Computer Vision Eliminates the 30-40% Pre-Sales Survey Cost

From Orbit to Harvest: Inside TerraYield, a Multimodal Dataset for Smarter Crop Yield Forecasting

Top 40 Regenerative Agriculture Startups & Companies in 2026

Detecting Weeds Using YOLACTEdge Instance Segmentation for Smart Farming