LeRobot documentation

Ganti Nama Peta dan Kamera Kosong

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ganti Nama Peta dan Kamera Kosong

Saat Anda melatih, mengevaluasi, atau merekam dengan kebijakan robot, dataset atau environment Anda menyediakan observasi di bawah satu set kunci (misalnya observation.images.front, observation.images.eagle), sementara policy Anda mengharapkan set lain (misalnya observation.images.image, observation.images.image2). rename map menjembatani kesenjangan tersebut tanpa mengubah policy atau sumber data.

Cakupan: Peta penamaan ulang hanya mengganti nama kunci observation (gambar dan state). Kunci action tidak terpengaruh.

Mengapa kunci observasi tidak selalu cocok

Policies memiliki set nama fitur input yang tetap yang tertanam dalam konfigurasi pretrained mereka. Sebagai contoh:

  • pi0fast-libero mengharapkan observation.images.base_0_rgb dan observation.images.left_wrist_0_rgb.
  • xvla-base mengharapkan observation.images.image, observation.images.image2, dan observation.images.image3.

Dataset Anda mungkin menggunakan nama yang sama sekali berbeda (misalnya observation.images.front, observation.images.eagle, observation.images.glove), dan lingkungan evaluasi Anda mungkin menggunakan set nama lain lagi. Alih-alih mengedit konfigurasi kebijakan atau mengubah nama kolom di dataset, Anda meneruskan rename map: sebuah kamus JSON yang memetakan kunci sumber ke kunci yang diharapkan oleh kebijakan. Penggantian nama terjadi di dalam pipeline preprocessor, sehingga kebijakan selalu melihat kunci yang diharapkan.

Menggunakan peta penamaan ulang

Lewatkan pemetaan sebagai string JSON di baris perintah. Konvensinya selalu:

--rename_map='{"source_key": "policy_key", ...}'

di mana source_key adalah apa yang disediakan oleh dataset atau lingkungan, dan policy_key adalah apa yang diharapkan oleh kebijakan.

Hanya kunci yang terdaftar yang diganti namanya; semua lainnya diteruskan tanpa perubahan. Urutan entri tidak penting.

Kebijakan yang didukung: PI0, PI05, PI0Fast, SmolVLA, dan XVLA.

Pelatihan

Misalkan Anda melakukan fine-tuning pada lerobot/xvla-base menggunakan dataset dengan gambar di bawah observation.images.front, observation.images.eagle, dan observation.images.glove. XVLA mengharapkan observation.images.image, observation.images.image2, dan observation.images.image3:

lerobot-train \
  --dataset.repo_id=YOUR_DATASET \
  --output_dir=./outputs/xvla_training \
  --job_name=xvla_training \
  --policy.path="lerobot/xvla-base" \
  --policy.repo_id="HF_USER/xvla-your-robot" \
  --policy.dtype=bfloat16 \
  --policy.action_mode=auto \
  --steps=20000 \
  --policy.device=cuda \
  --policy.freeze_vision_encoder=false \
  --policy.freeze_language_encoder=false \
  --policy.train_policy_transformer=true \
  --policy.train_soft_prompts=true \
  --rename_map='{"observation.images.front": "observation.images.image", "observation.images.eagle": "observation.images.image2", "observation.images.glove": "observation.images.image3"}'

Evaluasi

Kebijakan yang mengharapkan observation.images.base_0_rgb dan observation.images.left_wrist_0_rgb (misalnya pi0fast-libero), tetapi lingkungan LIBERO mengembalikan observation.images.image dan observation.images.image2:

lerobot-eval \
  --policy.path=lerobot/pi0fast-libero \
  --env.type=libero \
  ... \
  --rename_map='{"observation.images.image": "observation.images.base_0_rgb", "observation.images.image2": "observation.images.left_wrist_0_rgb"}'

Alternatif: edit konfigurasi kebijakan secara langsung

Jika Anda selalu menggunakan dataset atau lingkungan yang sama, Anda dapat menyunting config.json kebijakan agar kunci observasinya cocok dengan sumber data Anda. Dengan demikian, peta penamaan ulang tidak diperlukan.

Kompromi: memodifikasi konfigurasi kebijakan mengikatnya ke satu sumber data. Peta penamaan ulang menjaga satu kebijakan tetap dapat digunakan di banyak dataset dan lingkungan.

Kamera kosong: jumlah tampilan lebih sedikit dari yang diharapkan kebijakan

Beberapa kebijakan dibangun untuk jumlah input gambar yang tetap. Jika dataset Anda memiliki lebih sedikit kamera, Anda dapat mengatur empty_cameras di konfigurasi kebijakan alih-alih memodifikasi arsitektur model.

Cara kerjanya

Menetapkan empty_cameras=N menambahkan N fitur gambar placeholder ke konfigurasi kebijakan, dengan nama:

observation.images.empty_camera_0
observation.images.empty_camera_1
...

Saat runtime, kunci-kunci ini tidak memiliki data yang bersesuaian dalam batch. Kebijakan tersebut mengisinya dengan tensor dummy yang dimasker (diisi dengan -1 untuk encoder visual berbasis SigLIP, dengan attention mask nol), sehingga slot gambar tambahan secara efektif diabaikan selama pelatihan dan inferensi.

Contoh

XVLA-base memiliki tiga input visual dan empty_cameras=0 secara default. Dataset Anda hanya memiliki dua kamera:

  1. Setel --policy.empty_cameras=1.
  2. Konfigurasi menambahkan kunci ketiga: observation.images.empty_camera_0.
  3. Gunakan peta penamaan untuk dua kamera asli Anda seperti biasa.
  4. Slot ketiga dimasker — tidak perlu gambar palsu dalam dataset Anda.

Referensi cepat

TujuanYang harus dilakukan
Kunci dataset ≠ kunci kebijakan--rename_map='{"dataset_key": "policy_key", ...}'
Kunci Env ≠ kunci kebijakan (eval)--rename_map='{"env_key": "policy_key", ...}'
Rollout dengan kunci yang berbeda (inferensi)--rename_map='{"source_key": "policy_key", ...}'.
Jumlah kamera lebih sedikit dari yang diharapkan kebijakan--policy.empty_cameras=N (didukung oleh PI0, PI05, PI0Fast, SmolVLA, XVLA)
Hindari meneruskan peta penamaan ulangEdit config.json kebijakan agar kuncinya cocok dengan sumber data Anda
Update on GitHub