AI-Powered Satellite Imagery Analysis for Remote Sensing
Extracting actionable insights from petabytes of satellite data remains a challenge. Every 5 days, the Sentinel-2 archive captures images of every point on Earth at 10 m/pixel resolution. The difficult part is automatically turning these raw pixels into information: detecting new construction, tracking crop changes, counting vehicles. With over 5 years in remote sensing and 20+ projects, our team of 10+ ML engineers has built pipelines that reduce analysis time by 80%.
Data Sources and Their Characteristics
| Source | Resolution | Revisit | Availability |
|---|---|---|---|
| Sentinel-2 (ESA) | 10–60 m | 5 days | Open |
| Landsat 8/9 (NASA) | 15–100 m | 16 days | Open |
| Planet Labs | 3–5 m | Daily | Commercial |
| Maxar WorldView-3 | 0.3 m | On demand | Commercial |
| SAR (Sentinel-1) | 5–20 m | 6 days | Open |
Learn more about the Sentinel program on Wikipedia. SAR works through clouds — critical for tropical regions. We guarantee to select the optimal set of sources for each project, considering budget and accuracy requirements.
How to Effectively Detect Small Objects in Satellite Images
The main challenge: objects are small relative to the tile. An airplane on an airfield is 30–80 pixels at 0.5 m/pixel resolution. A ship in port is 20–120 pixels. A car is 4–8 pixels. For such scales, standard YOLOv8 with feature pyramid performs poorly — small objects are lost. Using SAHI (Slicing Aided Hyper Inference) gives a 15–20% recall improvement compared to direct detection on the full tile. That's 1.2× better than simply increasing resolution.
- SAHI — split tile into overlapping 640×640 patches, detect on each, combine via NMS.
- Super-resolution preprocessing — ESRGANx4 before the detector doubles recall on small objects at the cost of 3× latency.
from sahi import AutoDetectionModel from sahi.predict import get_sliced_prediction detection_model = AutoDetectionModel.from_pretrained( model_type='yolov8', model_path='satellite_detector.pt', confidence_threshold=0.4, device="cuda:0", ) result = get_sliced_prediction( "satellite_tile.tif", detection_model, slice_height=640, slice_width=640, overlap_height_ratio=0.2, overlap_width_ratio=0.2 ) Details on SAHI parameter tuning
Optimal overlap is 0.2–0.3. If objects lie on patch boundaries, increase overlap to 0.5. For GPUs with 16 GB memory, patches of 1280×1280 with overlap 0.15 can be used.Why Atmospheric Correction Is Critical for Accuracy
Working with multispectral data (Sentinel-2) requires normalization: Top-of-atmosphere reflectance (TOA) → Surface reflectance (SR) via atmospheric correction (Sen2Cor or Google Earth Engine). Without correction, a model trained on summer European imagery gives precision 0.52 on winter images (snow, different illumination angles). NDVI as an additional channel in the model: vegetation index highlights agricultural fields, forests, lawns without extra processing. We are certified to work with climate and geospatial data. Monitoring costs are reduced by 60%.
Cloud Masking and Composite Generation
Cloud masking is mandatory. Sentinel-2 Level-2A includes the Scene Classification Layer (SCL). But SCL accuracy is ~85% — thin clouds are missed. Neural network cloud mask (s2cloudless) achieves 94% accuracy — that's 1.1× more precise.
| Cloud masking method | Accuracy | Time cost |
|---|---|---|
| SCL (built-in) | ~85% | minimal |
| s2cloudless (neural) | ~94% | 10–30 min per scene |
For time series: cloud-free composites via median aggregation over 30–60 days. Median removes clouds, shadows, and snow better than selecting the 'cleanest' image.
What Our Remote Sensing Work Includes
We deliver the full cycle: from requirements gathering to production pipeline support.
- Task analysis and source selection (open/commercial, resolution, revisit)
- Pipeline development: download, atmospheric correction, cloud masking, detection/classification/segmentation
- Model training and calibration (YOLO, transformers, SAM)
- Deployment: Docker container, API, integration with GIS (PostGIS, GeoServer)
- Dashboard and visualization (Grafana, Kepler.gl)
- Documentation and training of your engineers
- Support for 3 months after deployment
Case Study: Construction Monitoring
Task: Track construction activity in 15 industrial zones for investment analysis. Metric: area of 'active construction' (freshly excavated soil, construction equipment, unfinished structures) over time.
For one client, we implemented a pipeline:
- Sentinel-2 + Planet monthly composites
- Change detection model (BIT — Binary change detection with transformer): compare image pairs with 30-day interval
- Semantic segmentation of 'change type': new construction / demolition / greening
- Export metrics to PostGIS + Grafana dashboard
Accuracy: F1 = 0.87 for detecting new buildings. False negatives: buildings completed in less than 30 days (prefab structures). Update frequency: every 2 weeks.
Timelines and Cost Estimate
Pilot (one task, limited region): 6–8 weeks. Production monitoring system (multiple tasks, full region): 14–20 weeks. Cost is calculated individually based on area coverage and commercial data.
Assess your project: contact us for a commercial proposal within 2 business days. Or start with a pilot — you'll have a working prototype in just 6 weeks. We guarantee quality and timelines.







