Skip to content

data: exclude episodes by hash; scan Mecka egomotion for failed head tracking - #686

Draft
RyanPCo wants to merge 1 commit into
ryanco/eval-video-wandbfrom
ryanco/mecka-bad-egomotion
Draft

RyanPCo wants to merge 1 commit into
ryanco/eval-video-wandbfrom
ryanco/mecka-bad-egomotion

Conversation

@RyanPCo

@RyanPCo RyanPCo commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Some Mecka episodes have failed head tracking. This PR adds a way to exclude episodes by hash and a script that finds the Mecka ones.

Problem. Of 41,607 local Mecka episodes, 2,866 (6.9%) carry a single obs_head_pose for the whole episode even though the video shows the head moving; 142 more have single-frame head jumps of 0.3–3.7 m. Each action chunk is inv(head_pose_t) · world_keypoints_{t+k}, so with a frozen pose, head motion leaks into the hand trajectory labels. mecka_to_zarr passes the vendor's egomotion through unchanged, so the fault is upstream; reported to the vendor.

Changes

  • DatasetFilter(exclude_hashes=...): a list of hashes or a path to a text file of hashes; a missing file raises. Excluded episodes never match. A pinned hash that is excluded is dropped with a warning instead of raising PinError; excluding every pin raises, since an empty pin set means "no filter". Part of cache_key.
  • scripts/mecka_process/scan_egomotion.py classifies each local episode's head pose (ok / constant / jump / ...) and writes a blocklist in the format exclude_hashes reads.
  • data/mecka_all_6d gains exclude_hashes: null with a comment on how to pass a blocklist. Nothing is excluded by default, so splits are unchanged.

The generated blocklist and the repinned 20% split are kept out of this PR.

tests/unit/test_dataset_filter.py: exclusion by list and file, a missing file raising, dropping excluded pins, and the cache key.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HjCQBqQCr2igFEMR7yUovw

RyanPCo commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch 2 times, most recently from cdfd150 to c031bac Compare September 23, 2026 14:10
@RyanPCo
RyanPCo force-pushed the ryanco/gt-pred-replay branch 2 times, most recently from 804fbf5 to 69a991a Compare September 23, 2026 17:59
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from c031bac to 1befb4b Compare September 23, 2026 17:59
@RyanPCo
RyanPCo force-pushed the ryanco/gt-pred-replay branch from 69a991a to 7959307 Compare September 24, 2026 03:19
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from 1befb4b to 56731c5 Compare September 24, 2026 03:19
@aidang3019
aidang3019 force-pushed the ryanco/mecka-bad-egomotion branch from 56731c5 to c39e112 Compare September 30, 2026 01:07
@aidang3019
aidang3019 force-pushed the ryanco/gt-pred-replay branch from 7959307 to e573cfd Compare September 30, 2026 01:07
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from c39e112 to c5fb24d Compare October 12, 2026 20:26
@RyanPCo
RyanPCo changed the base branch from ryanco/gt-pred-replay to ryanco/eval-video-wandb October 12, 2026 20:27
@RyanPCo
RyanPCo force-pushed the ryanco/eval-video-wandb branch from b649f4e to d04cb33 Compare October 12, 2026 21:50
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from c5fb24d to add5691 Compare October 12, 2026 21:50
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from add5691 to d4b33aa Compare October 12, 2026 23:19
@RyanPCo
RyanPCo force-pushed the ryanco/eval-video-wandb branch from d04cb33 to ab61d1e Compare October 12, 2026 23:19
@RyanPCo RyanPCo mentioned this pull request Oct 19, 2026
@RyanPCo
RyanPCo force-pushed the ryanco/eval-video-wandb branch from ab61d1e to b2dc225 Compare October 19, 2026 19:52
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from d4b33aa to 98d8d22 Compare October 19, 2026 19:53
@RyanPCo
RyanPCo force-pushed the ryanco/eval-video-wandb branch from b2dc225 to d99acaf Compare October 19, 2026 20:22
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from 98d8d22 to cac0fd0 Compare October 19, 2026 20:22
@RyanPCo
RyanPCo force-pushed the ryanco/eval-video-wandb branch from d99acaf to fe8933a Compare October 30, 2026 18:27
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from cac0fd0 to 0a74649 Compare October 30, 2026 18:27
@RyanPCo RyanPCo changed the title data: exclude Mecka episodes with failed egomotion; repin val videos data: exclude episodes by hash; scan Mecka egomotion for failed head tracking Oct 30, 2026
2,866 of 41,607 local Mecka episodes carry one head pose for the whole
episode (no tracking) and 142 have single-frame head jumps of 0.3-3.7 m.
Both corrupt the head-frame action chunks: with a frozen pose, head motion
leaks into the hand trajectory. The vendor's egomotion is passed through
unchanged by mecka_to_zarr, so the fault is upstream.

- DatasetFilter(exclude_hashes=...): a list or a file of hashes. Excluded
  episodes never match; an excluded pin is dropped with a warning (an
  all-excluded pin list raises, since no pins means no filter).
- scan_egomotion.py classifies every local episode's obs_head_pose and
  writes a blocklist in that format.
- mecka_all_6d documents the opt-in override; no blocklist ships here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HjCQBqQCr2igFEMR7yUovw
@RyanPCo
RyanPCo force-pushed the ryanco/mecka-bad-egomotion branch from 0a74649 to bd2cb3e Compare October 30, 2026 23:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant