You do not count penguins from space. You count what they leave behind. An emperor penguin stands about 1.2 metres tall and the best free satellite imagery of Antarctica resolves ten metres to a pixel, so a bird is roughly a tenth of the smallest thing the instrument can see. A colony's guano stain, on the other hand, is tens of thousands of pixels of reddish-brown mess on white ice, and it stays there all season.
That is the whole trick, and it works well enough that the emperor is the one penguin species on this site mapped from orbit rather than visited on foot. Turning a stain into a number of birds is a completely different problem, and this post is about how we tried it, and the four separate ways it fell over.
Step one: snow renders blue
The intuitive detector is "look for the warm-coloured patch on the white background". It finds nothing. Antarctic snow in satellite imagery is not neutral white, it renders blue, and a guano stain is dark and warm only relative to the particular snow around it in that particular scene at that particular sun angle. Any absolute threshold, any fixed "redder than this" rule, returns either the whole image or none of it depending on the day.
Worse, "warm and dark relative to snow" describes exposed rock and shadowed ice exactly as well as it describes guano. In red, green and blue the three are not separable at all. Our first calibration run against counted colonies looked superb, a correlation of 0.85 raw and 0.93 on logs, and then collapsed when we checked where the detections were rather than how many there were.
| colony | counted birds | detected km² | within 1 km | hit rate |
|---|---|---|---|---|
| Coulman Island | 25,244 | 1.046 | 0.388 | 37% |
| Cape Washington | 16,677 | 0.274 | 0.022 | 8% |
| Cape Roget | 6,270 | 0.476 | 0.002 | 0% |
| Point Géologie | 3,376 | 0.075 | 0.030 | 40% |
| Beaufort Island N | 812 | 0.015 | 0.000 | 0% |
Almost none of what the detector found was where the colony is. The correlation was real arithmetic and pure coincidence: bigger colonies happen to sit on more complicated coastline, complicated coastline produces more false positives, and the two rose together. The lesson is now a standing rule here. Always validate spatially, never on totals alone.
Step two: the infrared actually works
The fix is to stop using visible colour. Guano, snow and rock separate cleanly on the ratio of shortwave infrared to near infrared, which is an axis the human eye does not have. Measured on a Sentinel-2 scene over Cape Washington on 31 December 2025:
| surface | red | near IR | shortwave IR | SWIR/NIR |
|---|---|---|---|---|
| snow | 0.757 | 0.704 | 0.036 | 0.05 |
| guano smear | 0.426 | 0.425 | 0.147 | 0.35 |
| bright rock | 0.614 | 0.615 | 0.414 | 0.67 |
| dark rock | 0.180 | 0.175 | 0.138 | 0.79 |
Snow at 0.05, guano at 0.35, rock at 0.67 and above. Three surfaces, three well-separated numbers, on an axis that plain colour cannot provide. With a rock buffer added, that scene produced 0.139 square kilometres of detections sitting on the ice at the southern tip of Cape Washington, which is exactly where the colony is. Visually convincing. We nearly believed it.
The reason we did not is worth recording. An unsupervised clustering of the same scene threw up a class that looked like an ideal guano candidate: bright, red above blue, elevated shortwave infrared, 0.37 square kilometres, almost precisely the expected area. Plotted back onto the image, it was sunlit snow. Never trust a cluster you have not drawn on the picture.
Step three: it does not generalise
One convincing scene is not a detector. Run the same method with every threshold expressed relative to the scene's own snow population, across eight colonies with independent ground counts, and the correlation between detected stain area and colony size comes out at r = −0.16. That is not a weak signal. That is no relationship, pointing the wrong way. The two largest colonies returned nothing at all. One of the smallest returned the most.
Two more problems sit underneath that. Season decides whether there is anything to detect: summer scenes return near zero everywhere, because the chicks fledge and the fast ice the colony stands on breaks out and takes the stain with it. The usable window for an emperor colony is late September to mid November, and moving into it lifted hit rates from about zero to between 5 and 44 per cent, which is a real improvement and still not usable.
And sun angle alone will move the answer by a factor of four. Cape Washington measured 0.139 square kilometres of stain on 31 December and 0.034 on 25 December. Six days apart, same colony, nothing happened to the penguins.
Why this is a page and not a number
Every round of threshold tuning fixed one colony and broke another. That is the signature of a problem that needs supervised learning on labelled examples, not more tuning, and the labels are the thing that does not exist. There are two candidate sources and both have a named blocker: a published set of 9,143 Landsat pixels classified as Adélie colony, which is machine output rather than ground truth, so training on it teaches our detector to imitate somebody else's; and hand-drawn guano outlines for 193 Adélie colonies, which is exactly the right data and was digitised on commercial imagery this project will never buy.
So there are no penguin counts anywhere on PenguinTracker, and there will not be until a detector exists that survives a check against ground counts. Not on the map of all 729 breeding sites, not on any of the 729 site pages, not in the feed. A number we cannot defend would be worse than no number, and this site would rather publish the sea ice around a colony, which we can measure, than the population inside it, which we cannot.
That is also why the measurements here are about ice rather than birds: when the sea opens at a colony, how long its ice season lasts, how much ice there is in the months a colony needs a platform. Those trace to a satellite record anyone can download. The count does not, yet.
The ground counts we tested against come from the free MAPPPD penguin count archive, and the imagery is Sentinel-2 L2A on AWS Open Data, which needs no account, no key and no registration. Both are open. The detector is the part that is missing.