It guesses
The model makes a prediction on an image it has never "validated" before.
How our model detects swimming pools
An AI model learns to spot swimming pools in aerial photos. Here's how, visually explained.
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).

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.
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.

Our first model was trained on the villages of Marennes and Chaponnay, southeast of Lyon:
Examples without a pool are just as important: they teach the model not to confuse a blue roof or tarp with water.
The learning process repeats thousands of times, always in the same cycle:
The model makes a prediction on an image it has never "validated" before.
We measure the gap between its prediction and the reference mask (the correct answer).
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.
To judge the model, we test it on images it has never seen during training. Two numbers matter:
When it announces a pool, it's right ≈ 7 times out of 10.
Of all real pools, it finds ≈ 8 out of 10.
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.
No model is perfect. Here are two typical errors:


That’s exactly why we need you. Every human validation corrects these errors and will be used to train an even better model.
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.