version 2 · latest

Video2Force

Feasibility check — predicting contact force from video

① Idea & goal of the feasibility check ② Literature — self-supervised learning ③ Datasets & metrics
④ Results — supervised feasibility ⑤ Self-supervised force learning ⑥ Conclusions

Ivan Domrachev · sinew · 2026  ·  → chapters · ↓ detail

Goal

The missing modality

  • Data factories collect enormous visuomotor datasets.
  • Almost all of it is vision-only — no haptic / force.
  • Idea: generate the missing force modality from video — augment vision data for free.
vision → generate missing modality → augmented data → policy training
Goal

The idea — climb a hierarchy

  • Contact — where is the contact? (gate)
  • Direction — which way is the interaction?
  • Force — how strong is it? (magnitude)

Across embodiments: manipulator → dexterous hand → gloves.

Goal

Goal of the feasibility check

Using existing datasets, predict

  • contact · direction · magnitude

…and ask

  • Are videos enough to extract force?
  • Which info is feasible to extract?
  • Is there room for generalization?

Hypotheses

  • H1 — video detects contact / no-contact.
  • H2 — video gives an approximate direction.
  • H3 — large-scale data → generalization to unseen robots / scenes.
Literature

Self-supervised learning — three families

The shared recipe

  • X — context signal (for us: video)
  • Y — target signal (for us: force)
  • Z — latent variable that conditions prediction
  • D(·,·) — energy: low for compatible pairs

(a) Joint-Embedding (b) Generative (c) JEPA

Literature

(a) Joint-Embedding — CLIP & DINO

match sx, sy
CLIP — image↔text contrastive
DINO — teacher↔student self-distillation

Strong transferable backbones — but representation collapse & limited prediction.

Literature

(b) Generative — MAE

decode ŷ from sx + z
MAE — reconstruct masked patches in pixel space

Pixel-level objective → reproduces noise, weaker inductive bias for downstream tasks.

Literature

(c) JEPA — predict the latent

predict sy from sx + z, in latent space
V-JEPA 2 — masked latent prediction, EMA target

Best of both: latent prediction → versatile features, no pixel noise. We build on V-JEPA.

Literature

Sparsh — SSL for touch (closest to our work)

Sparsh-MAE / DINO / JEPA on 462k tactile images (unpaired, mixed sensors)
  • Goal: a sensor-invariant tactile backbone.
  • Eval: force, slip, pose, grasp stability, texture, maze.
  • Sparsh-DINO best for physics (force, pose); IJEPA best for touch semantics.
  • Gap for us: ignores F/T data; tactile understanding, not generation.
per-task radar: E2E vs Sparsh variants
Literature

Goal, refined

Step 1 — Supervised

Pre-trained visual encoders + paired video–force data → predict force.

Step 2 — Self-supervised

Learn a force representation given vision as context (no force labels at test).

Plan: find datasets → train supervised baselines → derive SSL approaches.

Datasets

FMB — Functional Manipulation Benchmark

real FMB cell — 3 boards · 54 pegs · single- & multi-object insertion

Features

  • 4 cameras (2 external + 2 wrist)
  • Panda F/T, 10 Hz · ~385k frames, ~11 h
  • Substage division provided

Issues

  • Biased force — poorly compensated
  • Low variety — one task, one robot, one env
Datasets

REASSEMBLE — NIST task board

REASSEMBLE — insert / remove on a NIST board (with force trace)

Features

  • Same board, 17 object insertions
  • Separate F/T sensor, 100 Hz, <1 N error — very clean
  • Event cameras, microphones, RGB; substages

Issues

  • Pick & place show zero force → dropped
  • One robot, one env
Datasets

RH20T — diverse, multi-robot

real RH20T rollout — Panda (our held-out OOD robot)
7 configs · 4 robots · mixed F/T sensors

Features

  • 147 tasks · 4 robots · ~25M frames
  • 100 Hz · ~30 s median episode · substages

Issues

  • Too big — hard to load & work with
  • Mediocre quality — F/T bias, no wrist camera
Datasets

Comparison

DatasetTaskSamplesF/T qualityVariety
FMBPeg insertion1 844PoorPoor
REASSEMBLEObject insert / remove2 262PerfectMediocre
RH20TDiverse manipulation12 666MediocreHuge

16 772 rollouts · 178 hours of high-freq F/T (after heavy preprocessing).

Plan: train on each separately, then combine for joint training.

Datasets

What we predict & how we measure

Predict — 3 heads

  • Contact event (bool)
  • Force unit direction (3-D)
  • Force magnitude (scalar)

Metrics

  • Contact — F1
  • Direction — cosine + cos-lift (gain over trivial mean dir)
  • Magnitude — MAE (N)

cos-lift matters — a high cosine can be trivial when force barely changes direction.

Cycle 1

Supervised feasibility

method → results → ablations → conclusions

Cycle 1 · Primer

What is a TCN?

Temporal Convolutional Network — stacked 1-D dilated convolutions over the frame sequence.

  • Dilation doubles per layer (1·2·4·8) → receptive field grows geometrically.
  • Used acausally (offline post-processing) → taps reach future frames too.
Cycle 1 · Method

Frozen V-JEPA → TCN

Encoder frozen → cache features once → train a small TCN in minutes.

Three heads predict contact · direction · magnitude together.

Cycle 1 · Result · FMB

FMB — contact & magnitude work

true vs predicted ‖F‖ (top) and direction cosine vs trivial baseline (bottom)
FMBF1dirliftMAE
in-dist0.7790.965+0.0151.06
OOD (9th peg)0.7670.953+0.0421.06
  • Contact feasible; errors ≈ data noise.
  • Magnitude surprisingly accurate.
  • Direction high cosine but near-trivial lift.
Cycle 1 · Result · REASSEMBLE

REASSEMBLE — clean force, real direction

direction supremacy: model cos 0.928 vs trivial 0.572 (lift +0.356)
F1MAEdirlift
REASSEMBLE0.8740.740.906+0.34
FMB0.7791.060.965+0.015
  • Better F/T data → better contact (+9.5% F1).
  • Direction lift +0.34 — genuinely non-trivial.
Cycle 1 · Result · RH20T

RH20T — generalization is hard

splitF1MAEdirlift
in-dist0.711.860.390.27
OOD task0.682.230.600.33
OOD robot0.601.960.260.17
OOD both0.571.550.250.08
  • OOD task moderate; OOD robot poor.
  • Multi-robot generalization possible but messy.
OOD-task: dir ok, mag under-scaled
OOD-robot (Panda): misses spikes
Cycle 1 · Ablations

What encoder & head?

Encoder

modelF1dir
DINOv2-B (image)0.52
V-JEPA ViT-B (video)0.64
V-JEPA ViT-L0.760.969
V-JEPA ViT-g (1B)0.7640.974
ViT-L E2E (LoRA)0.7790.965
video ≫ image · saturates past -B · temporal features matter

Head

headF1
TCN0.768
BiGRU0.723
Transformer0.689

Predict Mag+Dir+Contact together (0.51→0.78). Mean pooling ≈ attentive → keep mean.

Cycle 1 · Conclusions

Hypotheses, answered

  • H1 — contact: feasible ✓ (REASSEMBLE F1 0.874).
  • Magnitude: surprisingly good — catches trends.
  • H2 — direction: partial — real lift on clean data, trivial on FMB.
  • H3 — generalization: partial — OOD-task ok, OOD-robot poor.

Open problem: cross-domain transfer (camera, robot, dataset). → motivates SSL.

Cycle 2

Self-supervised force learning

idea → method → results → conclusion

Cycle 2 · Idea

SSL of a force representation

masked-prediction SSL (JEPA-style)
X masked force series · Y true force · Z encoded video
  • Use force as the self-supervisory anchor — physical, camera-independent.
  • Two routes: force-as-image vs force time-series.
Cycle 2 · Method

Cross-modal force-augment

Align video → force (view-invariant anchor) → encoder forgets the camera.

Augment, don't replace: concat onto raw features → can only add.

Cycle 2 · Alternatives

What else we tried

approachideaoutcome
Cross-view DINOalign camera ↔ camera (video only)collapses (eff-rank 33) — fake invariance
InfoNCE force-aligncontrastive video ↔ forceloss floors (force autocorrelation)
Replace featuresforce-aligned embedding aloneOOD win, but lossy in-distribution
Augment (ours)concat force-aligned onto rawOOD win · zero in-dist cost
Joint trainingtrain on both datasets (labeled)reaches native ceilings; SSL ties

DINO-style camera↔camera was the natural baseline — it collapsed. Force as the anchor is what worked.

Cycle 2 · Result A

Unseen camera: 0.28 → 0.70

held-out cameracontact F1direction
trivial (constant)0.460.47
V-JEPA + TCN0.280.41
+ force-augment0.700.78
  • Baseline is below trivial — negative transfer.
  • SSL clears trivial; in-distribution preserved.
Cycle 2 · Result B

Cross-dataset direction — lift restored

direction cosineREASS→FMBFMB→REASS
trivial (constant)0.690.47
V-JEPA + TCN0.410.40
+ force-augment (UDA)0.870.83
  • Plain transfer is below trivial — negative cos-lift (Cycle-1's metric).
  • World-frame force + unlabeled target video → wall falls.
Cycle 2 · Latent · camera

The latent forgets the camera

t-SNE by camera (REASS, 4 views): Raw = 4 clean clusters → encodes which camera. Force-JEPA = fully intermixed → viewpoint forgotten.

cam NMI
(want low)
Raw1.00
Force-JEPA0.009
Cycle 2 · Latent · task

…but keeps the task

t-SNE by task (insert / remove): Force-JEPA shows the cleanest task separation — it strips the camera but retains what is happening.

task purity
(want high)
Raw0.63
Force-JEPA0.71
Cycle 2 · Latent · robot

…and becomes robot-agnostic

t-SNE by robot (RH20T, 4 robots): Raw separates robots by scene/embodiment. Force-JEPA intermixes them — useful, since v2f wants a robot-agnostic force signal.

robot NMI
(descriptive)
Raw0.53
Force-JEPA0.10
Cycle 2 · Latent · collapse check

View-invariant and diverse — not collapsed

The trap: a collapsed encoder fakes invariance. So read cross-view closeness with diversity.

cross-vieweff-rank
Rawview-variant396
DINOinvariant*33*
Force-JEPAinvariant61

*DINO collapses (uniformity≈0) — fake invariance. Force-JEPA sits in the good corner; CKA vs raw ≈ 0.01 (orthogonal).

Cycle 2 · Conclusion

What SSL bought us

  • A force-anchored embedding is view-invariant, task-structured, uncollapsed.
  • Wins the severe gaps — unseen camera & cross-dataset direction — at zero in-dist cost.
  • Pays off when the gap is severe and unlabeled target video exists.
Conclusions

Where each tool wins

regimewinnersignal
contact event (H1)feasible ✓clean force → F1 0.87
in-distribution forcefrozen V-JEPA + TCNREASSEMBLE lift +0.34
unseen cameraforce-augment SSLF1 0.28 → 0.70
cross-dataset directionforce-augment (UDA)cos 0.40 → 0.85
cross-robot (H3)openmajor room
Conclusions

Next

Push cross-robot / cross-scene generalization (H3)
Joint training + force-frame harmonization
Scale the SSL force encoder (masked force-series)

Video is enough for contact & magnitude — and SSL unlocks the transfer.