File size: 2,315 Bytes
adc02fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python
from __future__ import annotations

import argparse
import json
import sys
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
    sys.path.insert(0, str(ROOT))

from dovla_cil.data.lerobot_export import (  # noqa: E402
    LeRobotExportConfig,
    export_lerobot_style_dataset,
)


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(
        description=(
            "Export a DoVLA-CIL dataset to a dependency-light LeRobot-style JSONL interchange "
            "format for external VLA baselines."
        )
    )
    parser.add_argument("--dataset", required=True, help="Source CIL dataset or collection dir.")
    parser.add_argument("--out", required=True, help="Output export directory.")
    parser.add_argument("--split", default="train", help="JSONL split filename stem.")
    parser.add_argument(
        "--selection",
        default="best",
        choices=["best", "expert", "success"],
        help="Which record to export from each CIL group.",
    )
    parser.add_argument("--max-groups", type=int, default=None)
    parser.add_argument(
        "--group-sampling",
        default="sequential",
        choices=["sequential", "task_balanced"],
        help="Ordering used before applying --max-groups.",
    )
    parser.add_argument("--seed", type=int, default=0, help="Seed for balanced group sampling.")
    parser.add_argument(
        "--no-images",
        action="store_true",
        help="Do not copy RGB frames even when observation_ref values are present.",
    )
    parser.add_argument("--image-format", default="jpg", choices=["jpg", "jpeg", "png"])
    return parser.parse_args()


def main() -> int:
    args = parse_args()
    metadata = export_lerobot_style_dataset(
        LeRobotExportConfig(
            dataset_dir=args.dataset,
            out_dir=args.out,
            split=args.split,
            selection=args.selection,
            max_groups=args.max_groups,
            group_sampling=args.group_sampling,
            seed=args.seed,
            copy_images=not args.no_images,
            image_format=args.image_format,
        )
    )
    print(json.dumps(metadata, indent=2, sort_keys=True))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())