JtT: Rethinking Point Trajectory Diffusion for Diverse and Rigid Motion from an Image

Gabrijel Boduljak✉  ·  Yushi Lan  ·  Christian Rupprecht  ·  Andrea Vedaldi

University of Oxford VGG, University of Oxford

✉Correspondence: gabrijel@robots.ox.ac.uk

JtT takes an input scene and a set of query points and samples several predicted futures as point trajectories; a second row shows an input scene, query points, and three diverse samples.
Diverse, physically plausible motion from one image. Given a single frame and an arbitrary set of query points, JtT samples point trajectories for the next \(24\) frames. Top: four futures sampled for the same scene, with queries on a dense grid, a sparse grid, and a handful of isolated points. Bottom: three samples for another scene, each a different but plausible rigid motion of the same objects.

Abstract

We study forecasting rigid-body motion from a single image: generating diverse and physically plausible future trajectories for arbitrary points in a scene, without building rigidity into the architecture or relying on geometric inputs such as depth. Like video generators, recent trajectory generators fail at this task, even in simple synthetic Kubric scenes, despite scaling up model size and training on real data. We show how to solve this with the right architecture and parameterization. Our model, JtT, is a simple diffusion transformer that operates directly in coordinate space and decodes arbitrary and dense query patterns, without the trajectory VAEs or fixed grids assumed in prior work. Through a systematic study of the design space of point trajectory diffusion, we find that diffusing per-frame velocities is the only parameterization that captures rigidity, that it must be paired with the right timestep schedule, and that adding full-resolution RGB at the query points resolves the boundary failures of prior methods. However, evaluating such 2D models rigorously is itself non-trivial. To our knowledge, we are the first to observe that physical plausibility and diversity do not improve together during training: larger models, as used in prior work, memorize the single ground-truth future per training image, becoming more rigid while covering fewer possible futures. Yet prior work has paid little attention to this, so we show how model rankings depend on model size, metric, and stopping time, and adopt a stricter, checkpoint-averaged evaluation protocol. Under this protocol, JtT improves over prior methods on both distributional and rigidity metrics and approaches ground-truth rigidity, with only about \(50\)M parameters.

Method

A trajectory is a sequence \(\boldsymbol{x} = (x_0, \dots, x_T)\) of 2D points that starts at a query location \(q = x_0\). Given an image \(I\) and \(N\) query points \(\mathcal{Q} = \{q_n\}_{n=1}^N\), the model samples trajectories from the conditional distribution \(p(\{\boldsymbol{x}_n\}_{n=1}^N \mid I, \mathcal{Q})\).Compared with prior work, the query set \(\mathcal{Q}\) is supplied at inference rather than fixed, and the model is given only the image as evidence: no goal frame, segmentation, depth, or correspondences. Since an image does not fully determine the state of the scene, many futures are possible, and a useful predictor must capture their distribution rather than a single realization.

JtT, the Just trajectory Transformer, is a single diffusion transformer that operates directly in coordinate space. It is generative, sampling multiple distinct futures per scene; flexible, accepting any number of query points at arbitrary locations; and dense, scaling to thousands of points per scene on a single GPU. The design is deliberately minimal,No VAE, auxiliary losses, rollout fine-tuning, or pre-trained video latents are used. The S model has about \(50\)M parameters. but four choices turn out to be critical: what to diffuse, how to inject visual information, which timestep schedule to use, and how to partition the query tokens.

Overview of JtT: image patch tokens from position, RGB and multi-layer DINOv2 features; query tokens split into a support set and a non-support set; a Read-To-Support block, a Support Encoder, a Non-Support Decoder and a linear Velocity Head.
Overview of JtT. Image patch tokens (gray) concatenate patch position \((x,y)\), RGB content, and multi-layer DINOv2 features (\(l \in \{3,6,9,12\}\)). Query points are tokenized analogously with position, sampled RGB, and noised per-frame velocities \((\Delta_t)_{t=1}^{T}\), then split into a support set (cyan) and a non-support set (pink). A Read-To-Support cross-attention block initializes support tokens from non-support tokens. The Support Encoder (\(\times N\)) refines the support set via interleaved self-attention and cross-attention to image patches. The Non-Support Decoder (\(\times M\)) reads out from the encoded support set in parallel; non-support tokens never attend to each other or back to the image. A linear Velocity Head predicts the rectified-flow velocities, which are accumulated to recover trajectories. All blocks are AdaLN-modulated by the diffusion timestep \(\tau\).

What to diffuse

Each trajectory is parameterized as the sequence of instantaneous velocities \(\Delta_t \equiv x_t - x_{t-1}\), and these are the diffusion target.Velocities are isotropically normalized across the dataset so the diffusion target has roughly unit variance. The trajectory is recovered at inference as \(x_t = q + \sum_{i=1}^{t} \Delta_i\). Compared with absolute coordinates \(x_t\), which couple the target to the query location, and grid-cell offsets \(x_t - x_c\), which assume a fixed inference grid, per-frame velocities are translation-equivariant in the query, lie on a near-zero, dataset-normalized scale, and decouple the trajectory from the pixel grid.

The model is trained with a rectified-flow objective on the linear path \(\Delta_\tau = (1-\tau)\,\Delta_0 + \tau\,\Delta_1\), with \(\Delta_0 \sim \mathcal{N}(0, I)\): $$\mathcal{L}(\theta) = \mathbb{E}\left[\,\big\|\hat{\boldsymbol{v}}_\theta(\Delta_\tau, I, \mathcal{Q}, \tau) - (\Delta_1 - \Delta_0)\big\|_2^2\,\right].$$ The timestep \(\tau\) is sampled from a logit-normal distribution rather than uniformly. A uniform schedule overfits the single observed future per initial condition, whereas logit-normal sampling up-weights mid-noise levels and yields sharper, more diverse samples.With uniform timestep sampling, relative parameterizations lose sample diversity. Logit-normal sampling alleviates this, so velocities with logit-normal sampling are used throughout.

Diffusion target and timestep schedule on Kubric-A, averaged over the last five checkpoints; lower is better. Only velocities capture rigidity (LRTL), and only logit-normal sampling keeps them diverse (FVMD).
Target\(\tau\)FVMD (D)Best-of-\(K\)LRTL
absoluteuniform18,695153.5414.76
offsetsuniform13,915133.689.74
velocitiesuniform19,927125.315.12
absolutelogit-normal20,284125.1525.59
offsetslogit-normal13,883145.5615.91
velocitieslogit-normal14,136138.276.82

Full-resolution RGB at the query points

The image is patchified into a regular \(P \times P\) grid, and each patch token concatenates its pixel center, the RGB patch itself, and DINOv2 features from layers \(3, 6, 9, 12\), in the manner of the multi-layer aggregation in DPT.Adding register tokens to DINOv2 improves all metrics (Best-of-\(K\) \(138.27 \to 126.00\)), and multi-layer features further improve Best-of-\(K\) and foreground rigidity. Other extractors do not help consistently. Each query token likewise carries the RGB value sampled at its location. Sampling RGB at full resolution at the query point substantially improves Best-of-\(K\) (\(182.73 \to 138.27\)) and rigidity (LRTL \(8.49 \to 6.82\)), whereas DINO features bilinearly sampled at the query point, as in MotionForecasting, degrade most metrics.

Trajectories generated by Track2Act, MotionForecasting, WHN and JtT for the same Kubric scene.
Qualitative comparison on Kubric. Baselines often miss smaller objects (red) or object parts (dark green), and frequently fail to capture boundary points accurately (peach), primarily due to their low-resolution conditioning. JtT reliably captures objects and their parts while achieving near-perfect boundary accuracy, which we attribute to full-resolution RGB at the query points.

Flexible inference

Self-attention across all \(N\) query tokens scales quadratically, which makes dense prediction on a \(256 \times 256\) grid all but intractable. JtT instead splits the queries into a support set of \(S\) tokens and a non-support set of \(M = N - S\) tokens. Support tokens attend to each other and to the image patches and reason globally. Non-support tokens are decoded in parallel by cross-attending the encoded support set alone, so dense readout is linear in \(M\) and the same encoded support serves any query pattern.

Support and non-support queries
32 support tokens
At every training step the partition is drawn at random
The support set (cyan) attends to itself and to the image; the non-support set (pink) only reads from the support set. Move the slider to change \(S\) and compare the per-block attention cost with full self-attention over all \(N = 256\) queries.

During training, \(N \sim \mathcal{U}[1, 1024]\) pixel queries are sampled and partitioned at random into support and non-support sets.Unlike Perceiver IO, D4RT and CoTracker3, which use latent or support tokens for tracking, the support set here lives in a generative model and is re-partitioned at random at every training step. This randomization is a strong inductive prior: trajectories must be consistent under arbitrary subsampling and orderings, and any token may be promoted to or demoted from the support role. A single model therefore decodes arbitrary and dense query patterns without retraining, and lets the user trade compute for accuracy through \(S\).

Adding the support-set architecture (Dense) to the baseline in which every query is in the support set (Sparse); averages over the last five checkpoints. Beyond enabling dense decoding, it improves FVMD and foreground rigidity for both sizes, and every metric for S.
ModelFVMD (D)FVMD (S)Best-of-\(K\)LRTL (ALL)LRTL (FG)
S (Sparse)12,54616,769160.257.696.57
S (Dense)11,80715,695135.856.845.82
B (Sparse)13,51417,716124.376.676.01
B (Dense)13,26617,437130.446.805.87

Plausibility and diversity do not improve together

Prior work on trajectory forecasting typically reports a single checkpoint, sometimes for one model size only, without analyzing how the metrics evolve during training.Evaluation follows the protocol of WHN on Kubric-A, whose multiple simulated futures per image permit distributional metrics. FVMD is a Fréchet distance between trajectory features, over the dataset (D) or per image (S). Best-of-\(K\) is the MSE between \(K\) generated and \(K\) simulated futures. LRTL is a rigidity proxy: the rank-5 reconstruction error of trajectories grouped by object. Tracking JtT-XS, -S and -B every \(10\)K steps shows that larger models converge faster but then memorize the single ground-truth future available per training image: their validation flow-matching loss rises while the training loss keeps falling. For B, the validation loss is lowest at \(60\)K steps and nearly doubles by \(130\)K.

Training dynamics on Kubric-A
distributional fidelity, whole dataset
JtT-XS JtT-S JtT-B lowest validation loss thin: checkpoints · thick: 3-checkpoint moving average
Evolution of downstream metrics and flow-matching loss during training on Kubric-A; lower is better. Larger models attain their best FVMD early and then memorize, as their validation loss (dashed) rises while the training loss (solid) keeps falling. Dotted lines mark each model's lowest validation loss.

The first effect of overfitting is that the model collapses to predicting a single mode for each input image, which raises FVMD, while LRTL and Best-of-\(K\) keep improving; the LRTL of B eventually falls below that of the ground truth (\(5.31\) against \(6.68\) at \(130\)K). XS, in contrast, does not overfit, and its FVMD decreases steadily. Plausibility and diversity therefore do not improve together, and rankings depend on when training stops: at \(50\)K steps B has the lowest FVMD (D) of the three models, and at \(130\)K the highest.The minimum of the validation flow-matching loss coincides with, or lies within one checkpoint of, the best FVMD for every model size. It needs one forward pass per sample, whereas FVMD needs many sampled futures per image, so it is a cheap proxy for model selection.

To avoid single-checkpoint results, an EMA checkpoint is evaluated every \(10\)K steps and the average over the last five (\(60\)K to \(100\)K) is reported together with the best among them, as Average (Best).

Comparison with prior works

On the Kubric-A benchmark of WHN, every JtT variant improves over all prior trajectory generators on FVMD (D), FVMD (S) and rigidity, with LRTL close to the ground truth.Prior methods are reported at their single published checkpoint, which favors them. GPTF obtains a better Best-of-\(K\), but at the expense of rigidity: its samples are closer to the ground truth pointwise, yet less physically plausible. Methods that diffuse absolute coordinates (Track2Act, WHN, GPTF) obtain poor rigidity, whereas MotionForecasting, the only one diffusing velocities, is the most rigid among them. JtT nevertheless outperforms MotionForecasting on all metrics without using the occlusion labels it requires.

Motion generation quality on Kubric-A; lower is better. Prior methods: single checkpoint. JtT: Average (Best) of the last five checkpoints. †reimplementation; *estimated.
ModelSizeFVMD (D)FVMD (S)Best-of-\(K\)LRTL
Ground truth—4,9418,845110.856.68
Track2Act600M16,73522,509250.8015.80
WHN (L, latent)250M13,74517,838127.0014.10
WHN (B, coordinate)50M14,51918,551137.8023.70
MotionForecasting†100M20,17826,379186.478.20
GPTF30M*—17,78695.6014.60
JtT-S (Sparse)50M12,546 (12,238)16,769 (16,351)160.25 (129.77)7.69 (6.91)
JtT-B (Sparse)200M13,514 (11,812)17,716 (15,829)124.37 (115.24)6.67 (6.13)
JtT-S (Dense)55M11,807 (11,591)15,695 (15,452)135.85 (128.69)6.84 (6.64)
JtT-B (Dense)230M13,266 (12,333)17,437 (15,958)130.44 (118.76)6.80 (6.13)

Sampler

Samples are drawn by solving the SDE with the learned drift via \(1{,}000\) Euler–Maruyama steps and accumulating the predicted velocities. This sampler gives the best rigidity, and needs at least \(250\) steps to be competitive. Euler integration of the probability-flow ODE is robust to the number of steps and achieves similar rigidity with far fewer evaluations.With only \(10\) steps, the ODE sampler improves both FVMD variants and Best-of-\(K\) while using \(100\times\) fewer function evaluations, at the cost of slightly lower rigidity (LRTL \(7.05\) against \(6.77\)).

Results on synthetic data

Each scene below is animated over the \(24\) predicted frames. The top row is the simulated ground truth with four of its futures, followed by four rollouts from JtT-B with the dense and sparse variants, and four rollouts each from WHN, MotionForecasting and Track2Act. Hover a video for the playback controls.

Comparison on the Kubric-A benchmark of WHN. Rows: ground truth, JtT-B (dense), JtT-B (sparse), WHN (L), MotionForecasting (B), Track2Act (L). Columns: the input frame and four rollouts. Objects are colored by instance; JtT moves each object rigidly and samples distinct futures across rollouts.

Results on real data

Following WHN, JtT is also trained on real videos from Physics 101, which records simple physical experiments, and on Cityscapes, with identical hyperparameters and training stopped once overfitting is observed on the held-out set.Real videos provide a single observed future per image and no object-level rigidity ground truth, so the rigorous evaluation of the synthetic experiments is not possible here and these results are qualitative. On Physics 101, it generates rigid motion for rigid bodies, such as objects sliding down a ramp or falling onto a table, captures the interaction between rigid and non-rigid bodies, such as a hand releasing an object or a block entering water, and propagates forces through contact.

Physics 101
Physics 101. Input frame, ground-truth tracks, and a JtT-S sample on held-out sequences. The sample diversity tab shows four samples per input frame: objects slide, fall and bounce differently across samples while remaining consistent with the ground truth.

On Cityscapes, JtT preserves the rigidity of objects that should move rigidly, such as cars, and handles egocentric camera motion well. It generalizes to some extent to deformable objects such as pedestrians, whose overall motion is plausible but less precise than for rigid objects.Cityscapes samples are reasonable but less diverse than on Kubric-A, likely because the model is trained on about \(5\times\) less data: \(2{,}975\) sequences.

Cityscapes
Cityscapes. Input frame, ground-truth tracks, and a JtT-B sample, using the training and evaluation split of WHN. The sample diversity tab shows three samples per input frame.

Does explicit geometry help?

Oracle geometry from the simulator, as inverse depth at the query points or as queries and trajectories in 3D world coordinates, helps mainly in Best-of-\(K\).For these experiments Kubric-A and Kubric-D are re-rendered with point-to-point correspondence between 2D and 3D trajectories, so absolute numbers differ slightly from the main table. In rigidity, the 2D-only model closes most of the gap between prior 2D methods and the 3D oracle, which supports the design. Integrating monocular 3D reconstruction models is promising future work.

Kubric-A with oracle geometry; averages over the last five checkpoints. Prior 2D methods lie at LRTL \(8.20\) to \(23.70\) on the same benchmark.
InputFVMD (D)FVMD (S)Best-of-\(K\)LRTL (ALL)
2D (ours)14,09720,074120.046.16
2D + inverse depth13,94619,82792.515.59
3D world coordinates12,90918,51895.024.37

Citation

@article{boduljak2026jtt,
  title   = {JtT: Rethinking Point Trajectory Diffusion for Diverse and Rigid Motion from an Image},
  author  = {Gabrijel Boduljak and Yushi Lan and Christian Rupprecht and Andrea Vedaldi},
  journal = {arXiv preprint},
  year    = {2026}
}