← Lab · Matthew Visher

Lab specimen · 2026-10-02

72 visible, wrong car.

Google DeepMind's TAPNext++ follows 72 points on a blue SUV from a single frame of my own camera. Turn the dial. Watch it hold through a pole, lose the SUV behind the trees, find it again in a gap, then put 68 of its 72 points on a red car going the other way.

1 · TRACKED
frame 60
visible points
72 / 72
centroid of visible points
x 1000 · y 554
on the blue SUV, near lane, moving right

The curve gives it away

Visible points per frame. Behind the trees the count drops to a handful, then flickers back, up to 13 points on the SUV where it shows between the trees. Then it climbs to 72 of 72. Sixty-eight of those are on a red car in the far lane going the other way. The other four are grid points sitting on the road.

Receipt

The functions below are the ones drawing this page, printed from the running code. The phase pill is computed by the state machine, not placed by hand.

tapnext-trail / specimen / specimen.js@ 54eb839

    
track.py · stdout, verbatim
72 points x 152 frames in 6.3s on mps -> tracks-blue.json
node verify.mjs · stdout, verbatim
tracked    60-69  (10 frames)
occluded   70-73  (4 frames)
lost       74-82  (9 frames)
in the gap 83-90  (8 frames)
lost       91-91  (1 frames)
in the gap 92-97  (6 frames)
lost       98-103  (6 frames)
wrong car  104-132  (29 frames)
lost       133-151  (19 frames)
second peak [ 110, 72 ] centroid [ 1125, 467, 72 ]

Footage: AXIS Q6358-LE on my own LAN, 2026-10-02, 1080p25 over RTSP, six-second cut; the camera's own analytics border is burned into the stream. Model: TAPNext++ PyTorch checkpoint (google-deepmind/tapnet @ 730cda1, Apache-2.0) on Apple MPS, 72 query points in a 12×6 grid on frame 60, tracked online one frame at a time. Trails draw only across consecutive frames the model marked visible. Derived data: the phase ranges and centroids are computed from the exported tracks by the printed functions.