01 — Mission
The camera was never
the bottleneck.
Drones have had good sensors for a decade. What they haven't had is attention — someone watching every frame, at altitude, for hours, without missing the one that matters. Mimir is built to be that attention, and to run it on the aircraft rather than in somebody else's datacentre.
01.1
The problem we picked
A drone in the air produces more video than anyone can watch. The operator is flying, navigating, managing battery and link — and is also expected to spot a person in a treeline from a hundred metres up, in a 720p feed, on a handheld screen, in the rain.
People are bad at this. Not through carelessness — through arithmetic. A single twenty-minute sortie is more than thirty thousand frames. Attention degrades, targets are small, and the interesting frame looks exactly like the thirty thousand boring ones until it doesn’t.
Mimir watches all of it, every frame, at the same level of attention on the last minute of a flight as on the first.
01.2
Three commitments
Most of what we do follows from three decisions we made early and don’t intend to walk back.
- It runs onboard
- Inference happens locally, on the machine holding the feed — never as a round trip to a cloud API. A link that can drop is not a link you build perception on, and the places this work matters most are the places with no connectivity to speak of. Everything that ships is a local model file.
- We own the weights
- The detector is trained from random initialisation — no pretrained checkpoint, no borrowed backbone, no copyleft framework anywhere in what ships. Training tooling stays on the training machine; only the exported model reaches the product. Everything the network knows, it learned from frames we labelled ourselves.
- Small targets are the job
- A person at a hundred metres is fifteen to twenty-five pixels tall. That single fact drives the architecture: an anchor-free centre-point detector at output stride 4, because at the strides general-purpose detectors use, that person is smaller than one cell and cannot be localised at all.
01.3
Why from scratch
Building a detector from nothing is slower than fine-tuning something off the shelf. We did it anyway, and the reason is boring and practical: provenance.
The convenient open detectors carry licences that reach the weights, not just the code — which makes them a problem in exactly the procurement conversations this software is built for. Ours were trained from random init by a plain training loop, on frames we captured and labelled. There is no third-party claim riding along inside them.
The same reasoning applies to the data. Labels are stored in a plain normalised text format that carries no licence and converts losslessly to anything else, so the dataset outlives any architecture we swap in later. The frames are the asset. The model is a rebuildable artefact.
01.4
Where this goes
Today Mimir detects one class: person. That is deliberate — it is the class that matters most for search and rescue and for situational awareness, and it is the hardest one at altitude. Getting it genuinely right is worth more than getting eighty classes roughly wrong.
From there the path is more classes, more terrain, and moving inference down onto the controller itself, so the analysis lives in the operator’s hands rather than on a laptop in a vehicle.
Mimir takes its name from the Norse well-keeper who traded an eye for knowledge of everything the world is doing. Reasonable trade for the right kind of sight.
See where it stands today.
We publish the build state honestly, including the parts that aren't finished.