From 1030ea0070ad40209065fa06b56e4fb209e8a7c1 Mon Sep 17 00:00:00 2001 From: Remi Date: Tue, 23 Apr 2024 14:13:25 +0200 Subject: [PATCH] Loads episode_data_index and stats during dataset __init__ (#85) Co-authored-by: Simon Alibert <75076266+aliberts@users.noreply.github.com> Co-authored-by: Alexander Soare --- .github/poetry/cpu/poetry.lock | 31 +- .github/poetry/cpu/pyproject.toml | 2 +- README.md | 2 +- download_and_upload_dataset.py | 268 +++++++++++------- examples/1_load_hugging_face_dataset.py | 26 +- examples/2_load_lerobot_dataset.py | 17 +- lerobot/__init__.py | 7 +- lerobot/common/datasets/aloha.py | 33 +-- lerobot/common/datasets/factory.py | 32 +-- lerobot/common/datasets/pusht.py | 33 +-- lerobot/common/datasets/utils.py | 193 +++++++++++-- lerobot/common/datasets/xarm.py | 45 +-- lerobot/common/envs/factory.py | 1 + lerobot/common/envs/utils.py | 13 +- lerobot/common/transforms.py | 35 --- lerobot/scripts/eval.py | 45 ++- lerobot/scripts/train.py | 24 +- lerobot/scripts/visualize_dataset.py | 26 +- poetry.lock | 25 +- pyproject.toml | 3 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 928 bytes .../meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2904 bytes .../train/data-00000-of-00001.arrow | Bin 14792344 -> 14783992 bytes .../train/dataset_info.json | 12 +- .../train/state.json | 2 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 928 bytes .../meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2904 bytes .../train/data-00000-of-00001.arrow | Bin 10420456 -> 10413704 bytes .../train/dataset_info.json | 12 +- .../train/state.json | 2 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 928 bytes .../meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2904 bytes .../train/data-00000-of-00001.arrow | Bin 10468392 -> 10461640 bytes .../train/dataset_info.json | 12 +- .../train/state.json | 2 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 928 bytes .../meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2904 bytes .../train/data-00000-of-00001.arrow | Bin 11702176 -> 11695424 bytes .../train/dataset_info.json | 12 +- .../train/state.json | 2 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 3432 bytes tests/data/pusht/meta_data/info.json | 3 + tests/data/pusht/meta_data/stats.safetensors | Bin 0 -> 3056 bytes .../pusht/train/data-00000-of-00001.arrow | Bin 200712 -> 197792 bytes tests/data/pusht/train/dataset_info.json | 12 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 136 bytes tests/data/pusht/train/meta_data/info.json | 3 + .../train/meta_data/stats_action.safetensors | Bin 0 -> 272 bytes .../stats_observation.image.safetensors | Bin 0 -> 304 bytes .../stats_observation.state.safetensors | Bin 0 -> 272 bytes tests/data/pusht/train/state.json | 2 +- .../pusht/frame_0.safetensors | Bin 0 -> 111338 bytes .../pusht/frame_1.safetensors | Bin 0 -> 111338 bytes .../pusht/frame_159.safetensors | Bin 0 -> 111338 bytes .../pusht/frame_160.safetensors | Bin 0 -> 111338 bytes .../pusht/frame_80.safetensors | Bin 0 -> 111338 bytes .../pusht/frame_81.safetensors | Bin 0 -> 111338 bytes .../meta_data/episode_data_index.safetensors | Bin 0 -> 12936 bytes .../data/xarm_lift_medium/meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2832 bytes .../train/data-00000-of-00001.arrow | Bin 104368 -> 103616 bytes .../xarm_lift_medium/train/dataset_info.json | 12 +- tests/data/xarm_lift_medium/train/state.json | 2 +- .../meta_data/episode_data_index.safetensors | Bin 0 -> 12936 bytes .../meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2832 bytes .../train/data-00000-of-00001.arrow | Bin 0 -> 95864 bytes .../train/dataset_info.json | 51 ++++ .../xarm_lift_medium_replay/train/state.json | 13 + .../meta_data/episode_data_index.safetensors | Bin 0 -> 12936 bytes .../data/xarm_push_medium/meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2808 bytes .../train/data-00000-of-00001.arrow | Bin 0 -> 99944 bytes .../xarm_push_medium/train/dataset_info.json | 51 ++++ tests/data/xarm_push_medium/train/state.json | 13 + .../meta_data/episode_data_index.safetensors | Bin 0 -> 12936 bytes .../meta_data/info.json | 3 + .../meta_data/stats.safetensors | Bin 0 -> 2808 bytes .../train/data-00000-of-00001.arrow | Bin 0 -> 105064 bytes .../train/dataset_info.json | 51 ++++ .../xarm_push_medium_replay/train/state.json | 13 + tests/scripts/save_dataset_to_safetensors.py | 71 +++++ tests/test_datasets.py | 170 ++++++++--- tests/test_examples.py | 1 + tests/test_visualize_dataset.py | 31 ++ 89 files changed, 1008 insertions(+), 432 deletions(-) create mode 100644 tests/data/aloha_sim_insertion_human/meta_data/episode_data_index.safetensors create mode 100644 tests/data/aloha_sim_insertion_human/meta_data/info.json create mode 100644 tests/data/aloha_sim_insertion_human/meta_data/stats.safetensors create mode 100644 tests/data/aloha_sim_insertion_scripted/meta_data/episode_data_index.safetensors create mode 100644 tests/data/aloha_sim_insertion_scripted/meta_data/info.json create mode 100644 tests/data/aloha_sim_insertion_scripted/meta_data/stats.safetensors create mode 100644 tests/data/aloha_sim_transfer_cube_human/meta_data/episode_data_index.safetensors create mode 100644 tests/data/aloha_sim_transfer_cube_human/meta_data/info.json create mode 100644 tests/data/aloha_sim_transfer_cube_human/meta_data/stats.safetensors create mode 100644 tests/data/aloha_sim_transfer_cube_scripted/meta_data/episode_data_index.safetensors create mode 100644 tests/data/aloha_sim_transfer_cube_scripted/meta_data/info.json create mode 100644 tests/data/aloha_sim_transfer_cube_scripted/meta_data/stats.safetensors create mode 100644 tests/data/pusht/meta_data/episode_data_index.safetensors create mode 100644 tests/data/pusht/meta_data/info.json create mode 100644 tests/data/pusht/meta_data/stats.safetensors create mode 100644 tests/data/pusht/train/meta_data/episode_data_index.safetensors create mode 100644 tests/data/pusht/train/meta_data/info.json create mode 100644 tests/data/pusht/train/meta_data/stats_action.safetensors create mode 100644 tests/data/pusht/train/meta_data/stats_observation.image.safetensors create mode 100644 tests/data/pusht/train/meta_data/stats_observation.state.safetensors create mode 100644 tests/data/save_dataset_to_safetensors/pusht/frame_0.safetensors create mode 100644 tests/data/save_dataset_to_safetensors/pusht/frame_1.safetensors create mode 100644 tests/data/save_dataset_to_safetensors/pusht/frame_159.safetensors create mode 100644 tests/data/save_dataset_to_safetensors/pusht/frame_160.safetensors create mode 100644 tests/data/save_dataset_to_safetensors/pusht/frame_80.safetensors create mode 100644 tests/data/save_dataset_to_safetensors/pusht/frame_81.safetensors create mode 100644 tests/data/xarm_lift_medium/meta_data/episode_data_index.safetensors create mode 100644 tests/data/xarm_lift_medium/meta_data/info.json create mode 100644 tests/data/xarm_lift_medium/meta_data/stats.safetensors create mode 100644 tests/data/xarm_lift_medium_replay/meta_data/episode_data_index.safetensors create mode 100644 tests/data/xarm_lift_medium_replay/meta_data/info.json create mode 100644 tests/data/xarm_lift_medium_replay/meta_data/stats.safetensors create mode 100644 tests/data/xarm_lift_medium_replay/train/data-00000-of-00001.arrow create mode 100644 tests/data/xarm_lift_medium_replay/train/dataset_info.json create mode 100644 tests/data/xarm_lift_medium_replay/train/state.json create mode 100644 tests/data/xarm_push_medium/meta_data/episode_data_index.safetensors create mode 100644 tests/data/xarm_push_medium/meta_data/info.json create mode 100644 tests/data/xarm_push_medium/meta_data/stats.safetensors create mode 100644 tests/data/xarm_push_medium/train/data-00000-of-00001.arrow create mode 100644 tests/data/xarm_push_medium/train/dataset_info.json create mode 100644 tests/data/xarm_push_medium/train/state.json create mode 100644 tests/data/xarm_push_medium_replay/meta_data/episode_data_index.safetensors create mode 100644 tests/data/xarm_push_medium_replay/meta_data/info.json create mode 100644 tests/data/xarm_push_medium_replay/meta_data/stats.safetensors create mode 100644 tests/data/xarm_push_medium_replay/train/data-00000-of-00001.arrow create mode 100644 tests/data/xarm_push_medium_replay/train/dataset_info.json create mode 100644 tests/data/xarm_push_medium_replay/train/state.json create mode 100644 tests/scripts/save_dataset_to_safetensors.py create mode 100644 tests/test_visualize_dataset.py diff --git a/.github/poetry/cpu/poetry.lock b/.github/poetry/cpu/poetry.lock index dfd664b4..7b4a746f 100644 --- a/.github/poetry/cpu/poetry.lock +++ b/.github/poetry/cpu/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "absl-py" @@ -522,21 +522,21 @@ toml = ["tomli"] [[package]] name = "datasets" -version = "2.18.0" +version = "2.19.0" description = "HuggingFace community-driven open-source library of datasets" optional = false python-versions = ">=3.8.0" files = [ - {file = "datasets-2.18.0-py3-none-any.whl", hash = "sha256:f1bbf0e2896917a914de01cbd37075b14deea3837af87ad0d9f697388ccaeb50"}, - {file = "datasets-2.18.0.tar.gz", hash = "sha256:cdf8b8c6abf7316377ba4f49f9589a4c74556d6b481afd0abd2284f3d69185cb"}, + {file = "datasets-2.19.0-py3-none-any.whl", hash = "sha256:f57c5316e123d4721b970c68c1cb856505f289cda58f5557ffe745b49c011a8e"}, + {file = "datasets-2.19.0.tar.gz", hash = "sha256:0b47e08cc7af2c6800a42cadc4657b22a0afc7197786c8986d703c08d90886a6"}, ] [package.dependencies] aiohttp = "*" dill = ">=0.3.0,<0.3.9" filelock = "*" -fsspec = {version = ">=2023.1.0,<=2024.2.0", extras = ["http"]} -huggingface-hub = ">=0.19.4" +fsspec = {version = ">=2023.1.0,<=2024.3.1", extras = ["http"]} +huggingface-hub = ">=0.21.2" multiprocess = "*" numpy = ">=1.17" packaging = "*" @@ -552,15 +552,15 @@ xxhash = "*" apache-beam = ["apache-beam (>=2.26.0)"] audio = ["librosa", "soundfile (>=0.12.1)"] benchmarks = ["tensorflow (==2.12.0)", "torch (==2.0.1)", "transformers (==4.30.1)"] -dev = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "tensorflow-macos", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] -docs = ["s3fs", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow-macos", "torch", "transformers"] +dev = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] +docs = ["s3fs", "tensorflow (>=2.6.0)", "torch", "transformers"] jax = ["jax (>=0.3.14)", "jaxlib (>=0.3.14)"] metrics-tests = ["Werkzeug (>=1.0.1)", "accelerate", "bert-score (>=0.3.6)", "jiwer", "langdetect", "mauve-text", "nltk", "requests-file (>=1.5.1)", "rouge-score", "sacrebleu", "sacremoses", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "spacy (>=3.0.0)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "typer (<0.5.0)"] quality = ["ruff (>=0.3.0)"] s3 = ["s3fs"] -tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow-macos"] -tensorflow-gpu = ["tensorflow-gpu (>=2.2.0,!=2.6.0,!=2.6.1)"] -tests = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "tensorflow-macos", "tiktoken", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] +tensorflow = ["tensorflow (>=2.6.0)"] +tensorflow-gpu = ["tensorflow (>=2.6.0)"] +tests = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] torch = ["torch"] vision = ["Pillow (>=6.2.1)"] @@ -1524,7 +1524,6 @@ description = "Powerful and Pythonic XML processing library combining libxml2/li optional = true python-versions = ">=3.6" files = [ - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, @@ -1534,7 +1533,6 @@ files = [ {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, @@ -1544,7 +1542,6 @@ files = [ {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, @@ -1570,8 +1567,8 @@ files = [ {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, + {file = "lxml-5.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cfbac9f6149174f76df7e08c2e28b19d74aed90cad60383ad8671d3af7d0502f"}, {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, @@ -1579,7 +1576,6 @@ files = [ {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, @@ -2688,7 +2684,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -3919,4 +3914,4 @@ xarm = ["gym-xarm"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "bd9c506d2499d5e1e3b5e8b1a0f65df45c8feef38d89d0daeade56847fdb6a2e" +content-hash = "e526416d1282dea2550680b2be7fcf9ff6e1c67ac89d34c684b486d94a6addee" diff --git a/.github/poetry/cpu/pyproject.toml b/.github/poetry/cpu/pyproject.toml index b13a9e97..bea7085c 100644 --- a/.github/poetry/cpu/pyproject.toml +++ b/.github/poetry/cpu/pyproject.toml @@ -53,7 +53,7 @@ pre-commit = {version = "^3.7.0", optional = true} debugpy = {version = "^1.8.1", optional = true} pytest = {version = "^8.1.0", optional = true} pytest-cov = {version = "^5.0.0", optional = true} -datasets = "^2.18.0" +datasets = "^2.19.0" [tool.poetry.extras] diff --git a/README.md b/README.md index 202b90e6..a0045bf2 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli upload $HF_USER/$DATASET data/$DATAS You will need to set the corresponding version as a default argument in your dataset class: ```python - version: str | None = "v1.0", + version: str | None = "v1.1", ``` See: [`lerobot/common/datasets/pusht.py`](https://github.com/Cadene/lerobot/blob/main/lerobot/common/datasets/pusht.py) diff --git a/download_and_upload_dataset.py b/download_and_upload_dataset.py index d0d35771..8e1e27ce 100644 --- a/download_and_upload_dataset.py +++ b/download_and_upload_dataset.py @@ -4,6 +4,7 @@ useless dependencies when using datasets. """ import io +import json import pickle import shutil from pathlib import Path @@ -14,16 +15,20 @@ import numpy as np import torch import tqdm from datasets import Dataset, Features, Image, Sequence, Value +from huggingface_hub import HfApi from PIL import Image as PILImage +from safetensors.torch import save_file + +from lerobot.common.datasets.utils import compute_stats, flatten_dict, hf_transform_to_torch -def download_and_upload(root, root_tests, dataset_id): +def download_and_upload(root, revision, dataset_id): if "pusht" in dataset_id: - download_and_upload_pusht(root, root_tests, dataset_id) + download_and_upload_pusht(root, revision, dataset_id) elif "xarm" in dataset_id: - download_and_upload_xarm(root, root_tests, dataset_id) + download_and_upload_xarm(root, revision, dataset_id) elif "aloha" in dataset_id: - download_and_upload_aloha(root, root_tests, dataset_id) + download_and_upload_aloha(root, revision, dataset_id) else: raise ValueError(dataset_id) @@ -56,7 +61,102 @@ def download_and_extract_zip(url: str, destination_folder: Path) -> bool: return False -def download_and_upload_pusht(root, root_tests, dataset_id="pusht", fps=10): +def concatenate_episodes(ep_dicts): + data_dict = {} + + keys = ep_dicts[0].keys() + for key in keys: + if torch.is_tensor(ep_dicts[0][key][0]): + data_dict[key] = torch.cat([ep_dict[key] for ep_dict in ep_dicts]) + else: + if key not in data_dict: + data_dict[key] = [] + for ep_dict in ep_dicts: + for x in ep_dict[key]: + data_dict[key].append(x) + + total_frames = data_dict["frame_index"].shape[0] + data_dict["index"] = torch.arange(0, total_frames, 1) + return data_dict + + +def push_to_hub(hf_dataset, episode_data_index, info, stats, root, revision, dataset_id): + # push to main to indicate latest version + hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True) + + # push to version branch + hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True, revision=revision) + + # create and store meta_data + meta_data_dir = root / dataset_id / "meta_data" + meta_data_dir.mkdir(parents=True, exist_ok=True) + + api = HfApi() + + # info + info_path = meta_data_dir / "info.json" + with open(str(info_path), "w") as f: + json.dump(info, f, indent=4) + api.upload_file( + path_or_fileobj=info_path, + path_in_repo=str(info_path).replace(f"{root}/{dataset_id}", ""), + repo_id=f"lerobot/{dataset_id}", + repo_type="dataset", + ) + api.upload_file( + path_or_fileobj=info_path, + path_in_repo=str(info_path).replace(f"{root}/{dataset_id}", ""), + repo_id=f"lerobot/{dataset_id}", + repo_type="dataset", + revision=revision, + ) + + # stats + stats_path = meta_data_dir / "stats.safetensors" + save_file(flatten_dict(stats), stats_path) + api.upload_file( + path_or_fileobj=stats_path, + path_in_repo=str(stats_path).replace(f"{root}/{dataset_id}", ""), + repo_id=f"lerobot/{dataset_id}", + repo_type="dataset", + ) + api.upload_file( + path_or_fileobj=stats_path, + path_in_repo=str(stats_path).replace(f"{root}/{dataset_id}", ""), + repo_id=f"lerobot/{dataset_id}", + repo_type="dataset", + revision=revision, + ) + + # episode_data_index + episode_data_index = {key: torch.tensor(episode_data_index[key]) for key in episode_data_index} + ep_data_idx_path = meta_data_dir / "episode_data_index.safetensors" + save_file(episode_data_index, ep_data_idx_path) + api.upload_file( + path_or_fileobj=ep_data_idx_path, + path_in_repo=str(ep_data_idx_path).replace(f"{root}/{dataset_id}", ""), + repo_id=f"lerobot/{dataset_id}", + repo_type="dataset", + ) + api.upload_file( + path_or_fileobj=ep_data_idx_path, + path_in_repo=str(ep_data_idx_path).replace(f"{root}/{dataset_id}", ""), + repo_id=f"lerobot/{dataset_id}", + repo_type="dataset", + revision=revision, + ) + + # copy in tests folder, the first episode and the meta_data directory + num_items_first_ep = episode_data_index["to"][0] - episode_data_index["from"][0] + hf_dataset.select(range(num_items_first_ep)).with_format("torch").save_to_disk( + f"tests/data/{dataset_id}/train" + ) + if Path(f"tests/data/{dataset_id}/meta_data").exists(): + shutil.rmtree(f"tests/data/{dataset_id}/meta_data") + shutil.copytree(meta_data_dir, f"tests/data/{dataset_id}/meta_data") + + +def download_and_upload_pusht(root, revision, dataset_id="pusht", fps=10): try: import pymunk from gym_pusht.envs.pusht import PushTEnv, pymunk_to_shapely @@ -99,6 +199,7 @@ def download_and_upload_pusht(root, root_tests, dataset_id="pusht", fps=10): actions = torch.from_numpy(dataset_dict["action"]) ep_dicts = [] + episode_data_index = {"from": [], "to": []} id_from = 0 for episode_id in tqdm.tqdm(range(num_episodes)): @@ -151,8 +252,8 @@ def download_and_upload_pusht(root, root_tests, dataset_id="pusht", fps=10): "observation.image": [PILImage.fromarray(x.numpy()) for x in image], "observation.state": agent_pos, "action": actions[id_from:id_to], - "episode_id": torch.tensor([episode_id] * num_frames, dtype=torch.int), - "frame_id": torch.arange(0, num_frames, 1), + "episode_index": torch.tensor([episode_id] * num_frames, dtype=torch.int), + "frame_index": torch.arange(0, num_frames, 1), "timestamp": torch.arange(0, num_frames, 1) / fps, # "next.observation.image": image[1:], # "next.observation.state": agent_pos[1:], @@ -160,28 +261,15 @@ def download_and_upload_pusht(root, root_tests, dataset_id="pusht", fps=10): "next.reward": torch.cat([reward[1:], reward[[-1]]]), "next.done": torch.cat([done[1:], done[[-1]]]), "next.success": torch.cat([success[1:], success[[-1]]]), - "episode_data_index_from": torch.tensor([id_from] * num_frames), - "episode_data_index_to": torch.tensor([id_from + num_frames] * num_frames), } ep_dicts.append(ep_dict) + episode_data_index["from"].append(id_from) + episode_data_index["to"].append(id_from + num_frames) + id_from += num_frames - data_dict = {} - - keys = ep_dicts[0].keys() - for key in keys: - if torch.is_tensor(ep_dicts[0][key][0]): - data_dict[key] = torch.cat([ep_dict[key] for ep_dict in ep_dicts]) - else: - if key not in data_dict: - data_dict[key] = [] - for ep_dict in ep_dicts: - for x in ep_dict[key]: - data_dict[key].append(x) - - total_frames = id_from - data_dict["index"] = torch.arange(0, total_frames, 1) + data_dict = concatenate_episodes(ep_dicts) features = { "observation.image": Image(), @@ -189,35 +277,35 @@ def download_and_upload_pusht(root, root_tests, dataset_id="pusht", fps=10): length=data_dict["observation.state"].shape[1], feature=Value(dtype="float32", id=None) ), "action": Sequence(length=data_dict["action"].shape[1], feature=Value(dtype="float32", id=None)), - "episode_id": Value(dtype="int64", id=None), - "frame_id": Value(dtype="int64", id=None), + "episode_index": Value(dtype="int64", id=None), + "frame_index": Value(dtype="int64", id=None), "timestamp": Value(dtype="float32", id=None), "next.reward": Value(dtype="float32", id=None), "next.done": Value(dtype="bool", id=None), "next.success": Value(dtype="bool", id=None), "index": Value(dtype="int64", id=None), - "episode_data_index_from": Value(dtype="int64", id=None), - "episode_data_index_to": Value(dtype="int64", id=None), } features = Features(features) hf_dataset = Dataset.from_dict(data_dict, features=features) - hf_dataset = hf_dataset.with_format("torch") + hf_dataset.set_transform(hf_transform_to_torch) - num_items_first_ep = ep_dicts[0]["frame_id"].shape[0] - hf_dataset.select(range(num_items_first_ep)).save_to_disk(f"{root_tests}/{dataset_id}/train") - hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True) - hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True, revision="v1.0") + info = { + "fps": fps, + } + stats = compute_stats(hf_dataset) + push_to_hub(hf_dataset, episode_data_index, info, stats, root, revision, dataset_id) -def download_and_upload_xarm(root, root_tests, dataset_id, fps=15): +def download_and_upload_xarm(root, revision, dataset_id, fps=15): root = Path(root) - raw_dir = root / f"{dataset_id}_raw" + raw_dir = root / "xarm_datasets_raw" if not raw_dir.exists(): import zipfile import gdown raw_dir.mkdir(parents=True, exist_ok=True) + # from https://github.com/fyhMer/fowm/blob/main/scripts/download_datasets.py url = "https://drive.google.com/uc?id=1nhxpykGtPDhmQKm-_B8zBSywVRdgeVya" zip_path = raw_dir / "data.zip" gdown.download(url, str(zip_path), quiet=False) @@ -234,13 +322,13 @@ def download_and_upload_xarm(root, root_tests, dataset_id, fps=15): with open(dataset_path, "rb") as f: dataset_dict = pickle.load(f) - total_frames = dataset_dict["actions"].shape[0] - ep_dicts = [] + episode_data_index = {"from": [], "to": []} id_from = 0 id_to = 0 episode_id = 0 + total_frames = dataset_dict["actions"].shape[0] for i in tqdm.tqdm(range(total_frames)): id_to += 1 @@ -264,35 +352,23 @@ def download_and_upload_xarm(root, root_tests, dataset_id, fps=15): "observation.image": [PILImage.fromarray(x.numpy()) for x in image], "observation.state": state, "action": action, - "episode_id": torch.tensor([episode_id] * num_frames, dtype=torch.int), - "frame_id": torch.arange(0, num_frames, 1), + "episode_index": torch.tensor([episode_id] * num_frames, dtype=torch.int), + "frame_index": torch.arange(0, num_frames, 1), "timestamp": torch.arange(0, num_frames, 1) / fps, # "next.observation.image": next_image, # "next.observation.state": next_state, "next.reward": next_reward, "next.done": next_done, - "episode_data_index_from": torch.tensor([id_from] * num_frames), - "episode_data_index_to": torch.tensor([id_from + num_frames] * num_frames), } ep_dicts.append(ep_dict) + episode_data_index["from"].append(id_from) + episode_data_index["to"].append(id_from + num_frames) + id_from = id_to episode_id += 1 - data_dict = {} - keys = ep_dicts[0].keys() - for key in keys: - if torch.is_tensor(ep_dicts[0][key][0]): - data_dict[key] = torch.cat([ep_dict[key] for ep_dict in ep_dicts]) - else: - if key not in data_dict: - data_dict[key] = [] - for ep_dict in ep_dicts: - for x in ep_dict[key]: - data_dict[key].append(x) - - total_frames = id_from - data_dict["index"] = torch.arange(0, total_frames, 1) + data_dict = concatenate_episodes(ep_dicts) features = { "observation.image": Image(), @@ -300,27 +376,26 @@ def download_and_upload_xarm(root, root_tests, dataset_id, fps=15): length=data_dict["observation.state"].shape[1], feature=Value(dtype="float32", id=None) ), "action": Sequence(length=data_dict["action"].shape[1], feature=Value(dtype="float32", id=None)), - "episode_id": Value(dtype="int64", id=None), - "frame_id": Value(dtype="int64", id=None), + "episode_index": Value(dtype="int64", id=None), + "frame_index": Value(dtype="int64", id=None), "timestamp": Value(dtype="float32", id=None), "next.reward": Value(dtype="float32", id=None), "next.done": Value(dtype="bool", id=None), #'next.success': Value(dtype='bool', id=None), "index": Value(dtype="int64", id=None), - "episode_data_index_from": Value(dtype="int64", id=None), - "episode_data_index_to": Value(dtype="int64", id=None), } features = Features(features) hf_dataset = Dataset.from_dict(data_dict, features=features) - hf_dataset = hf_dataset.with_format("torch") + hf_dataset.set_transform(hf_transform_to_torch) - num_items_first_ep = ep_dicts[0]["frame_id"].shape[0] - hf_dataset.select(range(num_items_first_ep)).save_to_disk(f"{root_tests}/{dataset_id}/train") - hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True) - hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True, revision="v1.0") + info = { + "fps": fps, + } + stats = compute_stats(hf_dataset) + push_to_hub(hf_dataset, episode_data_index, info, stats, root, revision, dataset_id) -def download_and_upload_aloha(root, root_tests, dataset_id, fps=50): +def download_and_upload_aloha(root, revision, dataset_id, fps=50): folder_urls = { "aloha_sim_insertion_human": "https://drive.google.com/drive/folders/1RgyD0JgTX30H4IM5XZn8I3zSV_mr8pyF", "aloha_sim_insertion_scripted": "https://drive.google.com/drive/folders/1TsojQQSXtHEoGnqgJ3gmpPQR2DPLtS2N", @@ -381,6 +456,7 @@ def download_and_upload_aloha(root, root_tests, dataset_id, fps=50): gdown.download(ep49_urls[dataset_id], output=str(raw_dir / "episode_49.hdf5"), fuzzy=True) ep_dicts = [] + episode_data_index = {"from": [], "to": []} id_from = 0 for ep_id in tqdm.tqdm(range(num_episodes[dataset_id])): @@ -408,40 +484,26 @@ def download_and_upload_aloha(root, root_tests, dataset_id, fps=50): { "observation.state": state, "action": action, - "episode_id": torch.tensor([ep_id] * num_frames), - "frame_id": torch.arange(0, num_frames, 1), + "episode_index": torch.tensor([ep_id] * num_frames), + "frame_index": torch.arange(0, num_frames, 1), "timestamp": torch.arange(0, num_frames, 1) / fps, # "next.observation.state": state, # TODO(rcadene): compute reward and success # "next.reward": reward, "next.done": done, # "next.success": success, - "episode_data_index_from": torch.tensor([id_from] * num_frames), - "episode_data_index_to": torch.tensor([id_from + num_frames] * num_frames), } ) assert isinstance(ep_id, int) ep_dicts.append(ep_dict) + episode_data_index["from"].append(id_from) + episode_data_index["to"].append(id_from + num_frames) + id_from += num_frames - data_dict = {} - - data_dict = {} - keys = ep_dicts[0].keys() - for key in keys: - if torch.is_tensor(ep_dicts[0][key][0]): - data_dict[key] = torch.cat([ep_dict[key] for ep_dict in ep_dicts]) - else: - if key not in data_dict: - data_dict[key] = [] - for ep_dict in ep_dicts: - for x in ep_dict[key]: - data_dict[key].append(x) - - total_frames = id_from - data_dict["index"] = torch.arange(0, total_frames, 1) + data_dict = concatenate_episodes(ep_dicts) features = { "observation.images.top": Image(), @@ -449,39 +511,39 @@ def download_and_upload_aloha(root, root_tests, dataset_id, fps=50): length=data_dict["observation.state"].shape[1], feature=Value(dtype="float32", id=None) ), "action": Sequence(length=data_dict["action"].shape[1], feature=Value(dtype="float32", id=None)), - "episode_id": Value(dtype="int64", id=None), - "frame_id": Value(dtype="int64", id=None), + "episode_index": Value(dtype="int64", id=None), + "frame_index": Value(dtype="int64", id=None), "timestamp": Value(dtype="float32", id=None), #'next.reward': Value(dtype='float32', id=None), "next.done": Value(dtype="bool", id=None), #'next.success': Value(dtype='bool', id=None), "index": Value(dtype="int64", id=None), - "episode_data_index_from": Value(dtype="int64", id=None), - "episode_data_index_to": Value(dtype="int64", id=None), } features = Features(features) hf_dataset = Dataset.from_dict(data_dict, features=features) - hf_dataset = hf_dataset.with_format("torch") + hf_dataset.set_transform(hf_transform_to_torch) - num_items_first_ep = ep_dicts[0]["frame_id"].shape[0] - hf_dataset.select(range(num_items_first_ep)).save_to_disk(f"{root_tests}/{dataset_id}/train") - hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True) - hf_dataset.push_to_hub(f"lerobot/{dataset_id}", token=True, revision="v1.0") + info = { + "fps": fps, + } + stats = compute_stats(hf_dataset) + push_to_hub(hf_dataset, episode_data_index, info, stats, root, revision, dataset_id) if __name__ == "__main__": root = "data" - root_tests = "tests/data" + revision = "v1.1" dataset_ids = [ - # "pusht", - # "xarm_lift_medium", - # "aloha_sim_insertion_human", - # "aloha_sim_insertion_scripted", - # "aloha_sim_transfer_cube_human", + "pusht", + "xarm_lift_medium", + "xarm_lift_medium_replay", + "xarm_push_medium", + "xarm_push_medium_replay", + "aloha_sim_insertion_human", + "aloha_sim_insertion_scripted", + "aloha_sim_transfer_cube_human", "aloha_sim_transfer_cube_scripted", ] for dataset_id in dataset_ids: - download_and_upload(root, root_tests, dataset_id) - # assume stats have been precomputed - shutil.copy(f"{root}/{dataset_id}/stats.pth", f"{root_tests}/{dataset_id}/stats.pth") + download_and_upload(root, revision, dataset_id) diff --git a/examples/1_load_hugging_face_dataset.py b/examples/1_load_hugging_face_dataset.py index 17d28914..d249394a 100644 --- a/examples/1_load_hugging_face_dataset.py +++ b/examples/1_load_hugging_face_dataset.py @@ -10,10 +10,13 @@ As an example, this script saves frames of episode number 5 of the PushT dataset This script supports several Hugging Face datasets, among which: 1. [Pusht](https://huggingface.co/datasets/lerobot/pusht) 2. [Xarm Lift Medium](https://huggingface.co/datasets/lerobot/xarm_lift_medium) -3. [Aloha Sim Insertion Human](https://huggingface.co/datasets/lerobot/aloha_sim_insertion_human) -4. [Aloha Sim Insertion Scripted](https://huggingface.co/datasets/lerobot/aloha_sim_insertion_scripted) -5. [Aloha Sim Transfer Cube Human](https://huggingface.co/datasets/lerobot/aloha_sim_transfer_cube_human) -6. [Aloha Sim Transfer Cube Scripted](https://huggingface.co/datasets/lerobot/aloha_sim_transfer_cube_scripted) +3. [Xarm Lift Medium Replay](https://huggingface.co/datasets/lerobot/xarm_lift_medium_replay) +4. [Xarm Push Medium](https://huggingface.co/datasets/lerobot/xarm_push_medium) +5. [Xarm Push Medium Replay](https://huggingface.co/datasets/lerobot/xarm_push_medium_replay) +6. [Aloha Sim Insertion Human](https://huggingface.co/datasets/lerobot/aloha_sim_insertion_human) +7. [Aloha Sim Insertion Scripted](https://huggingface.co/datasets/lerobot/aloha_sim_insertion_scripted) +8. [Aloha Sim Transfer Cube Human](https://huggingface.co/datasets/lerobot/aloha_sim_transfer_cube_human) +9. [Aloha Sim Transfer Cube Scripted](https://huggingface.co/datasets/lerobot/aloha_sim_transfer_cube_scripted) To try a different Hugging Face dataset, you can replace this line: ```python @@ -22,12 +25,16 @@ hf_dataset, fps = load_dataset("lerobot/pusht", split="train"), 10 by one of these: ```python hf_dataset, fps = load_dataset("lerobot/xarm_lift_medium", split="train"), 15 +hf_dataset, fps = load_dataset("lerobot/xarm_lift_medium_replay", split="train"), 15 +hf_dataset, fps = load_dataset("lerobot/xarm_push_medium", split="train"), 15 +hf_dataset, fps = load_dataset("lerobot/xarm_push_medium_replay", split="train"), 15 hf_dataset, fps = load_dataset("lerobot/aloha_sim_insertion_human", split="train"), 50 hf_dataset, fps = load_dataset("lerobot/aloha_sim_insertion_scripted", split="train"), 50 hf_dataset, fps = load_dataset("lerobot/aloha_sim_transfer_cube_human", split="train"), 50 hf_dataset, fps = load_dataset("lerobot/aloha_sim_transfer_cube_scripted", split="train"), 50 ``` """ +# TODO(rcadene): remove this example file of using hf_dataset from pathlib import Path @@ -37,19 +44,22 @@ from datasets import load_dataset # TODO(rcadene): list available datasets on lerobot page using `datasets` # download/load hugging face dataset in pyarrow format -hf_dataset, fps = load_dataset("lerobot/pusht", revision="v1.0", split="train"), 10 +hf_dataset, fps = load_dataset("lerobot/pusht", split="train"), 10 # display name of dataset and its features +# TODO(rcadene): update to make the print pretty print(f"{hf_dataset=}") print(f"{hf_dataset.features=}") # display useful statistics about frames and episodes, which are sequences of frames from the same video print(f"number of frames: {len(hf_dataset)=}") -print(f"number of episodes: {len(hf_dataset.unique('episode_id'))=}") -print(f"average number of frames per episode: {len(hf_dataset) / len(hf_dataset.unique('episode_id')):.3f}") +print(f"number of episodes: {len(hf_dataset.unique('episode_index'))=}") +print( + f"average number of frames per episode: {len(hf_dataset) / len(hf_dataset.unique('episode_index')):.3f}" +) # select the frames belonging to episode number 5 -hf_dataset = hf_dataset.filter(lambda frame: frame["episode_id"] == 5) +hf_dataset = hf_dataset.filter(lambda frame: frame["episode_index"] == 5) # load all frames of episode 5 in RAM in PIL format frames = hf_dataset["observation.image"] diff --git a/examples/2_load_lerobot_dataset.py b/examples/2_load_lerobot_dataset.py index 49a53d8e..4eaed238 100644 --- a/examples/2_load_lerobot_dataset.py +++ b/examples/2_load_lerobot_dataset.py @@ -18,7 +18,10 @@ dataset = PushtDataset() ``` by one of these: ```python -dataset = XarmDataset() +dataset = XarmDataset("xarm_lift_medium") +dataset = XarmDataset("xarm_lift_medium_replay") +dataset = XarmDataset("xarm_push_medium") +dataset = XarmDataset("xarm_push_medium_replay") dataset = AlohaDataset("aloha_sim_insertion_human") dataset = AlohaDataset("aloha_sim_insertion_scripted") dataset = AlohaDataset("aloha_sim_transfer_cube_human") @@ -44,6 +47,7 @@ from lerobot.common.datasets.pusht import PushtDataset dataset = PushtDataset() # All LeRobot datasets are actually a thin wrapper around an underlying Hugging Face dataset (see https://huggingface.co/docs/datasets/index for more information). +# TODO(rcadene): update to make the print pretty print(f"{dataset=}") print(f"{dataset.hf_dataset=}") @@ -55,13 +59,16 @@ print(f"frames per second used during data collection: {dataset.fps=}") print(f"keys to access images from cameras: {dataset.image_keys=}") # While the LeRobot dataset adds helpers for working within our library, we still expose the underling Hugging Face dataset. It may be freely replaced or modified in place. Here we use the filtering to keep only frames from episode 5. -dataset.hf_dataset = dataset.hf_dataset.filter(lambda frame: frame["episode_id"] == 5) +# TODO(rcadene): remove this example of accessing hf_dataset +dataset.hf_dataset = dataset.hf_dataset.filter(lambda frame: frame["episode_index"] == 5) -# LeRobot datsets actually subclass PyTorch datasets. So you can do everything you know and love from working with the latter, for example: iterating through the dataset. Here we grap all the image frames. +# LeRobot datsets actually subclass PyTorch datasets. So you can do everything you know and love from working with the latter, for example: iterating through the dataset. Here we grab all the image frames. frames = [sample["observation.image"] for sample in dataset] -# but frames are now channel first to follow pytorch convention, -# to view them, we convert to channel last +# but frames are now float32 range [0,1] channel first (c,h,w) to follow pytorch convention, +# to view them, we convert to uint8 range [0,255] +frames = [(frame * 255).type(torch.uint8) for frame in frames] +# and to channel last (h,w,c) frames = [frame.permute((1, 2, 0)).numpy() for frame in frames] # and finally save them to a mp4 video diff --git a/lerobot/__init__.py b/lerobot/__init__.py index 83e51c7a..70d7d7b0 100644 --- a/lerobot/__init__.py +++ b/lerobot/__init__.py @@ -50,7 +50,12 @@ available_datasets = { "aloha_sim_transfer_cube_scripted", ], "pusht": ["pusht"], - "xarm": ["xarm_lift_medium"], + "xarm": [ + "xarm_lift_medium", + "xarm_lift_medium_replay", + "xarm_push_medium", + "xarm_push_medium_replay", + ], } available_policies = [ diff --git a/lerobot/common/datasets/aloha.py b/lerobot/common/datasets/aloha.py index 785b68e5..f96d32b4 100644 --- a/lerobot/common/datasets/aloha.py +++ b/lerobot/common/datasets/aloha.py @@ -1,9 +1,13 @@ from pathlib import Path import torch -from datasets import load_dataset, load_from_disk -from lerobot.common.datasets.utils import load_previous_and_future_frames +from lerobot.common.datasets.utils import ( + load_episode_data_index, + load_hf_dataset, + load_previous_and_future_frames, + load_stats, +) class AlohaDataset(torch.utils.data.Dataset): @@ -27,7 +31,7 @@ class AlohaDataset(torch.utils.data.Dataset): def __init__( self, dataset_id: str, - version: str | None = "v1.0", + version: str | None = "v1.1", root: Path | None = None, split: str = "train", transform: callable = None, @@ -40,13 +44,10 @@ class AlohaDataset(torch.utils.data.Dataset): self.split = split self.transform = transform self.delta_timestamps = delta_timestamps - if self.root is not None: - self.hf_dataset = load_from_disk(Path(self.root) / self.dataset_id / self.split) - else: - self.hf_dataset = load_dataset( - f"lerobot/{self.dataset_id}", revision=self.version, split=self.split - ) - self.hf_dataset = self.hf_dataset.with_format("torch") + # load data from hub or locally when root is provided + self.hf_dataset = load_hf_dataset(dataset_id, version, root, split) + self.episode_data_index = load_episode_data_index(dataset_id, version, root) + self.stats = load_stats(dataset_id, version, root) @property def num_samples(self) -> int: @@ -54,7 +55,7 @@ class AlohaDataset(torch.utils.data.Dataset): @property def num_episodes(self) -> int: - return len(self.hf_dataset.unique("episode_id")) + return len(self.hf_dataset.unique("episode_index")) def __len__(self): return self.num_samples @@ -66,19 +67,11 @@ class AlohaDataset(torch.utils.data.Dataset): item = load_previous_and_future_frames( item, self.hf_dataset, + self.episode_data_index, self.delta_timestamps, tol=1 / self.fps - 1e-4, # 1e-4 to account for possible numerical error ) - # convert images from channel last (PIL) to channel first (pytorch) - for key in self.image_keys: - if item[key].ndim == 3: - item[key] = item[key].permute((2, 0, 1)) # h w c -> c h w - elif item[key].ndim == 4: - item[key] = item[key].permute((0, 3, 1, 2)) # t h w c -> t c h w - else: - raise ValueError(item[key].ndim) - if self.transform is not None: item = self.transform(item) diff --git a/lerobot/common/datasets/factory.py b/lerobot/common/datasets/factory.py index 07afb614..0fbfff65 100644 --- a/lerobot/common/datasets/factory.py +++ b/lerobot/common/datasets/factory.py @@ -1,12 +1,10 @@ -import logging import os from pathlib import Path import torch from torchvision.transforms import v2 -from lerobot.common.datasets.utils import compute_stats -from lerobot.common.transforms import NormalizeTransform, Prod +from lerobot.common.transforms import NormalizeTransform DATA_DIR = Path(os.environ["DATA_DIR"]) if "DATA_DIR" in os.environ else None @@ -52,32 +50,18 @@ def make_dataset( stats["action"]["min"] = torch.tensor([12.0, 25.0], dtype=torch.float32) stats["action"]["max"] = torch.tensor([511.0, 511.0], dtype=torch.float32) elif stats_path is None: - # load stats if the file exists already or compute stats and save it - if DATA_DIR is None: - # TODO(rcadene): clean stats - precomputed_stats_path = Path("data") / cfg.dataset_id / "stats.pth" - else: - precomputed_stats_path = DATA_DIR / cfg.dataset_id / "stats.pth" - if precomputed_stats_path.exists(): - stats = torch.load(precomputed_stats_path) - else: - logging.info(f"compute_stats and save to {precomputed_stats_path}") - # Create a dataset for stats computation. - stats_dataset = clsfunc( - dataset_id=cfg.dataset_id, - split="train", - root=DATA_DIR, - transform=Prod(in_keys=clsfunc.image_keys, prod=1 / 255.0), - ) - stats = compute_stats(stats_dataset) - precomputed_stats_path.parent.mkdir(parents=True, exist_ok=True) - torch.save(stats, precomputed_stats_path) + # load a first dataset to access precomputed stats + stats_dataset = clsfunc( + dataset_id=cfg.dataset_id, + split="train", + root=DATA_DIR, + ) + stats = stats_dataset.stats else: stats = torch.load(stats_path) transforms = v2.Compose( [ - Prod(in_keys=clsfunc.image_keys, prod=1 / 255.0), NormalizeTransform( stats, in_keys=[ diff --git a/lerobot/common/datasets/pusht.py b/lerobot/common/datasets/pusht.py index 2879c177..bc978b7a 100644 --- a/lerobot/common/datasets/pusht.py +++ b/lerobot/common/datasets/pusht.py @@ -1,9 +1,13 @@ from pathlib import Path import torch -from datasets import load_dataset, load_from_disk -from lerobot.common.datasets.utils import load_previous_and_future_frames +from lerobot.common.datasets.utils import ( + load_episode_data_index, + load_hf_dataset, + load_previous_and_future_frames, + load_stats, +) class PushtDataset(torch.utils.data.Dataset): @@ -25,7 +29,7 @@ class PushtDataset(torch.utils.data.Dataset): def __init__( self, dataset_id: str = "pusht", - version: str | None = "v1.0", + version: str | None = "v1.1", root: Path | None = None, split: str = "train", transform: callable = None, @@ -38,13 +42,10 @@ class PushtDataset(torch.utils.data.Dataset): self.split = split self.transform = transform self.delta_timestamps = delta_timestamps - if self.root is not None: - self.hf_dataset = load_from_disk(Path(self.root) / self.dataset_id / self.split) - else: - self.hf_dataset = load_dataset( - f"lerobot/{self.dataset_id}", revision=self.version, split=self.split - ) - self.hf_dataset = self.hf_dataset.with_format("torch") + # load data from hub or locally when root is provided + self.hf_dataset = load_hf_dataset(dataset_id, version, root, split) + self.episode_data_index = load_episode_data_index(dataset_id, version, root) + self.stats = load_stats(dataset_id, version, root) @property def num_samples(self) -> int: @@ -52,7 +53,7 @@ class PushtDataset(torch.utils.data.Dataset): @property def num_episodes(self) -> int: - return len(self.hf_dataset.unique("episode_id")) + return len(self.episode_data_index["from"]) def __len__(self): return self.num_samples @@ -64,19 +65,11 @@ class PushtDataset(torch.utils.data.Dataset): item = load_previous_and_future_frames( item, self.hf_dataset, + self.episode_data_index, self.delta_timestamps, tol=1 / self.fps - 1e-4, # 1e-4 to account for possible numerical error ) - # convert images from channel last (PIL) to channel first (pytorch) - for key in self.image_keys: - if item[key].ndim == 3: - item[key] = item[key].permute((2, 0, 1)) # h w c -> c h w - elif item[key].ndim == 4: - item[key] = item[key].permute((0, 3, 1, 2)) # t h w c -> t c h w - else: - raise ValueError(item[key].ndim) - if self.transform is not None: item = self.transform(item) diff --git a/lerobot/common/datasets/utils.py b/lerobot/common/datasets/utils.py index 50c50856..f5246c74 100644 --- a/lerobot/common/datasets/utils.py +++ b/lerobot/common/datasets/utils.py @@ -1,15 +1,121 @@ from copy import deepcopy from math import ceil +from pathlib import Path import datasets import einops import torch import tqdm +from datasets import Image, load_dataset, load_from_disk +from huggingface_hub import hf_hub_download +from PIL import Image as PILImage +from safetensors.torch import load_file +from torchvision import transforms + + +def flatten_dict(d, parent_key="", sep="/"): + """Flatten a nested dictionary structure by collapsing nested keys into one key with a separator. + + For example: + ``` + >>> dct = {"a": {"b": 1, "c": {"d": 2}}, "e": 3}` + >>> print(flatten_dict(dct)) + {"a/b": 1, "a/c/d": 2, "e": 3} + """ + items = [] + for k, v in d.items(): + new_key = f"{parent_key}{sep}{k}" if parent_key else k + if isinstance(v, dict): + items.extend(flatten_dict(v, new_key, sep=sep).items()) + else: + items.append((new_key, v)) + return dict(items) + + +def unflatten_dict(d, sep="/"): + outdict = {} + for key, value in d.items(): + parts = key.split(sep) + d = outdict + for part in parts[:-1]: + if part not in d: + d[part] = {} + d = d[part] + d[parts[-1]] = value + return outdict + + +def hf_transform_to_torch(items_dict): + """Get a transform function that convert items from Hugging Face dataset (pyarrow) + to torch tensors. Importantly, images are converted from PIL, which corresponds to + a channel last representation (h w c) of uint8 type, to a torch image representation + with channel first (c h w) of float32 type in range [0,1]. + """ + for key in items_dict: + first_item = items_dict[key][0] + if isinstance(first_item, PILImage.Image): + to_tensor = transforms.ToTensor() + items_dict[key] = [to_tensor(img) for img in items_dict[key]] + else: + items_dict[key] = [torch.tensor(x) for x in items_dict[key]] + return items_dict + + +def load_hf_dataset(dataset_id, version, root, split) -> datasets.Dataset: + """hf_dataset contains all the observations, states, actions, rewards, etc.""" + if root is not None: + hf_dataset = load_from_disk(str(Path(root) / dataset_id / split)) + else: + # TODO(rcadene): remove dataset_id everywhere and use repo_id instead + repo_id = f"lerobot/{dataset_id}" + hf_dataset = load_dataset(repo_id, revision=version, split=split) + hf_dataset.set_transform(hf_transform_to_torch) + return hf_dataset + + +def load_episode_data_index(dataset_id, version, root) -> dict[str, torch.Tensor]: + """episode_data_index contains the range of indices for each episode + + Example: + ```python + from_id = episode_data_index["from"][episode_id].item() + to_id = episode_data_index["to"][episode_id].item() + episode_frames = [dataset[i] for i in range(from_id, to_id)] + ``` + """ + if root is not None: + path = Path(root) / dataset_id / "meta_data" / "episode_data_index.safetensors" + else: + repo_id = f"lerobot/{dataset_id}" + path = hf_hub_download( + repo_id, "meta_data/episode_data_index.safetensors", repo_type="dataset", revision=version + ) + + return load_file(path) + + +def load_stats(dataset_id, version, root) -> dict[str, dict[str, torch.Tensor]]: + """stats contains the statistics per modality computed over the full dataset, such as max, min, mean, std + + Example: + ```python + normalized_action = (action - stats["action"]["mean"]) / stats["action"]["std"] + ``` + """ + if root is not None: + path = Path(root) / dataset_id / "meta_data" / "stats.safetensors" + else: + repo_id = f"lerobot/{dataset_id}" + path = hf_hub_download(repo_id, "meta_data/stats.safetensors", repo_type="dataset", revision=version) + + stats = load_file(path) + return unflatten_dict(stats) def load_previous_and_future_frames( item: dict[str, torch.Tensor], hf_dataset: datasets.Dataset, + episode_data_index: dict[str, torch.Tensor], delta_timestamps: dict[str, list[float]], tol: float, ) -> dict[torch.Tensor]: @@ -31,6 +137,8 @@ def load_previous_and_future_frames( corresponds to a different modality (e.g., "timestamp", "observation.image", "action"). - hf_dataset (datasets.Dataset): A dictionary containing the full dataset. Each key corresponds to a different modality (e.g., "timestamp", "observation.image", "action"). + - episode_data_index (dict): A dictionary containing two keys ("from" and "to") associated to dataset indices. + They indicate the start index and end index of each episode in the dataset. - delta_timestamps (dict): A dictionary containing lists of delta timestamps for each possible modality to be retrieved. These deltas are added to the item timestamp to form the query timestamps. - tol (float, optional): The tolerance level used to determine if a data point is close enough to the query @@ -46,12 +154,14 @@ def load_previous_and_future_frames( issues with timestamps during data collection. """ # get indices of the frames associated to the episode, and their timestamps - ep_data_id_from = item["episode_data_index_from"].item() - ep_data_id_to = item["episode_data_index_to"].item() + ep_id = item["episode_index"].item() + ep_data_id_from = episode_data_index["from"][ep_id].item() + ep_data_id_to = episode_data_index["to"][ep_id].item() ep_data_ids = torch.arange(ep_data_id_from, ep_data_id_to, 1) # load timestamps ep_timestamps = hf_dataset.select_columns("timestamp")[ep_data_id_from:ep_data_id_to]["timestamp"] + ep_timestamps = torch.stack(ep_timestamps) # we make the assumption that the timestamps are sorted ep_first_ts = ep_timestamps[0] @@ -82,39 +192,57 @@ def load_previous_and_future_frames( # load frames modality item[key] = hf_dataset.select_columns(key)[data_ids][key] + item[key] = torch.stack(item[key]) item[f"{key}_is_pad"] = is_pad return item -def get_stats_einops_patterns(dataset): - """These einops patterns will be used to aggregate batches and compute statistics.""" - stats_patterns = { - "action": "b c -> c", - "observation.state": "b c -> c", - } - for key in dataset.image_keys: - stats_patterns[key] = "b c h w -> c 1 1" +def get_stats_einops_patterns(hf_dataset): + """These einops patterns will be used to aggregate batches and compute statistics. + + Note: We assume the images of `hf_dataset` are in channel first format + """ + + dataloader = torch.utils.data.DataLoader( + hf_dataset, + num_workers=0, + batch_size=2, + shuffle=False, + ) + batch = next(iter(dataloader)) + + stats_patterns = {} + for key, feats_type in hf_dataset.features.items(): + # sanity check that tensors are not float64 + assert batch[key].dtype != torch.float64 + + if isinstance(feats_type, Image): + # sanity check that images are channel first + _, c, h, w = batch[key].shape + assert c < h and c < w, f"expect channel first images, but instead {batch[key].shape}" + + # sanity check that images are float32 in range [0,1] + assert batch[key].dtype == torch.float32, f"expect torch.float32, but instead {batch[key].dtype=}" + assert batch[key].max() <= 1, f"expect pixels lower than 1, but instead {batch[key].max()=}" + assert batch[key].min() >= 0, f"expect pixels greater than 1, but instead {batch[key].min()=}" + + stats_patterns[key] = "b c h w -> c 1 1" + elif batch[key].ndim == 2: + stats_patterns[key] = "b c -> c " + elif batch[key].ndim == 1: + stats_patterns[key] = "b -> 1" + else: + raise ValueError(f"{key}, {feats_type}, {batch[key].shape}") + return stats_patterns -def compute_stats(dataset, batch_size=32, max_num_samples=None): +def compute_stats(hf_dataset, batch_size=32, max_num_samples=None): if max_num_samples is None: - max_num_samples = len(dataset) - else: - raise NotImplementedError("We need to set shuffle=True, but this violate an assert for now.") + max_num_samples = len(hf_dataset) - dataloader = torch.utils.data.DataLoader( - dataset, - num_workers=4, - batch_size=batch_size, - shuffle=False, - # pin_memory=cfg.device != "cpu", - drop_last=False, - ) - - # get einops patterns to aggregate batches and compute statistics - stats_patterns = get_stats_einops_patterns(dataset) + stats_patterns = get_stats_einops_patterns(hf_dataset) # mean and std will be computed incrementally while max and min will track the running value. mean, std, max, min = {}, {}, {}, {} @@ -124,10 +252,24 @@ def compute_stats(dataset, batch_size=32, max_num_samples=None): max[key] = torch.tensor(-float("inf")).float() min[key] = torch.tensor(float("inf")).float() + def create_seeded_dataloader(hf_dataset, batch_size, seed): + generator = torch.Generator() + generator.manual_seed(seed) + dataloader = torch.utils.data.DataLoader( + hf_dataset, + num_workers=4, + batch_size=batch_size, + shuffle=True, + drop_last=False, + generator=generator, + ) + return dataloader + # Note: Due to be refactored soon. The point of storing `first_batch` is to make sure we don't get # surprises when rerunning the sampler. first_batch = None running_item_count = 0 # for online mean computation + dataloader = create_seeded_dataloader(hf_dataset, batch_size, seed=1337) for i, batch in enumerate( tqdm.tqdm(dataloader, total=ceil(max_num_samples / batch_size), desc="Compute mean, min, max") ): @@ -153,6 +295,7 @@ def compute_stats(dataset, batch_size=32, max_num_samples=None): first_batch_ = None running_item_count = 0 # for online std computation + dataloader = create_seeded_dataloader(hf_dataset, batch_size, seed=1337) for i, batch in enumerate( tqdm.tqdm(dataloader, total=ceil(max_num_samples / batch_size), desc="Compute std") ): diff --git a/lerobot/common/datasets/xarm.py b/lerobot/common/datasets/xarm.py index 385b7d99..7e69e7d7 100644 --- a/lerobot/common/datasets/xarm.py +++ b/lerobot/common/datasets/xarm.py @@ -1,25 +1,37 @@ from pathlib import Path import torch -from datasets import load_dataset, load_from_disk -from lerobot.common.datasets.utils import load_previous_and_future_frames +from lerobot.common.datasets.utils import ( + load_episode_data_index, + load_hf_dataset, + load_previous_and_future_frames, + load_stats, +) class XarmDataset(torch.utils.data.Dataset): """ https://huggingface.co/datasets/lerobot/xarm_lift_medium + https://huggingface.co/datasets/lerobot/xarm_lift_medium_replay + https://huggingface.co/datasets/lerobot/xarm_push_medium + https://huggingface.co/datasets/lerobot/xarm_push_medium_replay """ # Copied from lerobot/__init__.py - available_datasets = ["xarm_lift_medium"] + available_datasets = [ + "xarm_lift_medium", + "xarm_lift_medium_replay", + "xarm_push_medium", + "xarm_push_medium_replay", + ] fps = 15 image_keys = ["observation.image"] def __init__( self, - dataset_id: str = "xarm_lift_medium", - version: str | None = "v1.0", + dataset_id: str, + version: str | None = "v1.1", root: Path | None = None, split: str = "train", transform: callable = None, @@ -32,13 +44,10 @@ class XarmDataset(torch.utils.data.Dataset): self.split = split self.transform = transform self.delta_timestamps = delta_timestamps - if self.root is not None: - self.hf_dataset = load_from_disk(Path(self.root) / self.dataset_id / self.split) - else: - self.hf_dataset = load_dataset( - f"lerobot/{self.dataset_id}", revision=self.version, split=self.split - ) - self.hf_dataset = self.hf_dataset.with_format("torch") + # load data from hub or locally when root is provided + self.hf_dataset = load_hf_dataset(dataset_id, version, root, split) + self.episode_data_index = load_episode_data_index(dataset_id, version, root) + self.stats = load_stats(dataset_id, version, root) @property def num_samples(self) -> int: @@ -46,7 +55,7 @@ class XarmDataset(torch.utils.data.Dataset): @property def num_episodes(self) -> int: - return len(self.hf_dataset.unique("episode_id")) + return len(self.hf_dataset.unique("episode_index")) def __len__(self): return self.num_samples @@ -58,19 +67,11 @@ class XarmDataset(torch.utils.data.Dataset): item = load_previous_and_future_frames( item, self.hf_dataset, + self.episode_data_index, self.delta_timestamps, tol=1 / self.fps - 1e-4, # 1e-4 to account for possible numerical error ) - # convert images from channel last (PIL) to channel first (pytorch) - for key in self.image_keys: - if item[key].ndim == 3: - item[key] = item[key].permute((2, 0, 1)) # h w c -> c h w - elif item[key].ndim == 4: - item[key] = item[key].permute((0, 3, 1, 2)) # t h w c -> t c h w - else: - raise ValueError(item[key].ndim) - if self.transform is not None: item = self.transform(item) diff --git a/lerobot/common/envs/factory.py b/lerobot/common/envs/factory.py index d5571935..24d69c3c 100644 --- a/lerobot/common/envs/factory.py +++ b/lerobot/common/envs/factory.py @@ -39,4 +39,5 @@ def make_env(cfg, num_parallel_envs=0) -> gym.Env | gym.vector.SyncVectorEnv: for _ in range(num_parallel_envs) ] ) + return env diff --git a/lerobot/common/envs/utils.py b/lerobot/common/envs/utils.py index 7f5216cd..dcce1bcc 100644 --- a/lerobot/common/envs/utils.py +++ b/lerobot/common/envs/utils.py @@ -15,8 +15,19 @@ def preprocess_observation(observation, transform=None): for imgkey, img in imgs.items(): img = torch.from_numpy(img) - # convert to (b c h w) torch format + + # sanity check that images are channel last + _, h, w, c = img.shape + assert c < h and c < w, f"expect channel first images, but instead {img.shape}" + + # sanity check that images are uint8 + assert img.dtype == torch.uint8, f"expect torch.uint8, but instead {img.dtype=}" + + # convert to channel first of type float32 in range [0,1] img = einops.rearrange(img, "b h w c -> b c h w") + img = img.type(torch.float32) + img /= 255 + obs[imgkey] = img # TODO(rcadene): enable pixels only baseline with `obs_type="pixels"` in environment by removing requirement for "agent_pos" diff --git a/lerobot/common/transforms.py b/lerobot/common/transforms.py index ec967614..fffa835a 100644 --- a/lerobot/common/transforms.py +++ b/lerobot/common/transforms.py @@ -1,4 +1,3 @@ -import torch from torchvision.transforms.v2 import Compose, Transform @@ -12,40 +11,6 @@ def apply_inverse_transform(item, transform): return item -class Prod(Transform): - invertible = True - - def __init__(self, in_keys: list[str], prod: float): - super().__init__() - self.in_keys = in_keys - self.prod = prod - self.original_dtypes = {} - - def forward(self, item): - for key in self.in_keys: - if key not in item: - continue - self.original_dtypes[key] = item[key].dtype - item[key] = item[key].type(torch.float32) * self.prod - return item - - def inverse_transform(self, item): - for key in self.in_keys: - if key not in item: - continue - item[key] = (item[key] / self.prod).type(self.original_dtypes[key]) - return item - - # def transform_observation_spec(self, obs_spec): - # for key in self.in_keys: - # if obs_spec.get(key, None) is None: - # continue - # obs_spec[key].space.high = obs_spec[key].space.high.type(torch.float32) * self.prod - # obs_spec[key].space.low = obs_spec[key].space.low.type(torch.float32) * self.prod - # obs_spec[key].dtype = torch.float32 - # return obs_spec - - class NormalizeTransform(Transform): invertible = True diff --git a/lerobot/scripts/eval.py b/lerobot/scripts/eval.py index 0c0e8e8b..7b3c6dd3 100644 --- a/lerobot/scripts/eval.py +++ b/lerobot/scripts/eval.py @@ -47,6 +47,7 @@ from PIL import Image as PILImage from tqdm import trange from lerobot.common.datasets.factory import make_dataset +from lerobot.common.datasets.utils import hf_transform_to_torch from lerobot.common.envs.factory import make_env from lerobot.common.envs.utils import postprocess_action, preprocess_observation from lerobot.common.logger import log_output_dir @@ -208,11 +209,12 @@ def eval_policy( max_rewards.extend(batch_max_reward.tolist()) all_successes.extend(batch_success.tolist()) - # similar logic is implemented in dataset preprocessing + # similar logic is implemented when datasets are pushed to hub (see: `push_to_hub`) ep_dicts = [] + episode_data_index = {"from": [], "to": []} num_episodes = dones.shape[0] total_frames = 0 - idx_from = 0 + id_from = 0 for ep_id in range(num_episodes): num_frames = done_indices[ep_id].item() + 1 total_frames += num_frames @@ -222,19 +224,20 @@ def eval_policy( if return_episode_data: ep_dict = { "action": actions[ep_id, :num_frames], - "episode_id": torch.tensor([ep_id] * num_frames), - "frame_id": torch.arange(0, num_frames, 1), + "episode_index": torch.tensor([ep_id] * num_frames), + "frame_index": torch.arange(0, num_frames, 1), "timestamp": torch.arange(0, num_frames, 1) / fps, "next.done": dones[ep_id, :num_frames], "next.reward": rewards[ep_id, :num_frames].type(torch.float32), - "episode_data_index_from": torch.tensor([idx_from] * num_frames), - "episode_data_index_to": torch.tensor([idx_from + num_frames] * num_frames), } for key in observations: ep_dict[key] = observations[key][ep_id][:num_frames] ep_dicts.append(ep_dict) - idx_from += num_frames + episode_data_index["from"].append(id_from) + episode_data_index["to"].append(id_from + num_frames) + + id_from += num_frames # similar logic is implemented in dataset preprocessing if return_episode_data: @@ -247,14 +250,29 @@ def eval_policy( if key not in data_dict: data_dict[key] = [] for ep_dict in ep_dicts: - for x in ep_dict[key]: - # c h w -> h w c - img = PILImage.fromarray(x.permute(1, 2, 0).numpy()) + for img in ep_dict[key]: + # sanity check that images are channel first + c, h, w = img.shape + assert c < h and c < w, f"expect channel first images, but instead {img.shape}" + + # sanity check that images are float32 in range [0,1] + assert img.dtype == torch.float32, f"expect torch.float32, but instead {img.dtype=}" + assert img.max() <= 1, f"expect pixels lower than 1, but instead {img.max()=}" + assert img.min() >= 0, f"expect pixels greater than 1, but instead {img.min()=}" + + # from float32 in range [0,1] to uint8 in range [0,255] + img *= 255 + img = img.type(torch.uint8) + + # convert to channel last and numpy as expected by PIL + img = PILImage.fromarray(img.permute(1, 2, 0).numpy()) + data_dict[key].append(img) data_dict["index"] = torch.arange(0, total_frames, 1) - hf_dataset = Dataset.from_dict(data_dict).with_format("torch") + hf_dataset = Dataset.from_dict(data_dict) + hf_dataset.set_transform(hf_transform_to_torch) if max_episodes_rendered > 0: batch_stacked_frames = np.stack(ep_frames, 1) # (b, t, *) @@ -307,7 +325,10 @@ def eval_policy( }, } if return_episode_data: - info["episodes"] = hf_dataset + info["episodes"] = { + "hf_dataset": hf_dataset, + "episode_data_index": episode_data_index, + } if max_episodes_rendered > 0: info["videos"] = videos return info diff --git a/lerobot/scripts/train.py b/lerobot/scripts/train.py index 4d8c2478..8a70a214 100644 --- a/lerobot/scripts/train.py +++ b/lerobot/scripts/train.py @@ -136,6 +136,7 @@ def add_episodes_inplace( concat_dataset: torch.utils.data.ConcatDataset, sampler: torch.utils.data.WeightedRandomSampler, hf_dataset: datasets.Dataset, + episode_data_index: dict[str, torch.Tensor], pc_online_samples: float, ): """ @@ -151,13 +152,15 @@ def add_episodes_inplace( - sampler (torch.utils.data.WeightedRandomSampler): A sampler that will be updated to reflect changes in the dataset sizes and specified sampling weights. - hf_dataset (datasets.Dataset): A Hugging Face dataset containing the new episodes to be added. + - episode_data_index (dict): A dictionary containing two keys ("from" and "to") associated to dataset indices. + They indicate the start index and end index of each episode in the dataset. - pc_online_samples (float): The target percentage of samples that should come from the online dataset during sampling operations. Raises: - AssertionError: If the first episode_id or index in hf_dataset is not 0 """ - first_episode_id = hf_dataset.select_columns("episode_id")[0]["episode_id"].item() + first_episode_id = hf_dataset.select_columns("episode_index")[0]["episode_index"].item() first_index = hf_dataset.select_columns("index")[0]["index"].item() assert first_episode_id == 0, f"We expect the first episode_id to be 0 and not {first_episode_id}" assert first_index == 0, f"We expect the first first_index to be 0 and not {first_index}" @@ -167,21 +170,22 @@ def add_episodes_inplace( online_dataset.hf_dataset = hf_dataset else: # find episode index and data frame indices according to previous episode in online_dataset - start_episode = online_dataset.select_columns("episode_id")[-1]["episode_id"].item() + 1 + start_episode = online_dataset.select_columns("episode_index")[-1]["episode_index"].item() + 1 start_index = online_dataset.select_columns("index")[-1]["index"].item() + 1 def shift_indices(example): - # note: we dont shift "frame_id" since it represents the index of the frame in the episode it belongs to - example["episode_id"] += start_episode + # note: we dont shift "frame_index" since it represents the index of the frame in the episode it belongs to + example["episode_index"] += start_episode example["index"] += start_index - example["episode_data_index_from"] += start_index - example["episode_data_index_to"] += start_index return example disable_progress_bars() # map has a tqdm progress bar hf_dataset = hf_dataset.map(shift_indices) enable_progress_bars() + episode_data_index["from"] += start_index + episode_data_index["to"] += start_index + # extend online dataset online_dataset.hf_dataset = concatenate_datasets([online_dataset.hf_dataset, hf_dataset]) @@ -334,9 +338,13 @@ def train(cfg: dict, out_dir=None, job_name=None): seed=cfg.seed, ) - online_pc_sampling = cfg.get("demo_schedule", 0.5) add_episodes_inplace( - online_dataset, concat_dataset, sampler, eval_info["episodes"], online_pc_sampling + online_dataset, + concat_dataset, + sampler, + hf_dataset=eval_info["episodes"]["hf_dataset"], + episode_data_index=eval_info["episodes"]["episode_data_index"], + pc_online_samples=cfg.get("demo_schedule", 0.5), ) for _ in range(cfg.policy.utd): diff --git a/lerobot/scripts/visualize_dataset.py b/lerobot/scripts/visualize_dataset.py index 226fdc1f..b51e62b4 100644 --- a/lerobot/scripts/visualize_dataset.py +++ b/lerobot/scripts/visualize_dataset.py @@ -22,11 +22,24 @@ def visualize_dataset_cli(cfg: dict): def cat_and_write_video(video_path, frames, fps): - # Expects images in [0, 255]. frames = torch.cat(frames) - assert frames.dtype == torch.uint8 - frames = einops.rearrange(frames, "b c h w -> b h w c").numpy() - imageio.mimsave(video_path, frames, fps=fps) + + # Expects images in [0, 1]. + frame = frames[0] + if frame.ndim == 4: + raise NotImplementedError("We currently dont support multiple timestamps.") + c, h, w = frame.shape + assert c < h and c < w, f"expect channel first images, but instead {frame.shape}" + + # sanity check that images are float32 in range [0,1] + assert frame.dtype == torch.float32, f"expect torch.float32, but instead {frame.dtype=}" + assert frame.max() <= 1, f"expect pixels lower than 1, but instead {frame.max()=}" + assert frame.min() >= 0, f"expect pixels greater than 1, but instead {frame.min()=}" + + # convert to channel last uint8 [0, 255] + frames = einops.rearrange(frames, "b c h w -> b h w c") + frames = (frames * 255).type(torch.uint8) + imageio.mimsave(video_path, frames.numpy(), fps=fps) def visualize_dataset(cfg: dict, out_dir=None): @@ -44,9 +57,10 @@ def visualize_dataset(cfg: dict, out_dir=None): ) logging.info("Start rendering episodes from offline buffer") - video_paths = render_dataset(dataset, out_dir, MAX_NUM_STEPS * NUM_EPISODES_TO_RENDER, cfg.fps) + video_paths = render_dataset(dataset, out_dir, MAX_NUM_STEPS * NUM_EPISODES_TO_RENDER) for video_path in video_paths: logging.info(video_path) + return video_paths def render_dataset(dataset, out_dir, max_num_episodes): @@ -77,7 +91,7 @@ def render_dataset(dataset, out_dir, max_num_episodes): # add current frame to list of frames to render frames[im_key].append(item[im_key]) - end_of_episode = item["index"].item() == item["episode_data_index_to"].item() - 1 + end_of_episode = item["index"].item() == dataset.episode_data_index["to"][ep_id] - 1 out_dir.mkdir(parents=True, exist_ok=True) for im_key in dataset.image_keys: diff --git a/poetry.lock b/poetry.lock index a70e404a..7b66604a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "absl-py" @@ -522,21 +522,21 @@ toml = ["tomli"] [[package]] name = "datasets" -version = "2.18.0" +version = "2.19.0" description = "HuggingFace community-driven open-source library of datasets" optional = false python-versions = ">=3.8.0" files = [ - {file = "datasets-2.18.0-py3-none-any.whl", hash = "sha256:f1bbf0e2896917a914de01cbd37075b14deea3837af87ad0d9f697388ccaeb50"}, - {file = "datasets-2.18.0.tar.gz", hash = "sha256:cdf8b8c6abf7316377ba4f49f9589a4c74556d6b481afd0abd2284f3d69185cb"}, + {file = "datasets-2.19.0-py3-none-any.whl", hash = "sha256:f57c5316e123d4721b970c68c1cb856505f289cda58f5557ffe745b49c011a8e"}, + {file = "datasets-2.19.0.tar.gz", hash = "sha256:0b47e08cc7af2c6800a42cadc4657b22a0afc7197786c8986d703c08d90886a6"}, ] [package.dependencies] aiohttp = "*" dill = ">=0.3.0,<0.3.9" filelock = "*" -fsspec = {version = ">=2023.1.0,<=2024.2.0", extras = ["http"]} -huggingface-hub = ">=0.19.4" +fsspec = {version = ">=2023.1.0,<=2024.3.1", extras = ["http"]} +huggingface-hub = ">=0.21.2" multiprocess = "*" numpy = ">=1.17" packaging = "*" @@ -552,15 +552,15 @@ xxhash = "*" apache-beam = ["apache-beam (>=2.26.0)"] audio = ["librosa", "soundfile (>=0.12.1)"] benchmarks = ["tensorflow (==2.12.0)", "torch (==2.0.1)", "transformers (==4.30.1)"] -dev = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "tensorflow-macos", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] -docs = ["s3fs", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow-macos", "torch", "transformers"] +dev = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] +docs = ["s3fs", "tensorflow (>=2.6.0)", "torch", "transformers"] jax = ["jax (>=0.3.14)", "jaxlib (>=0.3.14)"] metrics-tests = ["Werkzeug (>=1.0.1)", "accelerate", "bert-score (>=0.3.6)", "jiwer", "langdetect", "mauve-text", "nltk", "requests-file (>=1.5.1)", "rouge-score", "sacrebleu", "sacremoses", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "spacy (>=3.0.0)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "typer (<0.5.0)"] quality = ["ruff (>=0.3.0)"] s3 = ["s3fs"] -tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)", "tensorflow-macos"] -tensorflow-gpu = ["tensorflow-gpu (>=2.2.0,!=2.6.0,!=2.6.1)"] -tests = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "tensorflow-macos", "tiktoken", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] +tensorflow = ["tensorflow (>=2.6.0)"] +tensorflow-gpu = ["tensorflow (>=2.6.0)"] +tests = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] torch = ["torch"] vision = ["Pillow (>=6.2.1)"] @@ -2909,7 +2909,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -4195,4 +4194,4 @@ xarm = ["gym-xarm"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "01ad4eb04061ec9f785d4574bf66d3e5cb4549e2ea11ab175895f94cb62c1f1c" +content-hash = "7f5afa48aead953f598e686e767891d3d23f2862b80144f76dc064101ef80b4a" diff --git a/pyproject.toml b/pyproject.toml index 09348989..a3fa4d21 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,8 @@ pre-commit = {version = "^3.7.0", optional = true} debugpy = {version = "^1.8.1", optional = true} pytest = {version = "^8.1.0", optional = true} pytest-cov = {version = "^5.0.0", optional = true} -datasets = "^2.18.0" +datasets = "^2.19.0" + [tool.poetry.extras] pusht = ["gym-pusht"] diff --git a/tests/data/aloha_sim_insertion_human/meta_data/episode_data_index.safetensors b/tests/data/aloha_sim_insertion_human/meta_data/episode_data_index.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..8ed156c4b35e7733c0afe29d989f9d453cb72ef2 GIT binary patch literal 928 zcmbayL z{-Fh--{?T-2YL|tiUEW^VFaP~m_X2n;I>rS; z2e?6K7Y_(+;RT^}d?2)fAA}YOfY2O45c*Frg#Hi;p`V09=o^s``b;#0J`f9`x5Pu} Q(RhG_!$8NwibRMz0B+`O#Q*>R literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_insertion_human/meta_data/info.json b/tests/data/aloha_sim_insertion_human/meta_data/info.json new file mode 100644 index 00000000..02e62b67 --- /dev/null +++ b/tests/data/aloha_sim_insertion_human/meta_data/info.json @@ -0,0 +1,3 @@ +{ + "fps": 50 +} \ No newline at end of file diff --git a/tests/data/aloha_sim_insertion_human/meta_data/stats.safetensors b/tests/data/aloha_sim_insertion_human/meta_data/stats.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..e956450335ef7271d002471e45d7512925172a5d GIT binary patch literal 2904 zcmbW(e@v8h9Ki8wjj34#T=_?3(WNlAXXpKR?%@KS&)0+N=4QbRBQ`O4;2z+#yJOsg z;t(O4ICBZ((sqKT3`>?{E$j!Le9vF28M74L!eraSL@B}2FBnP zBw?e!vN9k_0rEQ&W8*e7GXFm>3O;RsjbqGaOFZGxD3He)GiQ$@0+L(XCdlKA#lp&j zSmO!!-Qq@%&n?!^(_?N9f)I%AdS!hKE-IS3Yx*1Zd8 z4#JVJ91VL{(3*lHMPmmk2562TAEPYV(kIqSMz`N5YCl3*q+}MI*EmFTj4YDVPIJa7 zT7%e0Q9CU^e@wsx?fck{j9@yIvEhs!XAEBNAhMp3bg< zrrJ{Jy+|mAjonTPoLWOAjYy2mLYe6}F%gJD4@aD$nnwvCbz;}f45D5|0U_6pO}=&-)6>(3gWYiW!g2oH#x7KRvJHBV zHlb1T&(JmW4*F|(4}`YA4B@4n2=%aN?ePv&F){_ac?so4Z{)07l8yJ&=Acc#kB3{9 zjDb+MCcNm+z0hvEICy?#5nhj%q4YNjz_|G-RNkb=XNz0l=m$YO^u82f2M)kzW4rK< z>cx?PyqM>d|kmg*PWO0UGjRtu89|Px@J_B_F#^@zVt80%j@V>ACiA2Rb+rG zxEzvpW)gSi)3SXn+?*`zhTB)2@W`=L pc)Yb6KF;WX&Q>0nZ#$v?^&l)8dJ`V&d&Z&fdvBHO2Tt2p{RamL+XMgr literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_insertion_human/train/data-00000-of-00001.arrow b/tests/data/aloha_sim_insertion_human/train/data-00000-of-00001.arrow index 165298cfb9b96413d383ba05c7b9d5a88bdf2542..f6c89ff6ddd9ff5d9e0bae7120fe5c19b4ea9162 100644 GIT binary patch delta 1205 zcmYk$X;6((7{KxOy<7LzZ4oLIEm~+1iEPQ9J$tqi-E^ZxS+W(PlEm#rA!N%^mV}T! z5>l4zL^D1z(+3~=psxR&#*Am?cb>C6=Q*eFSEgBOX{MRVNZ2S1DnBvI5EvlZm+M_b zsX^wg@o{#INsfxwMN0KDAL)k}NA`DD3xe=d6ogbbppkVEVi5!d>Lg#en^h2vS%@JF zf7+xbxref)&1m$JGz!n)ns(EnD1>)pnGHpbFkLr=1v*~WCq(N~h1&m`<+e)^aywf~ zN_0v3l*DLVWJgg&z9L5yvn3~$n{Q}dv#AeZE;tBU8mpNJLN0$cJ@%XYFYF5pMwxd- zp(<2Vn)bAkySlodrAn^I&}y=@8WA$cp@0%9m_ZFwjX5l!g(a+D4I6ZVEjptMy21|j za6mV7M-Mo{2|dvZ&TxS%+|V2D@PH@0&N*!!f1@aSd7DXOh70mViG1}3Z`NjrXvh9FcY&d8*?xh^AL{tSb&9CgvE$J zB$glwOR)^m&>;rP5eq%yumUR)j|3zl39FEd6s*P?ti?K{Vm&rsBQ{|((vXfV*otk) zz;^6FCbE!?oyfs1;M1& delta 5557 zcmeIzdsGxv9Ki9JS$1c^jfH~1kb)pIUW%`%C{3g2jY)<{t>`YgDzYLK6}hN|6h+Wf zP(hJpi7XP4tq>|cO0(_h`ROyZ1MD zX70V*RwXwMRLO=RwlG7zAzk#;Pn#mvciQ7c(W=yn8Qy)eG9WIAvN`OlORP4FwXm$v zVqa;sm0OBRONzNGIdYV`vJ$mM$&)5c6oe2#5FC;qToDDK2?a>R1+Mp@0+|RxuF@(c zIC}?&hBy&tva9?MMi~VYWOz4kP99%uSBI`x6wfQM`h>LV_I}?DjCV94K?JBxc^GMR>@IQiZ!rxS zgHlRYqdrH>&Z+gs`D*>=EoR^O`R0Gt`_KLL>RqAA?}oifz8u$3*P{zs?~*sTWDyc{ z2!b94sC7mJBLrh$!c_=`8DR*=)wl)`h{UysLNvzWI>cZcVsSlgKpf(6BNC8^n~;R@ zn1Gv+j1;6I4e6MONyxxtOu3 zemsB&@em%yBgn-ZJc_xj8}Fb2jd&OD;e9lr86V(7wBRFb#K-sqoA4< zj^HSc;W$p3~yMNvefC`C~mMnuslLv2f~A`wL?iexXv1lr(65=<6KDdY$_LXMCl z;N3v!QiwWU9#jU2q&T+mq->PREO6hMSzlY!0n?EEdpN#A*rSWi(bW zT}8cy`8wJgSZ-oaL$QU)Hp(5$cG23yLZYLv+Q;|+jYCY2P#Ej!VAYyC) literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_insertion_scripted/meta_data/info.json b/tests/data/aloha_sim_insertion_scripted/meta_data/info.json new file mode 100644 index 00000000..02e62b67 --- /dev/null +++ b/tests/data/aloha_sim_insertion_scripted/meta_data/info.json @@ -0,0 +1,3 @@ +{ + "fps": 50 +} \ No newline at end of file diff --git a/tests/data/aloha_sim_insertion_scripted/meta_data/stats.safetensors b/tests/data/aloha_sim_insertion_scripted/meta_data/stats.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..619ee9004288ba48fc2043bae128b72df07e2ac3 GIT binary patch literal 2904 zcmbW3acmP+7{G5ZWUyo!G{y-^bBr+bnC;#5*45qjHU<-ffihsgMwVl}Lcz9^p1Lur z)5wAhAsPF_Rn3-#1RNxgFcD$B27(iX`UlD&!jQpSq7$<$E=0+O?_NBZ{bRoym3?0}cX;G<-U(e7kNs-F^ zZg)Ud0{ESku?y>i%>V0U$!88=7Z{t3jYoJ)67X`yCOF~{0mWr*6L>kpvb=_nD?I_f zOD^~LTyoVoKE~?65DX%Fc?e`IMvsKI#1SzMkqrIlfH)R|$VVCtGPa}#5*U`ZYLeVr zCGR6E;;k4%T#v$-7Q|!KJW)N0V^$B3J==-rc#LT|c5FG;3XfPhxDi-^*u4)hEkwX# z1tRu7!K?}a8;vzm3}9M<)<)UHrBAL>vRr^y)NThW2wv18Z9PS9ep)ci06Z#o;q%%dUn&G0Jp&YVSP zM?(vus9N;;`9YX=t5p%|ha_82~hC44#MzhN6K%zf{xzFW5&=$lW$ zXN4o;j6y9=exrS%cJ7InXT7Y&Lj6)vi~s1~Le9LbpN5`P8m`UD04@LD^KoVo^lVuI zU7gF}_{kx-nA0fouQs8TlUAd_dyA2{p#|;xst*0KeGrcA*)Mh#HKCiImZFSZ%g~k5 zW^`(IH7Y)uE>`?Dto9!)K|8D5VYMq2-Q9giY(ANRzWg=VA;5$K z#fhomKZ}Q<u@)Y!UXcxTIPy;ik6hSrH0V{s2 VgSln*^5&Jjm#3Y5di2S>e*vew)R+JO literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_insertion_scripted/train/data-00000-of-00001.arrow b/tests/data/aloha_sim_insertion_scripted/train/data-00000-of-00001.arrow index 034f759f5d10d075fac58eb39ca2b754840dbeef..f5cdadcf5dde3d672beb08fa4e9779a3d00a3340 100644 GIT binary patch delta 936 zcmYk$$xl;J6u{wo+t=E{0}CRp3JR10+JY#ebwX5BoN-1)D%xU;G6)WJ1Vp7^RmxL~ zijDt*VS#%S%QkYQ%OZsMDTN5bfp4tG5rh{CK5FGgXQr3N zEMzUi^o%xTEHV9>NhZrQt5RC?epWw}qA`^XHj46~U)LiYsny(xD;)nV1V3vXG5=$iaN%!VU)( zU?CPE5BXS(B`824ir_>sTqr>)%CHp6;D!g~sK9bmVg**B3ae0!)mQ^B)?yvjV*@s# z2Afce&DesisKYjF#}3qECw5^s_FymeVLuvh00(ghhj9c)aSV+(juSYECY(Yud^n93 zoWWW65kM=>A&3y#a2^-Xjt+F93m4Ii9$dm@T)|a@aShjT12=ICx6z9}^y3Z&a2NM* xAA^Ws2*Y@QC?4Vw9%BSCj6%Z`JjFA_F^1=OftMJ^t4YbRGoSnKoZmgad+t5ww7>bT9cdZW z>c-ikbsk-=IOHiT5Iy~lG*Pt49b&$JpCx}5tK;moj(V5PZn0S#tQJR&&E9CKs&hH1 zl@&WlS%XU{kt?Kyd4doj2tutS2&1AP^uP=gzHomKO(=pET0-TiWGe4GohgkAFw zNW&bY!-ToWz&vDPKC+OF94tUC@~{y3 zScC#BMj@79DT=TR%drB*Scz3wjS{TETCBr*lwt!mq70j`8C$Rw+prxwP>!A0h25yY z9_+;Ml)J)1+BP>Yq*X!wBrVD;udb>4mxlbo$%luWZcICJcJir=*A;FMh~9& z`t-f#w?0>Q@(a;d+nxOUKYQ2PH2&3{fI{oPs>`o`{!w!V46Xml V{HNYOp!WJNr|83dhT-03<4@adklO$N diff --git a/tests/data/aloha_sim_insertion_scripted/train/dataset_info.json b/tests/data/aloha_sim_insertion_scripted/train/dataset_info.json index 542c7bf1..69f80830 100644 --- a/tests/data/aloha_sim_insertion_scripted/train/dataset_info.json +++ b/tests/data/aloha_sim_insertion_scripted/train/dataset_info.json @@ -21,11 +21,11 @@ "length": 14, "_type": "Sequence" }, - "episode_id": { + "episode_index": { "dtype": "int64", "_type": "Value" }, - "frame_id": { + "frame_index": { "dtype": "int64", "_type": "Value" }, @@ -37,14 +37,6 @@ "dtype": "bool", "_type": "Value" }, - "episode_data_index_from": { - "dtype": "int64", - "_type": "Value" - }, - "episode_data_index_to": { - "dtype": "int64", - "_type": "Value" - }, "index": { "dtype": "int64", "_type": "Value" diff --git a/tests/data/aloha_sim_insertion_scripted/train/state.json b/tests/data/aloha_sim_insertion_scripted/train/state.json index ecaa8fd8..716aca60 100644 --- a/tests/data/aloha_sim_insertion_scripted/train/state.json +++ b/tests/data/aloha_sim_insertion_scripted/train/state.json @@ -4,7 +4,7 @@ "filename": "data-00000-of-00001.arrow" } ], - "_fingerprint": "d8e4a817b5449498", + "_fingerprint": "97c28d4ad1536e4c", "_format_columns": null, "_format_kwargs": {}, "_format_type": "torch", diff --git a/tests/data/aloha_sim_transfer_cube_human/meta_data/episode_data_index.safetensors b/tests/data/aloha_sim_transfer_cube_human/meta_data/episode_data_index.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..8685de718f0ee43043e0aaa3c7e83359400a9af4 GIT binary patch literal 928 zcmeIvK}y3w7>3~yMNvefC`C~mMnuslLv2f~A`wL?iexXv1lr(65=<6KDdY$_LXMCl z;N3v!QiwWU9#jU2q&T+mq->PREO6hMSzlY!0n?EEdpN#A*rSWi(bW zT}8cy`8wJgSZ-oaL$QU)Hp(5$cG23yLZYLv+Q;|+jYCY2P#Ej!VAYyC) literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_transfer_cube_human/meta_data/info.json b/tests/data/aloha_sim_transfer_cube_human/meta_data/info.json new file mode 100644 index 00000000..02e62b67 --- /dev/null +++ b/tests/data/aloha_sim_transfer_cube_human/meta_data/info.json @@ -0,0 +1,3 @@ +{ + "fps": 50 +} \ No newline at end of file diff --git a/tests/data/aloha_sim_transfer_cube_human/meta_data/stats.safetensors b/tests/data/aloha_sim_transfer_cube_human/meta_data/stats.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..998e6105b908ba437ee29b05cdfd6d0a13120937 GIT binary patch literal 2904 zcmbW3e{9rL9Kbu+026;K;O2~HJUjjnR<^rquh+5ly^S9?)Dfb9;l~zMy&j(Nt_# zl7gG0@GUFiTo^-KPr%p~#9`GOQ9XfUR}Y6hdx__CjBPnyY&q2mw^%v25j;GxdmUg~ z2#>|`MC^5fT@^ewnrfsJz_tXVjeNvqL~c}z14=};-$FiY(nsnw4Psk{59<_&&NPZ$ zAp$lk5TiFBwxtNzszB;gc`_<*ib=+#Ee?gHjdHYDRqCw`v5cE>n>3>!FszHbUnZ)h zvJ6;^WZ2X=&V;pcn2CxfG@BZ)8K{<0Gg0xZWmAJKof=gob*ic}Imj@HVM|Hvn$Rp= znw^Un#c-+VWP-DDXhy>%#_J-5IGJYY&Wwgh_|zt~qlUsV78ahO2u%tQ12BZ7lm@Z( zG`Wm10aHkGq){yOm_e|e)Y!QJv9@9Y!DGj3jGZQ@(!{5BA4Ji%!vc6)tZp{jG zF7$-n`PCt$^gBS``W{3%x9Weax&ZS3>ec(MZqe~Q{Zw@>I8eE~{KPYRz_b}f;D;~E z#MvYFfYq@hVk~PfXw4fG=N7#JT%!Ug>)r;ImF@)}pPUJIZs`XUwPaBi)n94+{0$5T zE2+fs#aW4}#YWt8;p`#`wEM?Jhu?^^pZ#L6;C zH^T9=5^6dAF3OA7qlWn<@at21v|Yy<^ygwF@biv3l=I``dV66vGID!iX%CwIK&$@p zFQdTmbFcpA7YTi~zehKoE$OW)A6uOSkw=O^)o`VloL>M&t{xGCue}F0XAg*_*}DL! lDg`><3huo24oH456V|@b4CdARQ?a1tr3!;_-?wur{sn^<)@=X) literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_transfer_cube_human/train/data-00000-of-00001.arrow b/tests/data/aloha_sim_transfer_cube_human/train/data-00000-of-00001.arrow index 9682f0059a0d0a6b527a32033713fc76e3cd0074..1bb1f51955742500ee48a72fd31663ab7808cfbe 100644 GIT binary patch delta 940 zcmYk$$xl;J6u{wo+t=E{11l=63d&SKTM$LGPNm|6GtM|s(H1GnAUMDMT0!d}AF)D?Cu}S*tJ>XM1SO zLi!l~%xT|^rKVqVsZ_aURm!}dlKP<(jp=N#QIrS$x*nNGzaHuc1jAzXzh;r7)@01h z$)Y6K73%2>1pVovsWD|(${{V^T;iTc=xvA$;Sef)EzE?7@MZn2QS!gA$D&??YiitF zFHQQMsyQt)G2i=IrC+rUs#XaDj8I^L8S`L)UXy`LsK`P#=EH^s$iYG^!eZpY4hNQC zDV8A*`B;t>C_o{KP>d2dQHnB@V1ve^CiPfmW8mvV%)}aRLu>l@z#3pRU7HowV zweVpZ>aZOu><}% zU#b7P-RQgSfAM#@|Jq-!)C!kB>Bi+seUfW(s94)EtnVDwi;$p!79r3yHmiF~ZWY7}4%)?ytBQH1pQIhT|~f1gdcor(l5=ydtC)bVef1J>{92t<`T6+t!SS!&w^u%WaQv$~0R_jux)V@v{a1DQ_0B(P&Va%7 XUzz{Z`v=rs|K&t|=xABrV7u`rv$>S_ diff --git a/tests/data/aloha_sim_transfer_cube_human/train/dataset_info.json b/tests/data/aloha_sim_transfer_cube_human/train/dataset_info.json index 542c7bf1..69f80830 100644 --- a/tests/data/aloha_sim_transfer_cube_human/train/dataset_info.json +++ b/tests/data/aloha_sim_transfer_cube_human/train/dataset_info.json @@ -21,11 +21,11 @@ "length": 14, "_type": "Sequence" }, - "episode_id": { + "episode_index": { "dtype": "int64", "_type": "Value" }, - "frame_id": { + "frame_index": { "dtype": "int64", "_type": "Value" }, @@ -37,14 +37,6 @@ "dtype": "bool", "_type": "Value" }, - "episode_data_index_from": { - "dtype": "int64", - "_type": "Value" - }, - "episode_data_index_to": { - "dtype": "int64", - "_type": "Value" - }, "index": { "dtype": "int64", "_type": "Value" diff --git a/tests/data/aloha_sim_transfer_cube_human/train/state.json b/tests/data/aloha_sim_transfer_cube_human/train/state.json index 0167986b..d9449a3c 100644 --- a/tests/data/aloha_sim_transfer_cube_human/train/state.json +++ b/tests/data/aloha_sim_transfer_cube_human/train/state.json @@ -4,7 +4,7 @@ "filename": "data-00000-of-00001.arrow" } ], - "_fingerprint": "f03482befa767127", + "_fingerprint": "cb9349b5c92951e8", "_format_columns": null, "_format_kwargs": {}, "_format_type": "torch", diff --git a/tests/data/aloha_sim_transfer_cube_scripted/meta_data/episode_data_index.safetensors b/tests/data/aloha_sim_transfer_cube_scripted/meta_data/episode_data_index.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..8685de718f0ee43043e0aaa3c7e83359400a9af4 GIT binary patch literal 928 zcmeIvK}y3w7>3~yMNvefC`C~mMnuslLv2f~A`wL?iexXv1lr(65=<6KDdY$_LXMCl z;N3v!QiwWU9#jU2q&T+mq->PREO6hMSzlY!0n?EEdpN#A*rSWi(bW zT}8cy`8wJgSZ-oaL$QU)Hp(5$cG23yLZYLv+Q;|+jYCY2P#Ej!VAYyC) literal 0 HcmV?d00001 diff --git a/tests/data/aloha_sim_transfer_cube_scripted/meta_data/info.json b/tests/data/aloha_sim_transfer_cube_scripted/meta_data/info.json new file mode 100644 index 00000000..02e62b67 --- /dev/null +++ b/tests/data/aloha_sim_transfer_cube_scripted/meta_data/info.json @@ -0,0 +1,3 @@ +{ + "fps": 50 +} \ No newline at end of file diff --git a/tests/data/aloha_sim_transfer_cube_scripted/meta_data/stats.safetensors b/tests/data/aloha_sim_transfer_cube_scripted/meta_data/stats.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..91696d32dfeff1e269971cf6f3ed798d0f06f776 GIT binary patch literal 2904 zcmbW3e{2&~9KesjLI{cB$08e$SkGyKoL$@NUCX+AuLCy61Qf&kLx;=FUfnIWU3TZ( z!V24PjX&F~{b+SCo!jZ#gb` ze|+!dee&MtzTfY=RVxVm>?irxWHI2+_wfy6!G6*sH`WSd0a-%ZNQ#uIc{O^)YTrkZ z9$w}v175Er$P#*Ip%`{wkoteU!268>7?!eHZRrTnAOS6>tgJH)A;}(Nn?TDco6W8w zgj!Jwc!WyP?-3dn@v%?`f*=sy%L5>NFp2!EvcAbm?(AeOS( zEvh7M9q)T+MRp6qVAu07h6UM?YCBdvk7HDi9eHN3=X8u=ISjI#Dusv498?H47TdiC zFf4>cVp%Nq9>J&z78y+yQVL*Lf?7rn?9wkZ$YxK#FBmT&2Qulv`I-hXEW?3xIWYmd`-iH{L;zU-RI8Osrl2BLAtDV*?`uNuc$t(wI^$pRKm9lCSqti*z7JR-; zR9$5mun0-fsdk(RtLHEi6?JGj)m}4Db){yaqFzg<8e2M5l6iTttkby25Q(C<;M~=q z>AKXq7ZHlGr@E5{PS2qh4Us6uf)jBeP1l_k4Uy2TjdMp9eF75ZTO=wW9})eKGPGg8Jq+!cMQZV7mDF%doFkLbPk*yd^~pQYEt?8FDG z0V@yY!b$Q6(9$!;?cR77{FXBYc3j8?=8BKNRksK_`@RMQv3=_jVyH-E+#2^55zW`O zEopvsn;Hivf89!eu98`9V~H9sd*f2EdhVsSo^Yu#8{WyO@gKj};4$3vB(U`5;i1m| z_ehT2VD7V>cnrRo@5(AIEm+mw3)?0><<@2ogTrT%aLpAz{B!dZD0hcJ@!1G`u099O zlplso|AgR;b8o{0^?7vZuIc#tuUg=yvPAUb$TB5x{3x6_WPzdj?!wz2oQ@aWm;y7O zjKmI2Z-=cf<#M+h8F=iXDfWF=Qt2Dr0y~D@kIfD3QG$0b^>?>i<2INs$ChEeKA-=l5-s=kr@BeES z8dj>c>8Z(-_!|Aq4PKu+UNq39>k!3uB~zd02t?I3M5163WcnHy2||c1t7~bn7cbNqr|PR>Rwft0h6#DjVBmqX-SO&_RM82{1sdNkkH4BqIeQV8TeGVieLa z8tE{@f-xA2amYX>#$y7qkc}MVA`e#NqX0Hc#3b0^Kp~1S8O4}_sVKoTlwvw&z=@fd zh1r;cxhTUtlw&>?U?CP^F_vH{DzFU8u>vcx3ahaOF092mtj7jy#3odt3Y)P7Td@t> zQ4KeCz=NIG1uuN4!EV&Tk2>tZUIb8&1~g(Hn$V2>IDmsVgdkdQ7)Njv$8a1ca1y6* z8m%~kvp9z~wBtNFZ~-A)#3futC&K80f-AU+Ylxs5*Kq?k(SuvKjb8NO4({R}?&AR- m;t?L>37+B^p5p~x;uT(_e^53?(>#N=%4kqFsP|nx<$nQ%eErJ+ delta 4588 zcmeI$-BV0q9Ki8&PVGxs6?#Lov`D2SFL{3_@1Y2>mff=0N2!Qk?Nvh zTr}f`roX^VZp;`nX1Z`m`JP=%W->0%%|0`q^Y)zId4Btx^E}VYwtsoAxl`Yv(e_fp zv^Cmfv9o4Mnpo3pA0>)bxmry1Y!l?KVt$mZ$iBbOYBO6cB^I;2z-lWs=M@(^xGN!| zpSqGlrAE$@CZ-5NupkIUk|2B+1)&bPFrl04?I=S!0+A^gEZFgjprnJo+}2(AEj{F z7+`RAcrOUK-n}Qu7y^As>N(CUwm58NyOl$sv(Ix~ePT>~VwCRk{V*j;FBqVMr+9Me z^v1R}1vo_Uvphm$N~&z}*3;e5Lh)hl;}$e*-taf~lB>bWFz#%)~6r#vIJWJj}-eEW{!##u6+=29{wtR$wJoVKvqu6Kk;!>yd?Q zY`{k3U=ucD3v#g)+hE3aSg->-VTBEO$j2_&u^W4^7Y-Dl5JlLBV(do=4&WdTp%jO4 z1V>SZV>k{c%5efGQGru9jY?GE49?;l&f@|uq8gXrLJclM#uZ$}HMmiW>$riNsKYJX zMm_G}F7Dwz9^fG!;W3_|0Z;J^jd+e1Xu?Z0w>9co!YysFUB=g9o3YFI>OWhzD^l7e z>vhpi-%wL&@BBU1)k(nlXR=Wx0oqr!2bA{JOu*B=iV1kzS1$qQua!=fkB?XHAOGsT zd*#*p$G^H0kbnHEI|2FEe^r-X&-|n24Cr6~mHAJ-Z$Rz!UyjuUwY|%3DK+Sozjl%Go&vXeDLY<*Z5CzY1`*KOHDQb#A|Dpa^v}OeiP^A(* zLbK!0=jmIjU5PzN^H-t$G%_CTpkX?+8v9S$xduH;3lq>6XvSK!p9(7UV`@x9Ptcxq z=vms4gdU?M$>;}Et42>#RSLSFDpS!`dWVK-cN#v=N{64Rc|CfXsxr_+RFR3UqBB&T zh5as#%SMmW1!~b?57PP#=x706q**!W%QQL{?W7?pWKU@y|c+f*z? zk5g3{x|M#V*S28)PVXDgXyWk+r*^Ta|zv-zx*rV!TfG$#dJ@yby z+l#(Lf6%6V*gw$I`_Tyv&`Mv^;YRFH2jCStPfs4i{)M(Tp&wFRGg^BHPEeH@eU;`O zMu+H$7W7LR--^CT`;MR|X{rT1MiZ^*C$zr}ooR!wX!B8ikE+|z1613AzDFzV==apv ziT+6Yj-eF}I07Q%djGm>1tBu-JZlg8!=17Gfgp-U zI|x~UNEp$vQ(c1a&_OWDOXMNw6#Way2mHg66jG0X$EO=8~t1Dk~CG zv0(^*352c$+XP!kOfWP>*f!*Z#~7h2BgY^oTna>sKXO~1wvLJ6A`la+-N)#fK?G15>-8rp74G}ma*%*wF2X1hJM9F6if`CSiNdi*}l+mz5(Wt*jXexO!7&aOf^@yV| zr8o%;K?oCXUQn%ZlvQhL*ChggMfIJ4C?!eWStKAuRCj`+k|TxS7hqJ`F+?dv2Enps zVOh^!C3AaDc-+o=&Wpdx4j}_2LN-fh(p%-O&W$o5L(ZnNjVmG7E91CMIIC|KMci3S zmC5Ml;BWWVV0gaU`*o9$xnlp5g&SeK^qv&Lc=tyJS3)|bOc4()UbDma)w56i;raG) z@!V9g>+Vc(=kauLVSc{wa(%thvakjkncB}mSPq^QYr4K*94ut$m-Ae=i0J%)gUjP6A literal 0 HcmV?d00001 diff --git a/tests/data/pusht/train/data-00000-of-00001.arrow b/tests/data/pusht/train/data-00000-of-00001.arrow index 9a36a8db0fef662afd92ec87297e5d552fead22e..5972be9bfd3afeadffb620b4780448a1b780ae25 100644 GIT binary patch delta 382 zcmeBJz_Xx}hwVQQJYb#3rpL5{X`-1CW6j1)DMpsOl+=pJr*?Hu3`I0N)C$QcWvvLH%&`o||s+M5&D hI~Z9(e7?!LoR6CgxY`Z47`Gd6F&+4}jhmT+6##oSY6JiP delta 995 zcmZ3`$i5U+A1H%m_28I+MW&z?Oj0_At zKpX+YDnR@ND1QKmYk=4Sh*^O6%b&?o%u4k!|Nj36@)#X}gvwtKn~_NX$kqU2kTMVu z1!AlY0E*8+(w~Auzc_aNAph|(+(9y6$z)GvZPqzJW3EiDWL9T80W$F4EQyhVIBtQ;$YwbVs;<~1F+r;5WSo0SyCCn@$A7o`5mj0?gdt6h$;py1__`( z7N9PWc|5>)0R`+rs4R$*pFZ(1llJBewhl(u1HXX^kN}L&!3q&P!2mNCl@F5#i3&{q z%KmtA28Y7r05+E9I~?tII2gCz;b7YHZF#^4Cf3Ok91@ciI0Qy9Sz#ctJm4!6D+ee~ Hg8~}>yI}7R diff --git a/tests/data/pusht/train/dataset_info.json b/tests/data/pusht/train/dataset_info.json index 667e06f7..aefe4785 100644 --- a/tests/data/pusht/train/dataset_info.json +++ b/tests/data/pusht/train/dataset_info.json @@ -21,11 +21,11 @@ "length": 2, "_type": "Sequence" }, - "episode_id": { + "episode_index": { "dtype": "int64", "_type": "Value" }, - "frame_id": { + "frame_index": { "dtype": "int64", "_type": "Value" }, @@ -45,14 +45,6 @@ "dtype": "bool", "_type": "Value" }, - "episode_data_index_from": { - "dtype": "int64", - "_type": "Value" - }, - "episode_data_index_to": { - "dtype": "int64", - "_type": "Value" - }, "index": { "dtype": "int64", "_type": "Value" diff --git a/tests/data/pusht/train/meta_data/episode_data_index.safetensors b/tests/data/pusht/train/meta_data/episode_data_index.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..3511c2668c8e83202c0bf94dd4412e1c6505ce50 GIT binary patch literal 136 zcmXS5fPiYHw4(f6C97(sl#)m4#zsmyO2rw8AYQaltd3GjVo73rep*^_YDqCr z$Uw&;wpK?eH#ISjBz+b-hGt-mnWX76G}AFM0ck8QNg>HXBNH8CquAP71rT6p`0otD dp|&Z`Q~phIW?*n|WMDYq_{-?Dlbpx_Cje4VQ}F-* literal 0 HcmV?d00001 diff --git a/tests/data/pusht/train/meta_data/stats_observation.image.safetensors b/tests/data/pusht/train/meta_data/stats_observation.image.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..0a145d47756680c79adc2ab8e03d346c34d2fbe4 GIT binary patch literal 304 zcmeyt00GrXxrr4@R@F)=C6xuKN>)m4#zsmyO2rw8AYQbwj-ifWtd3GjVo73rep*^_ zYDqCr*g(h7D7IEdDK|ASk7Uh;Mmk0&VBMLdYc?{`F*XBfE-pzS*=A!i9TSV#+FAt# w1qOx&dl+V7tF%{&sJ6e{S7qPa)MU4K(IUI))27+o6FzTyOKy_wDgAl20Gfte!2kdN literal 0 HcmV?d00001 diff --git a/tests/data/pusht/train/meta_data/stats_observation.state.safetensors b/tests/data/pusht/train/meta_data/stats_observation.state.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..28ee2851de28f5f83b84d2c5db6b3715eb70b501 GIT binary patch literal 272 zcmaFC00GrXxrr4@R@F)=C6xuKN>)m4#zsmyO2rw8AYQaltd3GjVo73rep*^_YDqCr z$Uw&;wpK?eH#ISjBz+b-hGt-mnWX76G}AFM0ck8QNg>HXBNH8CquAP71rXRK^uu{h h)qm$KnN;WN%O^QE`-VGSIKb>Qd+TYZdA|-g0RV>6SLOf! literal 0 HcmV?d00001 diff --git a/tests/data/pusht/train/state.json b/tests/data/pusht/train/state.json index 7e0ff574..dda3f889 100644 --- a/tests/data/pusht/train/state.json +++ b/tests/data/pusht/train/state.json @@ -4,7 +4,7 @@ "filename": "data-00000-of-00001.arrow" } ], - "_fingerprint": "21bb9a76ed78a475", + "_fingerprint": "a04a9ce660122e23", "_format_columns": null, "_format_kwargs": {}, "_format_type": "torch", diff --git a/tests/data/save_dataset_to_safetensors/pusht/frame_0.safetensors b/tests/data/save_dataset_to_safetensors/pusht/frame_0.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..1bb7c0696925d77589e87657f29f35a9cdad096c GIT binary patch literal 111338 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 Mj*dSp>&X83KieFlGXMYp literal 0 HcmV?d00001 diff --git a/tests/data/save_dataset_to_safetensors/pusht/frame_1.safetensors b/tests/data/save_dataset_to_safetensors/pusht/frame_1.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..ae4601246195dc2fc5fe6f0a2b865e4fdbf82092 GIT binary patch literal 111338 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 literal 0 HcmV?d00001 diff --git a/tests/data/save_dataset_to_safetensors/pusht/frame_159.safetensors b/tests/data/save_dataset_to_safetensors/pusht/frame_159.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..2b5729d244b9717d5d662e1fc827ee7ff6e453c7 GIT binary patch literal 111338 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 G+WrUegL3!) literal 0 HcmV?d00001 diff --git a/tests/data/save_dataset_to_safetensors/pusht/frame_160.safetensors b/tests/data/save_dataset_to_safetensors/pusht/frame_160.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..a048c0cc3713987a0ff989f845074180b309172e GIT binary patch literal 111338 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 Vz<$LYH}$_TcW?jL{%5ah`!5D&U|j$J literal 0 HcmV?d00001 diff --git a/tests/data/save_dataset_to_safetensors/pusht/frame_80.safetensors b/tests/data/save_dataset_to_safetensors/pusht/frame_80.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..e37d54ce8fa0bc43e720c43e18e8875c21991569 GIT binary patch literal 111338 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 OPkv*5qtWq3e7A literal 0 HcmV?d00001 diff --git a/tests/data/save_dataset_to_safetensors/pusht/frame_81.safetensors b/tests/data/save_dataset_to_safetensors/pusht/frame_81.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..5cd8451cbba297ef69365e797bc588dc3e35a9e0 GIT binary patch literal 111338 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

np=Vjp&Xwl2DLI%~ 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 z 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
RZ9}I7vKGfKMiACEtMxoky%0)~lPrw=VYkB#D z`}QI@%*JeXL4hAa7JmAqveEmBVH`_i)>n2~_~DdChp&Uj_J5qmq}sZ=et`G{mT<=1 zz9O@{C!;QSiHj|t_vH=WZV?qfS=|Zmy~g<`{C0FF zkZdguHUfx_wJev7j8@D_H1A8JieV#o>Y+b=8kIHPm{?c45x~FicM=f-|K~~=jMMvk zt2aQ@%g8WkZHQ|<{q*w>CJjOqdmsM9XR#Gp6h}V(^|N?S8PArY>~@bgKD{7tkr=iO zvNm7zISHFc#(i2tfsYC;*NUi7WTlS`+93|1E^;D|{KX0_Z zd^-rOGMJBV`uK4kSj*k^xU#OP1H>vr#i|er|Dn>#*gokneyyz#{I>g%)FLRz1=Pqb zhr8Ap3QLr~3QqgLBZ?ByuCCiX;$a|sV4GFWI(vgw&F=fPFRpb0k1O;u_&alM%jq4n z+_f5-c+u^6t(NXYkTQI%{p=`}+p_n>wn9ag23!O?19Yr3tcTSY_dWA@Lc;G-jodRN zdX!V$H0xvd$XPQ^HsiMPmMeNR7JrewkWYKH15RJ_Ve2u2jbaCz0;f0&dl)`Pzc;N(#^OEUWMP(e@zV4U0HDZ3g!L7tYF-+#U3#nKTJ{GLv2vWyKt4%$5f3mmmo#Oq& z7~v?p4`U}dMH-BumKqBuFNmCdJDTZ5|L?LN`}P0st?ll6q`fi)6MUZ*@jh!OrdM8w zyiW_ktSb>B)URo)d#m#i9{e;+^JhXt$MY#VbUX`@F)7BlapEHa3hUx+T{+0Z!wihZ zBP!(5A}QkhE*BAg_ZG8nb_P)$P(spP=OAS}`Iyhn1c;8V0P@E$9g+4f!ML1|ASZD; zhz(OZvhz6v)1`L-!CQEMJe)~Iyo*dRA~#u(92pv9!7T?NH=x4M%WxrNYGatQ@5+!f zNe?jSQ5NLuu6m8&m0INbR01Ygo)ZZ<2*;?P>JTZ_G7O0kJECW*kMxX{Aw^fhFmf-M z5H7Rt7>c{K2xWZ+rsLiN_z*}pK7_%^Pf%j%r0bxB-T^fyHzkMB9i#H&Cse;I1lmTL3Sc4?3hhu6vZz7j_)sQi!56Gv301P@$2nl#jg7nekBN{7#m_PS! zA(7X4Yv_!HkPE*C>&j?_>K*iZ>WaiY>MmJdLiYE~>vG7R)vn$bsK0c$i1C)?t*_U2 zL1LdJVK$*6;PJ&r2rF0-LitbP)Ac`UW2-sq8KVS{Y0jhCqtDftq|kHqLA&}G+cBYf z{~xp%qw73qtvAP*%6s1E0tvPH*d;4u?~Wou_FA_7cL7oTSw*DokwjVDUd>|!Wo2BS z7fpef5sYAd6c`|!`4}YW4Ss!A!0r05Epa4@#~YFTu!ni)Q-UG+93y@(N`&}3KdTey zdM1u{@ov3%u1bA%cz)e;-Kn~5E^%aV6c?GP7eunB_3C3H(Bh_z!u8*Mx-mM4d_4!= zStOW>w_dVb5MfMJs_*SrufG&`MZBlgrEb;ZQQbL5a`9;EBFyE?Uv=)%u66z2i!u3_ ziwIS;OWlY%E{37dvffwy0kX5~fx$Prfy@)|B94ZS>v_~dF?(?r5dzw}y4Q5q>ypT2 z>Q-br>fAT%>QSje#r>Ww2k5TDQKnD#sg_eUrxU%`FikqZ~n;C?v>bX9QQYUK9q&v5^azpr_6 zadNe7a6z@v<%#MhgY@cnR7rIj-q&j8uN~D#*-wUhb zdtX!=zpJlqka%A`M&(ldlS8z|N0zqc{P9-x-5AQ6&1(!bE(Vk}9Ld5pV-{95=?(9& YQ2zhCB!8dXf4=$u_4PS{8}^C(4{x3dTmS$7 literal 0 HcmV?d00001 diff --git a/tests/data/xarm_lift_medium_replay/train/dataset_info.json b/tests/data/xarm_lift_medium_replay/train/dataset_info.json new file mode 100644 index 00000000..59a43bde --- /dev/null +++ b/tests/data/xarm_lift_medium_replay/train/dataset_info.json @@ -0,0 +1,51 @@ +{ + "citation": "", + "description": "", + "features": { + "observation.image": { + "_type": "Image" + }, + "observation.state": { + "feature": { + "dtype": "float32", + "_type": "Value" + }, + "length": 4, + "_type": "Sequence" + }, + "action": { + "feature": { + "dtype": "float32", + "_type": "Value" + }, + "length": 4, + "_type": "Sequence" + }, + "episode_index": { + "dtype": "int64", + "_type": "Value" + }, + "frame_index": { + "dtype": "int64", + "_type": "Value" + }, + "timestamp": { + "dtype": "float32", + "_type": "Value" + }, + "next.reward": { + "dtype": "float32", + "_type": "Value" + }, + "next.done": { + "dtype": "bool", + "_type": "Value" + }, + "index": { + "dtype": "int64", + "_type": "Value" + } + }, + "homepage": "", + "license": "" +} \ No newline at end of file diff --git a/tests/data/xarm_lift_medium_replay/train/state.json b/tests/data/xarm_lift_medium_replay/train/state.json new file mode 100644 index 00000000..e9b74d7d --- /dev/null +++ b/tests/data/xarm_lift_medium_replay/train/state.json @@ -0,0 +1,13 @@ +{ + "_data_files": [ + { + "filename": "data-00000-of-00001.arrow" + } + ], + "_fingerprint": "9f8e1a8c1845df55", + "_format_columns": null, + "_format_kwargs": {}, + "_format_type": "torch", + "_output_all_columns": false, + "_split": null +} \ No newline at end of file diff --git a/tests/data/xarm_push_medium/meta_data/episode_data_index.safetensors b/tests/data/xarm_push_medium/meta_data/episode_data_index.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..721609343bddf6264f47a96f01bcf5c3026b2dfa GIT binary patch literal 12936 zcmeI%<(Cu$8^+aZccqgCcUVg`-MWR=i9eE1R<2rIaXxS5<9waput3S^)npqE<=LFW8@Y)u^D`c23a7csIB39sa=LWujM)ojHu>a{+JT6MTaQSg>sLYOyU(-~?XAoA?lS@pJyc zD&?Y^&H)_DS-h6(_#!{zZ!A|ndQI7jXYv9rXJWYq*(vc!))6MlY2ecrwrB zT(07ye3f4@U#;j>XKN1TcwWNm`5<@l6CP#7+R<&!z8u4gxPtfbIlj-IS-MX28nHW1 z=QJ+joqU>m`5lX_1{C4S0dtdxju z3-;q#oXM+sKcD9Z{Do!eMXxb?@C;7pV&27P_%^?1vHHzQZ3_ zym9pEu``G9d@kT^e1dQA01GyWUM;re37o*ocoQGuE`H8GSfy!n(>Z`+Ig8hF9be=} z{Eg+BMXxD)@l0O8rM!n*`7VECiL~g|XBQ6VWM0YJ`6S=uK^AHrz1nQY6FHHW^JYHG z-TZ=ovTBRyw&FmJ<7{5X_1w;n`8&(Ej9xSL<|tmsWxSWq@;&~_1{C4S0dtkfyGE!dA|aVD?k{d}Gu@E4Zp9KFWu z!816Wi+LBH;oJP4#kxctHm-!iwvvRlS zwq$>1@nT-X2lxU%BUL!#CI3OoiPjpBcv3fsnrS6|JKsUpBuQ%rxU9TrsaJ_!92CY_uZbFKASb`Di z;BZm|Qfxa*I3g=Ni~&ZXc2`0<9E_0wgFT#V$;q!)jiH0V3@?JniZM(`Gr@}}l3LOP z(#&ogA}b|rfXUphu2aken9S*XxvU6N2b1ZXua{I{nvh{0qjK5JX9#4N!GhNxG`q!u zCw){h251Q;FvgIzfCQv4k1>j*3j`p9$*e+TjUWKDC<7U!3gN~PWX~(&gGrcD>P0LG~gr>!a&p6_BcSH ztmTM0?lj774pF3SIUr`Z7R6>QP$+OYASS35fuCCKGHl$Gz5K9mSR2s;Hah)@!zXOVyub_ik= zksK}r^~O>vd)w}*E)jBagZcmKw$9pQut%l$9A0iEq!vFvP literal 0 HcmV?d00001 diff --git a/tests/data/xarm_push_medium/train/data-00000-of-00001.arrow b/tests/data/xarm_push_medium/train/data-00000-of-00001.arrow new file mode 100644 index 0000000000000000000000000000000000000000..241117c58ce30b511251dbff97c6b9b85054ce32 GIT binary patch literal 99944 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 literal 0 HcmV?d00001 diff --git a/tests/data/xarm_push_medium/train/dataset_info.json b/tests/data/xarm_push_medium/train/dataset_info.json new file mode 100644 index 00000000..9e47b345 --- /dev/null +++ b/tests/data/xarm_push_medium/train/dataset_info.json @@ -0,0 +1,51 @@ +{ + "citation": "", + "description": "", + "features": { + "observation.image": { + "_type": "Image" + }, + "observation.state": { + "feature": { + "dtype": "float32", + "_type": "Value" + }, + "length": 4, + "_type": "Sequence" + }, + "action": { + "feature": { + "dtype": "float32", + "_type": "Value" + }, + "length": 3, + "_type": "Sequence" + }, + "episode_index": { + "dtype": "int64", + "_type": "Value" + }, + "frame_index": { + "dtype": "int64", + "_type": "Value" + }, + "timestamp": { + "dtype": "float32", + "_type": "Value" + }, + "next.reward": { + "dtype": "float32", + "_type": "Value" + }, + "next.done": { + "dtype": "bool", + "_type": "Value" + }, + "index": { + "dtype": "int64", + "_type": "Value" + } + }, + "homepage": "", + "license": "" +} \ No newline at end of file diff --git a/tests/data/xarm_push_medium/train/state.json b/tests/data/xarm_push_medium/train/state.json new file mode 100644 index 00000000..0ec1f046 --- /dev/null +++ b/tests/data/xarm_push_medium/train/state.json @@ -0,0 +1,13 @@ +{ + "_data_files": [ + { + "filename": "data-00000-of-00001.arrow" + } + ], + "_fingerprint": "c900258061dd0b3f", + "_format_columns": null, + "_format_kwargs": {}, + "_format_type": "torch", + "_output_all_columns": false, + "_split": null +} \ No newline at end of file diff --git a/tests/data/xarm_push_medium_replay/meta_data/episode_data_index.safetensors b/tests/data/xarm_push_medium_replay/meta_data/episode_data_index.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..721609343bddf6264f47a96f01bcf5c3026b2dfa GIT binary patch literal 12936 zcmeI%<(Cu$8^+aZccqgCcUVg`-MWR=i9eE1R<2rIaXxS5<9waput3S^)npqE<=LFW8@Y)u^D`c23a7csIB39sa=LWujM)ojHu>a{+JT6MTaQSg>sLYOyU(-~?XAoA?lS@pJyc zD&?Y^&H)_DS-h6(_#!{zZ!A|ndQI7jXYv9rXJWYq*(vc!))6MlY2ecrwrB zT(07ye3f4@U#;j>XKN1TcwWNm`5<@l6CP#7+R<&!z8u4gxPtfbIlj-IS-MX28nHW1 z=QJ+joqU>m`5lX_1{C4S0dtdxju z3-;q#oXM+sKcD9Z{Do!eMXxb?@C;7pV&27P_%^?1vHHzQZ3_ zym9pEu``G9d@kT^e1dQA01GyWUM;re37o*ocoQGuE`H8GSfy!n(>Z`+Ig8hF9be=} z{Eg+BMXxD)@l0O8rM!n*`7VECiL~g|XBQ6VWM0YJ`6S=uK^AHrz1nQY6FHHW^JYHG z-TZ=ovTBRyw&FmJ<7{5X_1w;n`8&(Ej9xSL<|tmsWxSWq@;&~_1{C4S0dtkfyGE!dA|aVD?k{d}Gu@E4Zp9KFWu z!816Wi+LBH;oJP4#kxctHm-!iwvvRlS zwq$>1@nT-X2lxU%F|9LFaWL-jywm3;SKyg!|yY{_nld6 zk=QXRo9EnAHnTr%4$Ix6vgMBCY`I(RixL@RXUOzcr=kNOTc&FcW|K+Bb{)JG0fh_{ z;D5PoW`yb$0z?f0QeyQ)g{T&&cU(*8`B4p2-K)2ADJN^$gQ<*V4~J_|>NTi3bTJQW zFrhj)oGt=gterKSFe^Na23n-Pt57){j1~cny_{s;Om9|=rh>){uY!n*(R7G0!K)~O zT4DrZ%x(}ODkY|Y&fIQpQuGMu%;`$Gs0dvJo#|Yu7gV6@5N96!a?$4F1metK#vXP% zt!%~?-YRholn4_TV2D~k0#caA07cLR0uaJv)*zxr5CDpwfeezjFPV8u*a{*LQ&U^T z2#ZlrFRAIRazxb-FW75-S1`hIFrF2{3}??ecK)L2ePlXQY4iLBgA)Y>IEjQXP*m0) z2N)`AJ)(-8`q|APhG|<5h#9Wz8sY3-M+tx);@3Dbm8e?kKO#CE#a-N zO&q2BZXcf-DK0%9EPXDIZ@*5f&-Si6f4!q)OK<6og*SM=b~vRn?MRgAt`lY2@bQ!J zd$!lu^W&Z|SvX^C`8H{6>nYK(p;lvSL%;E7{+7{R*gN&L{SLjnBiDWUN;5sVdoEF& Y7*CMK?+0co6=SAy411QOn{7YoKfqmxEdT%j literal 0 HcmV?d00001 diff --git a/tests/data/xarm_push_medium_replay/train/data-00000-of-00001.arrow b/tests/data/xarm_push_medium_replay/train/data-00000-of-00001.arrow new file mode 100644 index 0000000000000000000000000000000000000000..2e07ea95fda9043071f0f2ec66a104b6ecdd8825 GIT binary patch literal 105064 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

b%e;l44g^$rhdY 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%0A9<$~-6j#g=@*4@SbzH? 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 vv-#QkCCxndA72u<-)es2{-f&*_Me^ 0 + + for video_path in video_paths: + assert video_path.exists()