A Case Study: Detecting Solar Farms Using Sentinel-2 Multi-Spectral Imagery

32oE meridian
Hello Meridians!
Today we dive into a critical challenge in Machine Learning Operations (MLOps): data drift in Earth Observation (EO) data. We will explore what data drift is, why it happens, and why deeply understanding your data is the ultimate weapon to counteract it.
To bring this to life, we will look at a practical application in the energy sector: a model designed to detect and monitor large-scale solar farms using multi-spectral images from the ESA Sentinel-2 MSI sensor, served directly to your laptop by the Copernicus Data Space Ecosystem (CDSE).
Enjoy the read!
The Landscape: Abundant Data, New Challenges
Today, satellite Earth Observation data is a commodity. The CDSE operates as a cloud Data-as-a-Service (DaaS) platform, seamlessly integrated with Processing-as-a-Service (PaaS) and Infrastructure-as-a-Service (IaaS) capabilities. This ecosystem enables the exploitation of satellite data at a scale that was unimaginable only a few years ago. Long time series from multiple sensors are now available at our fingertips—just register to a portal and connect via an API or a web GUI.
This massive influx of data can be effectively analyzed thanks to exponential growth in computational power and breakthroughs in machine learning, deep learning, and AI. Consequently, investments in the downstream sector of the space economy (such as the ESA BASS program) are surging, stimulating a commercial geo-intelligence market that serves sectors far beyond aerospace—including agriculture, finance, energy, and maritime logistics.
In this new context, data availability is no longer the bottleneck. The focus has shifted to pipeline automation and deploying ML models in real-world production environments. And this is exactly where the ghost of data drift hides.
MLOps and the Data Drift Dilemma
Machine Learning Operations (MLOps) is the modern framework used to manage and automate the entire lifecycle of AI models (see ML-Ops.org). This framework stands on three core pillars:
- Automation: Minimizing manual intervention by automating data pipelines, training, and testing.
- Traceability and Reproducibility: Tracking all model versions and datasets to reproduce past analyses accurately.
- Continuous Monitoring: Checking model performance live in production.
This post focuses on the third pillar: Continuous Monitoring.
ML models are mathematical objects trained on a specific dataset to approximate an input-output relationship. Once deployed, the model makes predictions on unseen data (e.g., classifying a pixel or forecasting a time series). However, this approach has an intrinsic vulnerability: live input data can degrade in quality or fluctuate due to natural variability. This is data drift. When the statistical distribution of new input data departs from the original training dataset, model performance collapses.

The standard industry fix is continuous monitoring paired with automated re-training once performance drops below a certain threshold. While effective, applying this loop “blindly” as a black box is highly inefficient. Re-training complex deep learning models requires massive computational power, time, and the expensive, manual effort of labeling new datasets.
But what if the drift isn’t completely unpredictable? If data drift follows a predictable dynamic, we can compensate for it before the data hits the model, preserving performance without burning resources on constant re-training. To do this, we must step outside the “black box” and look directly into the physics of our data.
Case Study: Spotting Solar Farms from Space
In a previous post, we demonstrated how to monitor solar farm construction using Synthetic Aperture Radar (SAR) imagery and a computer vision pipeline to track asset extension over time. Today, we shift to a passive approach using Sentinel-2 MSI multi-spectral data.
The MSI sensor captures data across 13 spectral channels spanning the visible, near-infrared (NIR), and short-wave infrared (SWIR) spectrum. The Level-2A product from CDSE provides atmospherically corrected reflectance for 12 of these channels (excluding channel 10, which is reserved for cirrus correction) georeferenced on a high-resolution grid.
To isolate solar panels (our positive class) from the complex surrounding landscape (our negative class), we implemented a one-class classifier based on Principal Component Analysis (PCA). The input is a 12-dimensional reflectance vector for each pixel. PCA allows us to compress this dimensionality, capturing the minimum spectral information required to discriminate a solar panel from the background.

By training the classifier exclusively on positive samples (the white polygons in Figure 1), we completely avoid the grueling task of labeling every single background element (roads, fields, water). We then evaluate precision and recall (see Evaluation of binary classifiers – Wikipedia) using a separate test set of positive samples (the red polygons in Figure 1 ) and unlabeled negative class samples.
The baseline results on our reference image (captured on 2020-01-01) are excellent: 99% of the training set’s total variance is explained by the first two principal components. Classification is performed smoothly in this reduced 2D feature space by applying a distance threshold from the positive cluster.

Figure 1. Reference Sentinel-2 MSI L2A image (Channel B8A, 60m resolution, acquired 2020-01-01). White polygons: positive class training samples. Red polygons: positive class test samples.
The Seasonal Collapse: Drifting Reflectance
With a perfectly functioning baseline model, we monitored a stable solar plant from 2020 to 2026. However, when we applied the exact same classifier to an image acquired just six months after the training date, the results collapsed drastically (Figure 2). A massive portion of the solar farm was suddenly misclassified.


Figure 2. Left: Flawless classification map of the reference image. Right: Catastrophic classification failure on an image acquired six months later.
To understand why, we looked inside the PCA feature space (Figure 3). By plotting the original training samples (red) against the six-month-later samples (cyan), a massive statistical shift became obvious. Even though the data was centered and scaled using the training parameters, the positive class had physically drifted.

Figure 3. Solar panel samples projected into the PCA feature space. The positive class undergoes a massive shift after six months.
When tracking this over a cloud-free time series from 2020 to 2026, we discovered a striking phenomenon: the classifier’s precision, recall, and F1-score (see Evaluation of binary classifiers – Wikipedia) degrade periodically every six months, following a rigid seasonal pattern (Figure 4).

Figure 4. One-class classifier performance metrics over a 6-year period, revealing a stark, cyclical seasonal degradation.
Why is this happening?
Assuming the physical solar panels didn’t change, the answer had to lie in the environment. Plotting the reflectance of channel B8A over 6 years confirmed a beautiful, undulating seasonal pattern across all 12 channels (Figure 5).
Reflectance values represent the percentage of total solar radiation backscattered to the satellite. Therefore, surface reflectance is not an inherent optical property, but an apparent property—it shifts based on the satellite’s viewing geometry and the changing angle of the sun throughout the year. The data drift causing our model to fail was simply uncompensated illumination geometry.


Figure 5. Top: Solar panel reflectance in the B8A channel vs time. The samples (in gray) are extracted from each image of a time series spanning a 6-year period from 2020 to 2026. The sample positions are inside the red polygons in Figure 1. The regression curve in blue highlights the dynamic pattern of the panel reflectance. Bottom: average reflectance profile for all available MSI channels.
The Solution: Calibrate Data, Don’t Re-train Models
Instead of heavy computational re-training, the more elegant solution is to normalize the reflectance data for solar incidence geometry.
Taking advantage of the easily accessible, long-term time series on the CDSE, we built a data-driven reflectance calibration coefficient for this specific site, mapped for each day of the year and each MSI channel (Figure 6). Before feeding a new image to our classifier, we simply divide the pixel reflectance values by the calibration coefficient of that specific day.


Figure 6. Data-driven calibration curves estimated using the first two years of the temporal series of multi-channel MSI data. Top: detail of the regression curve for channel B8A. Bottom: estimated calibration curves for all MSI channels.
The impact of this physics-aware calibration step is game-changing. As shown in Figure 7, the calibrated test data (in blue) aligns beautifully with the original training cluster, neutralizing the seasonal shift.

Figure 7. The effect of calibration on the PCA features: the shifted data is successfully pulled back into statistical alignment with the training set.
Comparing the uncalibrated performance (Figure 4) against the calibrated timeline (Figure 8 and 9) shows a massive, sustained recovery in Recall and an overall stabilization of the F1-Score over time.

Figure 8. Precision recall and F1 score of the one-class classifier after the application of the calibration curve. The improvement in F1 score in some cases is more than 7 times the performance with no calibration applied (see Figure 4).




Figure 9. Top row: detail of the precision recall and F1 score of the one-class classifier applied without data calibration. Bottom row: detail of the performance of the classifier after the application of the calibration curve. Time range left column: January 2020 – January 2021. Time range right column: January 2024 – January 2025.
The visual proof is undeniable (Figure 10): the calibrated classification maps maintain structural integrity across different seasons, and any minor residual false alarms can be easily cleaned up with basic mathematical morphology filtering in post-processing.

Figure 10. Comparison of classification maps obtained without data calibration and with calibration vs time.
Conclusions & Key Takeaways
Data drift in machine learning is an inevitability when models run in dynamic, real-world environments. However, treating MLOps as a purely data-agnostic “black box” leads to massive operational inefficiencies.
In Remote Sensing and Earth Observation, winning the battle against drift requires looking at the physics of the measurements—understanding the sensor’s radiometric traits, the orbit geometry, and surface interaction.
This case study demonstrates that:
- Simple Models Scale Better: A lean, physics-calibrated model is significantly easier to train, requires less labeled data, and scales globally for fast screening, leaving complex architectures to handle refined anomaly detection.
- Dimensionality Reduction Works: Techniques like PCA are highly effective at isolating core features for target discrimination without overloading the system.
- The Power of Time Series: Platforms like the CDSE allow us to build data-driven calibration profiles directly from historical archives.
- Inherent vs. Apparent Properties: Normalizing apparent optical properties is mandatory when performing any multi-temporal satellite analysis.
- Ready for Space-Edge AI: Designing lightweight, physics-calibrated pipelines is not just a matter of cloud cost efficiency; it is an engineering requirement for the future of Earth Observation. As the industry moves toward Edge AI—processing data directly on-board satellites to downlink insights rather than raw imagery—the future belongs to lean algorithms that respect tight hardware and power constraints.
By knowing our data, we bypassed the expensive loop of continuous model re-training, proving that a drop of domain expertise is often worth a ocean of brute-force computation.
What are your thoughts on handling data drift in EO pipelines? Do you lean toward automated re-training or data-level calibration? Let’s discuss in the comments on [linkedin]!
Bibliografia
Anuj Karpatne, Imme Ebert-Uphoff, Sai Ravela, Hassan Ali Babaie, and Vipin Kumar. 2018. Machine learning for the geosciences: Challenges and opportunities. IEEE Transactions on Knowledge and Data Engineering (TKDE) 31, 8(2018), 1544–1554.
Anuj Karpatne, Gowtham Atluri, James H Faghmous, Michael Steinbach, Arindam Banerjee, Auroop Ganguly, Shashi Shekhar, Nagiza Samatova, and Vipin Kumar. 2017. Theory-guided data science: A new paradigm for scientific discovery from data. IEEE Transactions on knowledge and data engineering (TKDE) 29, 10(2017), 2318–2331.
Arka Daw, Anuj Karpatne, William D Watkins, Jordan S Read, and Vipin Kumar. 2022. Physics-guided neural networks (pgnn): An application in lake temperature modeling. In Knowledge Guided Machine Learning. Chapman and Hall/CRC, Boca Raton, FL, 353–372.
G. Schaepman-Strub, M.E. Schaepman, T.H. Painter, S. Dangel, J.V. Martonchik. 2006. Reflectance quantities in optical remote sensing—definitions and case studies,
Remote Sensing of Environment, Volume 103, Issue 1, 2006, Pages 27-42, ISSN 0034-4257, https://doi.org/10.1016/j.rse.2006.03.002.
Disclaimer
The analyses reported herein are for illustrative and methodological purposes only.
Credits
This page contains modified Copernicus ESA Sentinel data (2026), processed via Copernicus Data Space Ecosystem (CDSE) by MERIDIAN – Data & Geospatial Intelligence.
Looking to optimize your asset monitoring?
Discover how to transform geospatial intelligence into a competitive advantage for your business.

