Swimming Pool Identification from Satellite Imagery
Why Detect Swimming Pools from Space?
Swimming pool detection from satellite imagery has practical applications that extend well beyond curiosity. Municipal governments use pool inventories for property tax assessment—undeclared pools represent lost revenue. Public health agencies track pool density to model mosquito breeding risks in regions where standing water is a disease vector. Insurance companies need to know about pools for accurate property risk profiles. And urban planners study pool distribution as a proxy for socioeconomic patterns and water consumption.
Manual identification of pools from aerial or satellite photos is tedious and error-prone at city scale. A city like Belo Horizonte, Brazil, with millions of residents and sprawling suburban areas, could contain tens of thousands of residential pools. Automating this detection is a natural fit for computer vision.
The BH-POOLS Dataset
We worked with the BH-POOLS dataset, a purpose-built collection for swimming pool detection research. The dataset comprises 200 images at 4K resolution covering 8 distinct regions across the metropolitan area of Belo Horizonte, Brazil. Across these images, 3,980 swimming pools are annotated with bounding boxes.
The eight regions were selected to capture the diversity of Belo Horizonte’s urban landscape:
- Dense urban cores: Tightly packed neighborhoods where pools are squeezed into small backyards, often partially occluded by building overhangs or trees.
- Suburban sprawl: Lower density areas where pools are larger and more isolated, but interspersed with other blue-tinged objects (tarps, car roofs, water tanks).
- Hillside communities: Areas with irregular lot shapes and steep terrain that distorts the apparent shape and color of pools in satellite imagery.
- Mixed-use zones: Regions where residential pools coexist with commercial and industrial structures, introducing visual clutter.
The diversity across these regions makes BH-POOLS a challenging benchmark. A model that performs well in low-density suburbs may fail in dense urban areas where pools are small and occluded.
Approach 1: YOLOv3
Our first approach used YOLOv3, trained on the BH-POOLS training split with standard augmentations. YOLOv3’s multi-scale detection is relevant here because pools range from small above-ground installations (a few pixels across in 4K imagery) to large in-ground pools that span significant image area.
Results: YOLOv3 achieved an mAP@50 of 0.753, which seems respectable until you examine the error patterns. The model suffered from a systematic false positive problem: it frequently confused vehicles (particularly cars and vans with blue, teal, or reflective roofs) with swimming pools. In parking areas and streets, clusters of parked cars generated spurious pool detections.
This confusion is understandable—at satellite resolution, a blue car roof and a small above-ground pool can appear nearly identical in color, shape, and size. The model also struggled with partially occluded pools, where tree canopy covered enough of the pool to break the expected rectangular shape.
Approach 2: SAM-GEO (Zero-Shot)
Our second approach used SAM-GEO for zero-shot pool segmentation, requiring no pool-specific training data. SAM’s strength is its ability to segment arbitrary objects given minimal prompting, and pools—with their distinct color (blue), sharp boundaries, and regular geometry—seemed like strong candidates for zero-shot detection.
Results: SAM-GEO produced high-quality segmentation masks for swimming pools, particularly for medium and large pools with clear water. The segment boundaries closely followed the actual pool edges, which is useful for applications requiring area estimation rather than just detection.
However, SAM-GEO also generated false positives in forested and vegetated areas. Dense tree canopy sometimes created shadow patterns or color patches that SAM interpreted as discrete objects. In regions with significant forest cover (several of the BH-POOLS regions include hillside vegetation), these false positives accumulated quickly.
We mitigated this issue with area-based thresholding: by filtering out segments below a minimum area and above a maximum area, we eliminated most vegetation artifacts (which tended to be either very small fragments or very large canopy blobs) while retaining genuine pool detections. Shape-based filtering (favoring rectangular or elliptical segments) further reduced spurious detections.
Regional Results
The table below shows detection performance aggregated across all 8 regions of the BH-POOLS dataset, combining results from both methods:
| Metric | Count |
|---|---|
| True Positives | 2,665 |
| False Positives | 825 |
| False Negatives | 1,337 |
Breaking this down: of the 3,980 annotated pools, the best configuration detected roughly 67% correctly while generating about one false positive for every three true detections. The 1,337 missed pools were predominantly small above-ground pools, partially occluded pools, and pools with unusual water color (green or murky).
The regional variation was substantial. In low-density suburban regions with large, clearly visible pools, detection rates exceeded 80%. In dense urban regions with small pools, heavy tree cover, and visual clutter, detection rates dropped below 50%.
Error Analysis
Three systematic error patterns emerged across both approaches:
1. Small Pool Miss Rate
Pools below approximately 10 square meters of apparent area in the imagery were detected at significantly lower rates. At satellite resolution, these pools occupy only a handful of pixels, making them difficult to distinguish from other small blue objects. This is a resolution-limited problem—higher resolution imagery would help, but at higher cost.
2. Occluded Pool Fragmentation
When tree canopy covered 30% or more of a pool’s surface, both approaches struggled. YOLOv3 often missed these pools entirely, while SAM-GEO sometimes segmented the visible portions as separate objects. For applications like tax assessment where total pool count matters, these misses accumulate.
3. Color Dependence
Both models showed strong color bias toward blue water. Pools with green water (algae), brown water (disuse), or covered pools were detected at much lower rates. This suggests the models are learning “blue rectangle” rather than the deeper concept of “swimming pool,” which limits generalization.
Practical Implications
For real-world deployment, the results suggest a hybrid workflow:
- Initial detection with SAM-GEO: Use zero-shot segmentation for a rapid first pass that requires no training data. Apply area and shape filters to reduce false positives.
- Refinement with YOLOv3/v5: Train a supervised detector on confirmed detections from step 1, plus human-corrected false positives and false negatives, to build a region-specific model.
- Human-in-the-loop verification: Flag low-confidence detections for human review, particularly in dense urban areas and regions with heavy vegetation.
This pipeline balances the zero-shot convenience of SAM-GEO with the precision of supervised detection, while keeping annotation costs manageable.
The BH-POOLS benchmark demonstrates that automated pool detection from satellite imagery is feasible but far from solved. The 67% detection rate with 825 false positives across 200 images means significant human oversight is still required for applications where completeness matters—like municipal tax assessment. But for approximate density mapping or trend analysis, the automated approach already provides actionable intelligence at a fraction of the cost of manual surveys.