Skip to content

Latest commit

 

History

History
116 lines (88 loc) · 4.58 KB

DATA_PIPELINE.md

File metadata and controls

116 lines (88 loc) · 4.58 KB

Data Preparation

Main README · Data pipeline guide

Pipeline

raw dataset
  -> data_pipeline/dataset_conversion
  -> NavVLA LeRobot v3 vln_train
  -> optional data_pipeline/trajectory_augmentation
  -> optional data_pipeline/image_collection
  -> data_pipeline/dataset_conversion --adapter enhanced_vln
  -> trainable enhanced LeRobot split
  -> tool/navvla validation, statistics, BATS context, and visual-token cache

Source data, generated datasets, and simulator scenes stay outside Git. Put model-ready datasets under local/data/ or point a local config to another storage location.

Download the released datasets and simulator environments from the SimpleNAV ModelScope organization.

Components

Component Install Entry point Output
dataset_conversion Root SimpleNav base vln-convert, vln-validate, vln-cosfly, vln-render-vlnce NavVLA LeRobot v3 split
trajectory_augmentation Root SimpleNav base vln-augment Smoothed/resampled trajectory package and render requests
image_collection Root base + airsim for rendering vln-collect Four-view AirSim videos and camera metadata
tool/navvla Main project environment python -m tool.navvla.cli... Validation, repair, statistics, context, cache, and open-loop artifacts

All components belong to the root package. From the repository root, install base with uv sync --frozen; use --extra airsim for collection or --extra habitat for vln-render-vlnce. Conversion of existing images and trajectory augmentation require no simulator extra. See installation for native wheels.

Convert a raw dataset

cd data_pipeline/dataset_conversion

uv run --no-sync vln-convert \
  --adapter aerialvln \
  --source-root /path/to/raw/AerialVLN \
  --output-root /path/to/AerialVLN_lerobot \
  --dataset-name vln_train \
  --split train \
  --write-workers 8 \
  --validate

Available adapters include TravelUAV, AerialVLN, rendered VLN-CE, FLIGHT, IndoorUAV, HUGE, EmbodiedNav, OpenFly, OpenScene, nuScenes, and completed enhanced VLN packages. Run vln-convert --help and the component guide for adapter-specific arguments.

Augment and render trajectories

cd data_pipeline/trajectory_augmentation

uv run --no-sync vln-augment validate-profile \
  --profile profiles/aerialvln.json \
  --dataset-root /path/to/AerialVLN_lerobot

uv run --no-sync vln-augment export-profile \
  --profile profiles/aerialvln.json \
  --dataset-root /path/to/AerialVLN_lerobot \
  --dry-run

After inspecting the dry run, export the package, validate it, then collect images:

uv run --no-sync vln-collect preflight \
  --package-dir /path/to/AerialVLN_lerobot/vln_train_enhanced \
  --env-archive-root /path/to/AirSim_scenes \
  --env-cache-root /path/to/scene-cache \
  --gpus 0 --workers 1 --run-id waypoint-v1

Continue with prepare-envs, pilot, and run as listed in the image collection guide. Use the same run ID and worker layout when resuming.

Convert the completed package into an independent trainable split:

uv run --no-sync vln-convert \
  --adapter enhanced_vln \
  --source-root /path/to/AerialVLN_lerobot/vln_train_enhanced \
  --output-root /path/to/enhanced_vln_lerobot/AerialVLN \
  --dataset-name vln_train_enhanced_lerobot \
  --split train \
  --load-workers 8 \
  --validate

Required output

A model-ready split contains:

<split>/
├── data/chunk-*/part-*.parquet
├── meta/info.json
├── meta/episodes/chunk-*/part-*.parquet
├── videos/<camera>/chunk-*/part-*.mp4
├── dataset_statistics.json
└── meta/navvla_*.{json,jsonl,npy,npz,parquet}

The exact derived artifacts depend on online-image versus visual-token-cache mode. See Data Structure and State/Action Protocol.

Validate before training

cd /path/to/SimpleNAV
uv run --no-sync python -m tool.navvla.cli.validate_dataset \
  /path/to/model_ready_split \
  --visual-token-mode online_images \
  --smoke-load 8

Before using an adapter in training, verify scene and episode identity, frame count, camera order, coordinate axes, z convention, yaw units/sign, action anchoring, and dataset_statistics.json.