Spring Annuals Trial HarnessHabitat NZ · technical demo by EmerTech

Spring Annuals Trial Harness

A working technical harness: annotate tiny plants, run many models, and get a defensible count with its accuracy measured.

Season context

The dates this work is indexed against.

Germination on site
2nd–3rd week of September
Season closes
late October
Panel decision
29 Oct 2026

Condition 111 turns on a ratio: the pit-footprint count against the wider Dunstan Ecological District count.

The physics first

A 10 mm plant on a DJI Mavic 3E — wide, nadir, nominal optics.

5 m AGL
7.5 px
1.33 mm/px · 5.0 px usable
Countable
10 m AGL
3.8 px
2.67 mm/px · 2.5 px usable
Marginal
20 m AGL
1.9 px
5.33 mm/px · 1.3 px usable
Density / cover only
30 m AGL
1.3 px
8.00 mm/px · 0.8 px usable
Below detection

Why this app reports millimetres per pixel, not altitude. Altitude on its own is not a measurement — it is a number about an aircraft. Ten metres on a Zenmuse P1 with a 50 mm prime resolves finer than three metres on a Mavic 3E wide, so a result quoted at “10 m” transfers to nothing. Millimetres per pixel is the quantity that survives a change of aircraft, lens or flight, and it is the axis every accuracy claim in this harness is plotted against. Of the 7 cameras in the registry, this card shows the one Keith is most likely to fly.

The usable figure is the nominal pixel count divided by 1.5: lens MTF, Bayer demosaicing, JPEG compression and motion blur all cost resolution the formula does not know about. Plan on the usable number, not the nominal one.

What is seeded

Everything below ships with the demo. No client imagery is present.

Synthetic scenes
13
2,754 plants + 383 planted hard negatives, with exact ground truth
Real UAV frames
8
CoFly-WeedDB, CC BY 4.0 — no ground truth, annotate them yourself
Species photos
22
iNaturalist observations, CC-BY / CC-BY-SA, attributed per photo

Synthetic scenes exist so accuracy can be measured before the September imagery lands: the generator knows where every plant is, including the rock flecks and lichen deliberately planted to be not counted. Real frames exist so nothing here is only ever tested against its own renderer.

Real-frame attribution: CoFly-WeedDB (Krestenitis et al.), DJI Phantom 4 Pro over cotton field, Larissa, Greece — zenodo.org/records/6697343

4 species are modelled. The fourth is unconfirmed and is labelled to confirm with Habitat NZ wherever it appears.

The model bench

16 ranked arms on the bench, plus 1 adjudicator that never counts.

Arms on the bench
16
ranked 1–16 from the research
Live
0
provider key present and a client wired
Simulated profile
15
published-benchmark priors, labelled as such
Not pursued
1
a recorded decision, not an oversight
Exemplar · 5Zero-shot · 4Supervised · 4VLM · 3

Lanes without keys run published-benchmark profiles, labelled as such — on the leaderboard, in the run manifest and in every export. Access is computed from the environment at request time, never asserted, so an arm flips to LIVE the moment its key arrives and nothing else changes.

Suggested 10-minute walkthrough

Four steps, in this order — each one produces the input the next one needs.

  1. 1
    Annotate three plants on a real frame

    Two clicks per plant on a CoFly UAV frame. Those boxes become the exemplars the visual-prompt lane consumes, and a single keystroke marks a schist chip as a hard negative.

    Open the workbench
  2. 2
    Run the bake-off

    Pick images and models, tile at 512 px with overlap, and every cell records what actually ran — live client or published-benchmark profile.

    Configure a run
  3. 3
    Read the evidence chart

    Precision, recall and F1 at each model's own best-F1 threshold, plotted against millimetres per pixel. This is the chart a consent panel is entitled to ask for.

    See the evidence
  4. 4
    Check the flight advisor

    Turn the accuracy you just measured into a flight plan: altitude, GSD, footprint, frames per hectare, and a verdict per species.

    Plan a flight