VidParse: Online Parsing of Egocentric Procedures Like a Pro

University of Maryland, College Park
ECCV 2026
Tea, parsed online, with playback sped up 3×. On the right is the task graph induced from the training sequences. Filled boxes are steps already committed, the highlighted box is the current one, and blue edges are the transitions taken.

Abstract

Translating continuous, noisy egocentric video into discrete, temporally ordered action steps is fraught with visual challenges. Heavy ego-motion, transient occlusions, and the high intra-class variability of unscripted human–object interactions cause frame-level online temporal models to struggle, often resulting in severe over-segmentation and structural collapse. We present VidParse, an online, training-free framework that treats activity understanding as a graph-constrained inference problem. Rather than relying on learned temporal filters, we identify semantic transitions using a temporal similarity matrix over manipulation-anchored features extracted from frozen foundation models, prioritising foreground hand–object interactions. A beam search decoder then leverages an induced procedural task graph to enforce valid action transitions and prune impossible trajectories. By anchoring robust visual segments to hard procedural constraints, our approach preserves long-range state transitions and achieves up to a 10× improvement in multi-step parsing accuracy over strong online baselines, without a single gradient update.

Watch it parse

Each clip is a real run on a test video. Three bars run under it on a shared clock: ground truth, the parse VidParse has committed to, and the ProTAS baseline on the same frames. Background is dropped from all three so they line up. Alongside is the beam at the current playhead. Scroll it to see which hypotheses are still alive and what sequence each one has accumulated.

Beam at the playhead

One column per emitted segment, one box per live hypothesis, each joined to the hypothesis it extends. The highlighted chain is the current best path. The remaining boxes are alternatives the graph still allows. Scroll sideways to see earlier segments.

Method

The pipeline has three parts and none of them are trained. We keep a frozen backbone and add two things to it: a choice of where in the frame to pool its features, and a constraint on which action sequences the decoder is allowed to produce.

The VidParse pipeline

(a) Manipulation-anchored features

A frozen DINOv2 ViT-L/14 gives patch tokens, and a frozen hand–object detector gives the interaction box. We average only the tokens that fall inside that box, so the descriptor stays on whatever the hands are holding and ignores the rest of the kitchen.

frame → (1024,)

(b) Training-free boundaries

Within an action the frames look alike, so a temporal similarity matrix shows homogeneous blocks along its diagonal. We slide a Gaussian-tapered checkerboard kernel down it and take peaks in the novelty score as boundaries. Nothing is fit to data, and only the kernel window is buffered.

kernel 2 s · peak height 9 · min gap d = 20

(c) Graph-constrained decoding

Each segment is scored against k-means action prototypes, and a beam search picks the best-scoring sequence of actions. The search may only follow edges of a task graph induced from the training sequences, so a transition the graph lacks is never expanded.

B = 10

The constraint the decoder obeys

The graph is induced offline from the training sequences and never sees test video. Click a step to see which steps have to come before it and which ones it makes available. Those are the edges the beam search is restricted to.

may open the procedure optional step may close it first visit revisit 100%

Results

Frame accuracy excluding background, edit distance, and segmental F1 at IoU {0.1, 0.25, 0.5}, over the 53 EgoPER test videos of the ProTAS split.

MethodInferenceTrain-free AccEditF1@0.1F1@0.25F1@0.5
MS-TCNoffline87.5292.3492.6091.8186.12
MS-TCNonline25.4044.8144.0931.7815.72
ProTASonline76.6165.5064.2662.5951.31
VidParseonline80.6988.6991.1488.5377.61

Feature comparison

Every row uses the same decoder and differs only in the features. Restricting the pooling to the interaction box helps more than either a larger backbone or a video–language model.

RepresentationMAFLevelAccEditF1@0.5
DINOv2 ViT-L, full frameframe69.0982.6861.42
EgoVLPv2clip53.4062.7543.66
EgoVLPv2clip60.1170.6152.10
EgoVLPv2frame78.1089.3573.02
EgoVLPv2frame80.3291.4677.48
DINOv2 ViT-L (ours)frame80.6988.6977.61

Speed

All times are seconds per video. The hand–object detector and the backbone account for almost all of it, while boundary detection and decoding run on CPU. The total is still well under the ProTAS baseline, whose decoder runs on GPU.

SettingHODBackboneParseTotalFPSAccF1@0.5
ProTAS (GPU decoder)79.5706.0785.54.576.651.3
Ours, B = 133936.824.8400.68.758.552.1
Ours, B = 333936.828.2404.08.776.372.4
Ours, B = 533936.828.4404.28.678.574.5
Ours, B = 1033936.832.8408.68.680.777.6

Does the parse keep its shape?

Frame accuracy asks only whether individual frames carry the right label, and says little about whether the predicted sequence is a plausible procedure. N-step transition accuracy instead counts how many n-step action transitions in the prediction match the ground truth, swept over progressive completion of each video. The gap grows with n: at five and seven steps our AUC is several times the baseline's.

N-step transition precision-recall on EgoPER

Against a frame-level model

ProTAS predicts a label per frame and flickers near the boundaries. Decoding at the segment level under a graph constraint produces longer, steadier runs. Background frames are removed for legibility.

Qualitative segmentation against ProTAS

BibTeX

@inproceedings{gupta2026vidparse,
  title         = {VidParse: Online Parsing of Egocentric Procedures Like a Pro},
  author        = {Gupta, Anubhav and Kambhamettu, Archit and Agarwal, Vatsal
                   and Kumar, Pulkit and Shrivastava, Abhinav},
  booktitle     = {European Conference on Computer Vision (ECCV)},
  year          = {2026},
  eprint        = {2608.27562},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CV}
}