diff --git a/docs/source/annotation_pipeline.mdx b/docs/source/annotation_pipeline.mdx index 45396ff67..bd423121d 100644 --- a/docs/source/annotation_pipeline.mdx +++ b/docs/source/annotation_pipeline.mdx @@ -239,6 +239,56 @@ Every module is on by default and can be toggled independently (set to | `--vqa.restrict_to_default_camera` | `false` | Ground VQA only on `--vlm.camera_key` (else every camera). | | `--executor.episode_parallelism` | `16` | Episodes processed concurrently within each phase. | +## Camera-view curation + +`lerobot-curate-cameras` is a separate, lightweight command that uses the same +VLM backend for a **dataset-filtering / curation** pass. It downloads only the +**first episode**, then for each camera view asks the VLM to: + +1. **flag** whether the view is blurry / unusable, and +2. **label** the view with a canonical name from a closed vocabulary + (`top`, `wrist`, `front`, `bottom`, `left`, `right`, plus two-word combos + like `left_wrist`). + +It runs in one of two modes: + +- `--mode=report` (default) — write the labels + verdicts into `meta/` + (`meta/camera_curation.json` and a `curation` block on each camera in + `meta/info.json`). Nothing is moved; this is the cheap triage pass and works + for any dataset. +- `--mode=rename` — apply the labels by renaming each camera key to + `observation.images.