Motion trackingBeta

Track

Follow anything that moves.

Motion tracking

The fly's oldest trick.

Track follows a chosen object through a video with the connectome's motion detectors: no class labels, no re-detection, just a point and a velocity, every frame.

Elementary motion detectors in the optic lobe are the best-understood circuit in the fly. Track exposes them: give it a point, and the brain keeps its gaze on it through occlusion and camera motion.

Tracks through occlusion at 120 fps.

Track runs at 120 fps on a laptop and keeps 0.78 AUC on LaSOT, with no per-object model and a 3 MB adapter.

target Figures marked "target" are design targets for the first release, not measurements.

120 fpstargetThroughputApple M-series, optic lobe subnet
0.78targetAUCLaSOT single-object tracking
How it is built

Same brain, its own wiring.

Input adapters occupy afferent regions, output adapters read efferent ones. Co-processors feed in through the embedding port.

The 3D view needs WebGPU or WebGL2.
Engine
  • FlyCore v0.1.0
  • weights v0.1.0-beta
Input adapters
  • frames (compound eye)
  • seed point
Output adapters
  • point, velocity
Co-processors
  • none
Python
import flycore

brain = flycore.load("flylabs/track")      # engine + weights + adapters
tracker = brain.seed(frame0, point=(410, 220))
for frame in video:
    p, v = tracker(frame)
# p -> (x, y); v -> (vx, vy) px/s
Use cases

Follow anything that moves.

Camera follow and auto-framing

Keep the subject centred in a video call or a sports stream.

Sports and lab analytics

Trajectories of balls, animals or cells, with no labelling.

Limits
  • Single object per instance; run several for several.
  • Beta: optic-lobe subnet only, not the full connectome.