top of page

Overstory: Freiburg's forest, drawn by the model that found it

Oct 13
5 min read

A classifier learns where the woods around Freiburg are from a year of satellite greenness, and every one of its decision trees is drawn as a tree.

Ten stylised trees on a pale pink sky above a dark green hill, their thin dark branches ending in round buds: a few large red buds, many teal ones, and pale buds that almost vanish into the sky

Ten of the two hundred decision trees Overstory trained on imagery of Freiburg im Breisgau from 2024. Red buds say forest, teal buds say not, and the pale ones are verdicts the tree was unsure of. This forest gets 82.3 % of the pixels it was tested on right.

Is that dark patch on the hills above Freiburg a beech wood or a field? From one summer photograph you can't tell, because both are green. A whole year can tell them apart, and that is what Overstory learns from. Then it draws the thing that learned.

Below: what the model sees, how one of its decision trees becomes a drawn tree, the four settings that turned a navy thicket into the picture above, and what you can take away from it. Open this exact forest and change it as you read.

What the model looks at

The app reads a 12 km square around the place you pick: four seasonal composites of Sentinel-2 satellite imagery, turned into NDVI, a measure of how green a pixel is, plus ESA WorldCover's map of which pixels are tree cover. Each pixel becomes ten numbers: its greenness in each season, the change from one season to the next, the swing over the year and the mean.

Three line charts side by side for tree cover, grassland and cropland around Freiburg in 2024, each with hundreds of thin grey lines running from winter through spring and summer to autumn, and one bold orange median line

One year per pixel around Freiburg, 2024. Tree cover climbs from 0.57 in winter to 0.86 in summer and stays high. Cropland's lines cross each other, because every field is sown and cut on its own calendar, and its median swing over the year is 0.44 against the forest's 0.24.

One decision tree, one drawn tree

A random forest is two hundred decision trees, each asking a few yes-or-no questions about those ten numbers. Overstory draws every one of them as a tree, root at the bottom.

A diagram in two halves. Left, a decision tree drawn as a flowchart: seven question boxes such as autumn greenness at most 0.60, and eight lettered leaves A to H with their verdicts. Right, the same tree drawn by Overstory as a dark branching tree with a thick trunk and eight lettered buds, H large and red

The strongest tree of the forest at How hard it looks 3, as a flowchart and as Overstory draws it, from the app's own code. Leaf H, bright in both summer and autumn and 89 % forest, sits at the end of the thick limb that carries on as the trunk. The thin twigs lead to the small groups.

Nothing in the drawing is decoration. A branch is as thick as the square root of the pixels that flow down it, so the two halves of every split obey the rule Leonardo da Vinci wrote down for real trees. The side that holds more pixels carries on as the trunk. A bud is a verdict, and it fades towards the unsure colour when the tree was not sure. I take thickness, length and colour from numbers the model already carries, because a decorative tree generator with the same silhouette would say nothing about the model.

How this one got made

The first forest is a thicket

The controls open on Freiburg's coordinates. Press Grow the forest. The first read of a new place takes about forty seconds, because it fetches a year of imagery; after that it is cached. The first picture is sixty trees asking seven questions each: a navy thicket in which the buds, the actual verdicts, are too small to see.

Fewer questions draw cleaner trees

Open The classifier, set Trees in view to 5 and compare How hard it looks at 3 and at 14.

Three renders side by side: sixty dense navy trees; five clean Y-shaped trees; the same five grown feathery with hundreds of fine twigs

The default, then five trees at How hard it looks 3 and at 14. Going from 81.2 % to 83.5 % right costs the drawing every clean line.

That trade-off is the app's whole idea: the more accurately it sees the forest, the less it looks like one. This forest sits in between, at How hard it looks 5 with Trees in view 10, which gets 82.3 % right.

Bigger buds make the verdicts visible

Under The drawing, Bud size starts at 1, where a verdict is a dot. At 5 the buds become crowns.

The same ten trees twice on white: on the left thin navy branches with tiny dots at their tips, on the right the same branches carrying large round buds in red, grey-blue and pale grey

Bud size 1 and 5, same ten trees. At 5 you can count the verdicts: a few big red buds where many forest pixels end up, and many smaller grey-blue ones for everything else.

Colours for yes, no and maybe

In Colours, pick Earth Tone Serenity from Quick palette and click its swatches into the slots: the pale pink for Sky and Unsure bud, the dark green for Ground and Branches, red for Forest bud and teal for Other bud. With the unsure colour the same as the sky, a doubtful verdict fades into the background and only the confident ones keep their colour.

The fork stays angled

Branch shape has a second setting, Right angles: the shape a decision tree has when it is printed in a paper, turned the right way up.

The same ten trees twice on the pink sky: on the left with slanted forking branches, on the right with branches that step sideways and then rise straight up like a printed diagram

Angled and Right angles, same model and colours. Right angles reads as a diagram first and a tree second, which is why this forest stays Angled.

From screen to object

Under Downloads, tick the licence box. PNG is the picture at 1748 pixels wide, ready to print at postcard size, with the settings link and both data credits written into the file. Build tree pack draws trees for Buntwald and then offers Tree pack (ZIP).

The Overstory Downloads section: a PNG button, a line about trees for Buntwald, the Build tree pack and Tree pack (ZIP) buttons, and the Sources and credits and Order a print of this creation fold-outs

What a visitor can take away: the picture, and the trees as a pack for Buntwald.

A pack holds eight trees by default, each drawn twice with the settings on screen: once as wood, once as leaves. That pair is what Buntwald reads a species from.

Three trees from the pack, each a thin navy branching drawing over three or four large overlapping grey discs, labelled rank 1, 2 and 3 with 82.3, 82.2 and 82.1 % right

The three strongest trees of the pack, wood in navy over the leaves in grey. The buds are drawn sixteen times larger than on screen, so Buntwald has a crown big enough to cut into facets.

Order a print of this creation sends the picture off to be printed. With Right angles and square buds the same app makes a very different piece:

A dense wood of right-angled decision trees in dark blue with square buds in yellow and light blue, standing on a grey ground

Sequoia, Golden Autumn Twilight: a published Overstory piece, drawn with Right angles and square buds.

Other controls, one line each

  • Seed: a different draw of trees and a different arrangement.

  • Seasonal lean: tips each fork towards the season its question is about.

  • Haze, Across and Depth: how far the weak trees fade, how wide the wood spreads and how far the nearest trees come forward.

  • Horizon: by default the ground follows how the forest is spread across the area; Hills draws it instead, and a Poly Peaks SVG gives it a real skyline.

Your turn

Open this exact forest and change one thing: type a place you know into Search and see whether the model agrees with you about where the woods are. Then send me what you made. I'll ask before I show it anywhere.

Next, the trees leave this app and grow somewhere else: Plant a machine-learning forest in Buntwald.

 
 
bottom of page