How our model detects swimming pools

How our model detects swimming pools

An AI model learns to spot swimming pools in aerial photos. Here's how, visually explained.

The idea in one image

The model looks at an aerial photo and colors the pools it thinks it sees. Left is the original image, right is what the model detected (in green).

Aerial photo on the left, model detection in green on the right
Aerial photo (left) → pools detected by the model (right).

That’s all the model does: for each point in the image, it answers one simple question — “is this pool water, yes or no?”. This is called segmentation.

What is it taught?

To learn, the model needs corrected examples. We show it thousands of aerial photos along with the outlines of pools already known from OpenStreetMap. This outline is called the mask: it indicates exactly where the water is.

Aerial photo on the left, pool mask in purple on the right
A training sample: the photo (left) and the mask of known pools (right, in purple).

Our first model was trained on the villages of Marennes and Chaponnay, southeast of Lyon:

≈ 5,700image tiles
4,850with at least one pool
805with no pool

Examples without a pool are just as important: they teach the model not to confuse a blue roof or tarp with water.

How it learns

The learning process repeats thousands of times, always in the same cycle:

1

It guesses

The model makes a prediction on an image it has never "validated" before.

2

We compare

We measure the gap between its prediction and the reference mask (the correct answer).

3

It corrects

The model slightly adjusts its internal settings to be a bit less wrong next time.

Repeated over the entire dataset (each full pass is called an epoch), the model gradually improves. Ours learned in 16 epochs, or about 44 minutes on a simple Mac.

Is it any good?

To judge the model, we test it on images it has never seen during training. Two numbers matter:

72% Precision

When it announces a pool, it's right ≈ 7 times out of 10.

82% Recall

Of all real pools, it finds ≈ 8 out of 10.

0.77 F1 Score

The overall score, combining precision and recall.

That’s a good start — enough to pre-select interesting areas, but not reliable enough to skip human verification.

Where it gets things wrong

No model is perfect. Here are two typical errors:

Example of a false detection
False positive: it sees a pool where there isn't one (roof, tarp, bluish shadow).
Example of a missed pool
False negative: it misses a real pool (too small, hidden, unusual color).

That’s exactly why we need you. Every human validation corrects these errors and will be used to train an even better model.

Going further

Curious about how this model is actually built? Discover the behind-the-scenes: how the training dataset is generated, how to launch training, and how inference works.

Behind the scenes of the model →

Want to contribute?

Lend your computing power or validate pools right now.

Take part