The tokenizer cuts each 128 × 128 frame into an 8 × 8 grid of 16 px cells. A router decides which cells carry an event this frame; a fovea gives a few of them high resolution. A temporal router then groups frames into level-1 and level-2 tokens. This page tracks, run by run, whether each of those choices lands where the video actually changes.
rs_small, rs_base and rs_large are one fixed design with learned decisions inside it; the three differ only in widths and in the depth of the top-level network. The video below runs rs_base once on held-out and draws every intermediate tensor: the masks, scores, attention maps, tokens and losses are the model's own. Nothing in it is mocked up.
real/train_mem.py). A camera is shown for 10 s (cue), then G frames of other robots, then the same camera returns with a 4×4 block of cells (a quarter of the frame) blacked out on every query frame. The model must paint the hidden block. Orange box: the hidden block. Each model's reconstruction is pasted in; mse is over the block in this frame.real/probe_memory.py). Two streams differ only in their first 200 frames: a cue from the query's own camera (match) or from another robot (mismatch). Then G frames of other held-out robots, then later frames of the cue's camera. Everything after the cue is identical, so any difference in the model's state at the query is memory of the cue. Measured on the first 32 query frames, previous actions zeroed, 16 pairs per gap.rs_base's event and high-res cells; the same for the pixel-change heuristic rs_heur; rs_base's prediction of frame t+1; the true frame t+1. Strip: the last 96 frames of motion, events per frame and temporal tokens. The clip is the 150-frame window with the most motion among the first 1,500 held-out frames, at the stream's own frame rate.rs_d1 and rs_d4 never saw most of these streams in training, so their all-stream means are not a data-scaling result; see the next table.