version 3 · 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 ⑦ Roadmap — what's next ⑧ Strategy — funding & startup

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 visible force tokens · Y masked force latents · Z mask tokens (target positions, no video)
  • Use force as the self-supervisory anchor — physical, camera-independent.
  • Two routes: force-as-image vs force time-series.
  • Force-only SSL — no video in this stage; video enters at alignment (next slide).
Cycle 2 · Method · Stage 2

Cross-modal DINO alignment

Train the video tower to a frozen, scene-blind force teacher — DINO self-distillation, no labels, no negatives.

Scene-blind anchor → video forgets the camera → robot-agnostic embedding. Freeze the aligned trunk.

Cycle 2 · Method · Stage 3

Augment & predict

Concat the frozen aligned trunk (384) onto raw V-JEPA (2048) → 2432-d → TCN 3-head.

Augment, don't replace: can only add (zero in-dist cost). Only stage that uses labels.

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
Roadmap

Three directions to push past the limits

Contact works, direction is partial, cross-robot stays open — here's how we attack it next.

Roadmap

Where we go from here

1 · Transfer, on our terms

Push cross-dataset transfer further — and stop testing only on public data. Bring in in-house lab recordings as both new held-out domains and training sources.

Cross-domain transfer (H3) is the standing open problem.

2 · Dexterous hands

Extend force recovery beyond a single gripper toward dexterous manipulation. Sourcing FEEL and an Origami dataset now.

Early — a direction, not a result.

3 · Scale it up

Pool everything together and train jointly. Hypothesis: does scale unlock the generalization per-dataset training couldn't?

A hypothesis to test — not a proven result.

Roadmap

Transfer on our terms · scale to joint training

Cross-dataset + in-house data

SSL only helped under severe-but-bridgeable gaps — so the bar is generalization we can prove, not hope for.

  • Validate on data we recorded ourselves, end-to-end.
  • Our lab data serves double duty: held-out test domain and extra training source.
  • Goal: transfer onto data we control, not just public benchmarks.

Scale → joint training

Combined corpus is roughly Sparsh-scale:

F/T data~178 h
Rollouts~16.7k
Samples @10 Hz~6.4M
Sparsh (tactile imgs)~462k

Unproven: does pooling all datasets unlock cross-robot generalization?

samples = rollouts × mean clip × 10 Hz · RH20T dominates · ≈14× Sparsh by count — but 10 Hz frames are temporally correlated → lower effective diversity

These are the directions the next chapter's funding & startup plan has to resource.

Strategy

From feasibility to funding

Video-only force recovery doesn't fully work yet — contact & magnitude land, direction & cross-robot don't. Now: who funds closing the gap.

Three tracks — compute, grant, startup — built on a promising but incomplete result.

Strategy

Funding & startup tracks

NVIDIA — compute

Inception-style ask: GPUs.

We already hold a Sparsh-scale dataset and baselines showing video→force works.

Sparsh trained on 8×A100exactly what NVIDIA can provide.

The one missing ingredient to scale is compute — not data, not a result.

Ask = 8×A100 (Sparsh-equivalent).

French–Korea — grant

We have shown a proof-of-concept for the force-prediction task.

Plan: apply to the bilateral program and continue this direction.

Open governance question: does running a startup conflict with or interfere with the academic grant?

Unresolved — flag, not a blocker.

Startup — product

Thesis: dexterous force-data recovery for data factories.

Recover the missing force modality from vision-only manipulation data, then sell it to data-collection / robot-learning companies.

Must-prove dependency: force data actually improves downstream training — no proof, no demand.

Appendix

Appendix

contact-debounce (require-N-consecutive) ablation

Appendix · Contact threshold

Does the “N-consecutive” contact rule help F1?

Setup

Contact gate = debounce(‖F‖ > τ, N). The cached-feature pipeline behind the published numbers already uses raw N=1 (no debounce); the N=5 rule lived only in a legacy label path. We swept N ∈ {1,3,5} over the train-target and eval-GT independently; the matched diagonal (train-N = eval-N) is shown.

Matched-N diagonal F1

datasetN=1N=3N=5
REASSEMBLE0.8870.8910.888
FMB0.7770.7780.751
RH20T*0.5510.553

*single τ / capped / per-robot — confounded

No contact-F1 gain from the debounce on any dataset → keep N=1. Each model peaks on its own eval-N, but the matched diagonal is flat — the rule only changes what counts as a contact, not how well it’s predicted.