Scotopic

Scotopic/Products/FOVEA

Scotopic FOVEA.

Onboard EO/IR perception for small aerial targets. It reads your camera feed and returns a track — bearing, elevation and size, each with its own uncertainty — at 26 bytes per update, on commercial silicon you can buy anywhere. It keeps working when GPS is denied and the link is jammed, because nothing it needs is on the other end of that link. Detect, track, report.

MODULE · FOVEA

FOVEA

Gives your aircraft its context on the battlefield.

Detect, track, report — at the sensor, without GPS and without a link. Optimised for COTS silicon, not a custom board. The first module in the Scotopic line.

Cued mode

Built for hand-off.

Given a target from a radar, an RF sensor or an operator, the search disappears and only the tracking loop remains. A cueing chain does not wait on frame rate. It waits on this.

31 mscue → confirmed track, p95
on the reference platform
88.7 FPSthe module’s own rate
11.3 ms per cued frame, measured
98.6 %of frames locked, one track id
on under a fifth of the sensor

This is what the module costs, not a system figure. FOVEA takes the frame your system already has and returns a track in 11.3 ms. Capture, optics and compute stay yours.

For sizing: on the reference platform a live sensor path costs a few ms of host CPU per frame, far less than decoding compressed video — budget it in your system, it is not counted in our figure. Neither of these is the whole-field rate: full-field search covers all of 4K at 5.76 FPS, while cued tracks one handed-off target and runs far faster because it is not searching. Cue latency held across 21 of 21 hand-offs, none missed.

Where 31 ms sits in a real cueing chain

Rotating surveillance radar1–4 s between updates on the same target
typical of the equipment around us — not our measurement
Gimbal slewing onto the cuehundreds of ms, by mount
An operator noticing and acting~250 ms at best
Scotopic FOVEA, cue to confirmed track31 ms p95 · measured
21 of 21 hand-offs, none missed
Less than one frame 31 ms is shorter than a single frame of 30 fps video (33.3 ms). Bars are to scale. The three rows above the line are typical figures for the equipment around us and are not ours to measure — only the bottom row is. The point is not that we are fast. It is that this link has stopped setting the pace.
Technical specifications — measured

Measured

ReadinessTRL 4 overall · edge deployment, output contract and packaging at TRL 5; detector and tracker at 4 · SAPIENT interface in progress
Cued‑mode rate11.3 ms per cued frame, 88.7 FPS · the module’s own cost, on a frame the host supplies · 5.76 FPS is the separate full-field search rate
Cue → track31 ms p95 · hand-off to confirmed track · 21/21 trials, none missed · Pi 5 + Hailo‑8
Frame delivery (yours)A few ms of host CPU per frame on the reference platform · measured on a live sensor path so you can budget it · not counted in our figure
Reference platformRaspberry Pi 5 (8 GB) + Hailo‑8 · 26 TOPS
Whole‑frame rate173.6 ms per 4K frame, 5.76 FPS · full field of view, continuously
Inference latency, CPU595 ms p95 · no accelerator, 1280×1280, sustained, 28 Jul 2026
ThermalChip 49.5 °C, host 50.2 °C after 10 min sustained · sustained run, no measurable drift · bench, open air, mains power
PortabilityFull suite green on aarch64 · 0 failures
Recall · small targets86.5% · held‑out split, in‑distribution. Size band and match criterion in the method note.
Recall · cross‑dataset57.2% · zero‑shot, unseen dataset. The honest number, published because it is the one that matters.
False alarms · own footage0.098 per frame · target‑free sky, zero‑shot, measured through the shipped build. Denominator and conditions in the method note.
Size floor8 px minimum resolved size · below it the detector enters a statistical regime and most targets are missed. Range follows from your optics and sensor, not from our software — we publish the threshold so you can compute yours. Most vendors publish a range and not a threshold.
ThresholdCalibratable · P/R/FAR sweep, knee published
Track state on the wire26 bytes per update · compact binary, lossy by design, every field pinned to documented precision by documented precision test
Sustained rate2.1 kbps at 10 Hz, one track · 7.8 kbps at five tracks
UncertaintyBearing and elevation carry their own 1σ · drops into a fusion filter without being re‑derived
Link resilienceBuffered on loss · lossless flush on reconnect
RuntimeONNX · at the sensor, no cloud, no licence server
In progress — not yet measured
Track robustnessReacquires after occlusion in synthetic scenario · not yet flight‑validated
Field validationSelf‑collected flight footage · Aug 2026
Detection rangeNot characterised in metres · pixel floor above, but no surveyed‑truth range trial yet
Bearing accuracyNot yet characterised against surveyed truth
Mass and powerNot yet measured in enclosure, on battery
SAPIENT interfaceBSI Flex 335 v2.0:2024‑03 · implementation planned, not validated against a certified DSM

MEASURED = reproduced on the hardware named above, or on a held-out split where stated, on a stated date. IN PROGRESS = not yet measured, published when it is, whatever it shows.

Measured performance

26 B

per track update, on the wire
compact binary, size pinned by test
2.1 kbps sustained at 10 Hz

5.76 FPS

FULL-FIELD SEARCH — the whole 4K field, every frame
not the cued rate; see cued mode above
nothing has to emit, and nothing has to point us at it
10 min sustained · no throttling

Every figure on this page was reproduced on the hardware it names, on a stated date. The numbers we have not taken yet are listed as such, with the same weight.

Method and raw logs available on request

Video downlink13.16 Mbps · HEVC 992×1736, ffprobe
HEVC 992×1736 · measured with ffprobe on real footage
Track state, JSON64.7 kbps
Track state, compact2.1 kbps · 26 B at 10 Hz
6,327 : 1 Bars are to scale. The compact bar is drawn at its minimum visible width and is still an overstatement.

Accelerated figures measured 13 Aug 2026 on the target hardware named above; the 595 ms CPU baseline measured 28 Jul 2026 on the same board without the accelerator. False-alarm figures measured 13 Aug 2026 through the shipped build on target-free sky, every denominator recorded. Recall of 86.5% is a held-out split, in-distribution; the cross-dataset figure of 57.2% is on the same page for the same reason. Field validation on self-collected footage is under way and will be published measured, whatever it shows.
All footage on this page: system demonstration, synthetic scenario.

What the 8 px floor means for your optics.

The size floor above is a property of the detector. The distance at which your target reaches it is a property of your lens and your sensor, and it is arithmetic anyone can check. Put your configuration in and read the ceiling — including the cases where the answer is that no software will help you, and you need a longer lens.

Two input paths: field of view, or focal length and pixel pitch from a sensor datasheet. Returns the range at the 8 px floor, the instantaneous field of view per pixel, and how many frames a crossing target gives you at 5.76 FPS. Nothing is collected before you see the answer.

Open the calculator

Drops in. Changes nothing else.

Scotopic FOVEA takes your camera feed and returns a track. It does not touch your autopilot, your navigation or your radio, and it keeps seeing when the signals are gone. Onboard an aircraft, or fixed on a mast.

Form

Software. It runs on your compute, reads your camera and returns a track. There is no hardware to buy from us, and none is planned.

Compute

Commercial parts, measured today. Folding the accelerated path into the shipped build is in progress; the container runs CPU-only until it lands. no custom silicon, no cloud dependency and no licence server. Optimised for COTS silicon: no custom board, ITAR-free, inside a mast node’s power budget. It scales up if you have more; it was built where there is less.

Navigation

Nothing external in the loop. Detection and tracking depend on the sensor and the compute next to it, not on GPS, the datalink or a ground station. Track output is relative: bearing, elevation, size, each with its own uncertainty. World-frame geolocation needs host position and attitude from your platform, and we report the error that adds.

Interface

One versioned track contract, regardless of platform. Compact binary on the wire at 26 bytes today, structured JSON for integration and debugging. Bearing and elevation carry decomposed uncertainty, so the output drops straight into your filter instead of being re-derived. MAVLink and ROS 2 bindings on the roadmap. Full spec on request.

The questions integrators actually ask.

What does Scotopic FOVEA actually do?

It reads a camera feed and returns a track. Detection and tracking of small aerial targets run on the compute next to the sensor — onboard an aircraft or fixed on a mast — and what leaves the node is 26 bytes of track state per update rather than video. Where that track goes, and what your system does with it, is your architecture.

What is the detection range in metres?

We have not characterised one, and we will not quote one. Range is not a property of the detector — it is a property of the optics in front of it. What we publish is the pixel floor: 8 px minimum resolved size. Put your sensor and lens into the detection geometry calculator and it returns the distance at which your target crosses that floor. A surveyed-truth range trial is on the roadmap and will be published measured, whatever it shows.

Why publish a threshold instead of a range, like everyone else?

Because a range figure is only true for the optics it was measured behind, and that configuration is almost never stated alongside it. Two integrators running the same detector behind different lenses get answers that differ by a factor of three. Publishing the floor lets you compute your own number, and check ours. It is the less flattering way to present the same fact.

What hardware does it need, and what does that cost?

Raspberry Pi 5 (8 GB) with a Hailo-8 accelerator, 26 TOPS — roughly €200 of commercial compute per node. It processes the whole 4K field of view at 5.76 FPS, 173.6 ms per frame, measured 13 Aug 2026 on that board. CPU-only, without the accelerator, inference is 595 ms p95 at 1280×1280. No custom silicon, no cloud dependency, no licence server.

Does it replace my autopilot or my flight stack?

No, and that is the point. It sits beside what you already have: it does not touch the autopilot, the navigation or the radio. It consumes a camera feed and emits a track on a versioned contract. Autonomy stacks ask you to adopt their operating system, their board and their qualification path, and you end up reselling someone else’s aircraft. This asks for a camera feed.

Does it need GPS or a datalink?

Neither. Detection and tracking depend on the sensor and the compute next to it, not on GPS, the datalink or a ground station. Track output is relative — bearing, elevation and size, each carrying its own 1σ uncertainty, so it drops into a fusion filter without being re-derived. World-frame geolocation needs host position and attitude from your platform, and we report the error that adds.

What happens to the track when the link is jammed?

It keeps running at the sensor and the output buffers. On reconnect the buffer flushes losslessly, so you get the interval rather than a gap. At 26 bytes per update — 2.1 kbps sustained at 10 Hz for one track, 7.8 kbps at five — the buffer is small enough that this is a design choice, not a compromise. Against a measured 13.16 Mbps video downlink that is a ratio of 6,327 : 1.

Can it detect anything other than drones?

The pipeline is domain-independent; the detector is not. Tracking with coasting through occlusion, the 26-byte contract with decomposed uncertainty, and the quantised edge envelope on Hailo-8 carry over unchanged to other target classes. The detector does not: weights are trained on a specific domain, and retargeting to surface vessels, ground vehicles or people needs labelled data from that domain. We run that as a scoped programme rather than listing it as a capability, and we publish measured performance for small aerial targets only — because that is the only domain we have measured.

Is 57.2% recall good? Why publish a number that looks bad?

57.2% is cross-dataset and zero-shot, on a dataset the detector has never seen. In-distribution, on a held-out split, it is 86.5%. Nearly every figure published in this sector is the second kind, presented without saying which kind it is. We publish the pair because the pair is the informative thing. When you compare vendors, the useful questions are not the number: which split did it come from, what size band, and what denominator did the false-alarm rate use?

Can I download it and try it on my own footage?

No. Access to the detector runs as a scoped evaluation, on your hardware, conducted together. The evaluation methodology and the track contract specification are documents we will send you; the detector is not distributed as a downloadable model file. We would rather say that plainly than publish a download button that turns into an email thread. The geometry calculator is open and needs nothing from you — it will tell you whether the physics works before anyone talks about software.

Is it SAPIENT compliant?

Not yet, and we will not claim it until it is validated. The interface targets BSI Flex 335 v2.0:2024-03, the current version of the SAPIENT interface control document written by Dstl for the UK MoD. Implementation is planned and has not been validated against a certified decision-making module. The architecture was built for it — local processing, summaries rather than raw feeds — from the first commit.

What does FOVEA control?

Nothing. It is a perception layer: it consumes pixels and emits a track with its uncertainty. There is no actuator interface, no flight control and no guidance loop in it — those are different problems, and this module solves one. Where the track goes, and what your system does with it, is yours to design.

07 · Contact

Request a scoped evaluation.

Request a scoped evaluation

On your hardware, with your camera, on your footage. Ask for the method note, the track contract specification, or integration support for next-generation SAPIENT architectures.