LeRobot documentation
Haritaları ve Boş Kameraları Yeniden Adlandır
Haritaları ve Boş Kameraları Yeniden Adlandır
Bir robot politikasıyla eğitim, değerlendirme veya kayıt yaptığınızda, veri setiniz veya ortamınız gözlemleri bir anahtar kümesi altında (ör. observation.images.front, observation.images.eagle) sağlarken, politikanız başka bir küme bekler (ör. observation.images.image, observation.images.image2). Yeniden adlandırma haritası, politika veya veri kaynağını değiştirmeden bu boşluğu kapatır.
Kapsam: Yeniden adlandırma haritası yalnızca observation anahtarlarını (görseller ve durum) yeniden adlandırır. Eylem anahtarları etkilenmez.
Gözlem anahtarlarının neden her zaman eşleşmediği
Policies, önceden eğitilmiş yapılandırmalarına gömülü olan sabit bir girdi özellik adı setine sahiptir. Örneğin:
- pi0fast-libero,
observation.images.base_0_rgbveobservation.images.left_wrist_0_rgbbekler. - xvla-base,
observation.images.image,observation.images.image2veobservation.images.image3bekler.
Veri setiniz tamamen farklı adlar kullanıyor olabilir (ör. observation.images.front, observation.images.eagle, observation.images.glove) ve değerlendirme ortamınız da başka bir set kullanıyor olabilir. Politika yapılandırmasını düzenlemek veya veri setindeki sütunları yeniden adlandırmak yerine, bir yeniden adlandırma haritası geçirirsiniz: kaynak anahtarları, politikanın beklediği anahtarlara eşleyen bir JSON sözlüğü. Yeniden adlandırma, ön işleyici hattının içinde gerçekleştiği için politika her zaman beklediği anahtarları görür.
Yeniden adlandırma haritasını kullanma
Haritalamayı komut satırında bir JSON dizgesi olarak iletin. Sözleşme her zaman şudur:
--rename_map='{"source_key": "policy_key", ...}'burada source_key, veri setinin veya ortamın sağladığı anahtarı, policy_key ise politikanın beklediği anahtarı ifade eder.
Yalnızca listelenen anahtarlar yeniden adlandırılır; diğer her şey değiştirilmeden geçer. Girdilerin sırası önemli değildir.
Desteklenen politikalar: PI0, PI05, PI0Fast, SmolVLA ve XVLA.
Eğitim
lerobot/xvla-base modelini observation.images.front, observation.images.eagle ve observation.images.glove altında görüntüler içeren bir veri setinde ince ayar yaptığınızı varsayalım. XVLA, observation.images.image, observation.images.image2 ve observation.images.image3 bekler:
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"}'Değerlendirme
observation.images.base_0_rgb ve observation.images.left_wrist_0_rgb bekleyen bir politika (ör. pi0fast-libero), ancak LIBERO ortamı observation.images.image ve observation.images.image2 döndürüyor:
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: politika yapılandırmasını doğrudan düzenleyin
Her zaman aynı veri setini veya ortamı kullanıyorsanız, gözlem anahtarlarının veri kaynağınızla eşleşmesi için politikanın config.json dosyasını düzenleyebilirsiniz. Bu durumda yeniden adlandırma haritasına gerek kalmaz.
Taviz: politika yapılandırmasını değiştirmek, onu tek bir veri kaynağına bağlar. Yeniden adlandırma haritası, tek bir politikanın birçok veri seti ve ortamda kullanılabilir kalmasını sağlar.
Boş kameralar: politikanın beklediğinden daha az görüntü
Bazı politikalar, sabit sayıda görüntü girdisi için oluşturulmuştur. Veri setiniz daha az kameraya sahipse, model mimarisini değiştirmek yerine politika yapılandırmasında empty_cameras değerini ayarlayabilirsiniz.
Nasıl çalışır
empty_cameras=N ayarlandığında, politika yapılandırmasına N yer tutucu görüntü özelliği eklenir; bunların adları:
observation.images.empty_camera_0
observation.images.empty_camera_1
...Çalışma zamanında, bu anahtarların batch içinde karşılık gelen verisi yoktur. Politika, bunları maskelenmiş sahte tensörlerle doldurur (SigLIP tabanlı görme kodlayıcıları için -1 ile dolgu yapılmış, sıfır dikkat maskesine sahip), böylece ek görüntü yuvaları eğitim ve çıkarım sırasında fiilen yok sayılır.
Örnek
XVLA-base üç görsel girişe sahiptir ve varsayılan olarak empty_cameras=0 değerine ayarlıdır. Veri setinizde yalnızca iki kamera var:
--policy.empty_cameras=1ayarlayın.- Yapılandırma üçüncü bir anahtar ekler:
observation.images.empty_camera_0. - İki gerçek kameranız için yeniden adlandırma haritasını olduğu gibi kullanın.
- Üçüncü slot maskelenmiştir — veri setinizde sahte görsellere gerek yoktur.
Hızlı başvuru
| Hedef | Ne yapılmalı |
|---|---|
| Veri seti anahtarları ≠ politika anahtarları | --rename_map='{"dataset_key": "policy_key", ...}' |
| Env anahtarları ≠ politika anahtarları (değerlendirme) | --rename_map='{"env_key": "policy_key", ...}' |
| Farklı anahtarlarla rollout (çıkarsama) | --rename_map='{"source_key": "policy_key", ...}'. |
| Politika tarafından beklenenden daha az kamera | --policy.empty_cameras=N (PI0, PI05, PI0Fast, SmolVLA, XVLA tarafından desteklenir) |
| Yeniden adlandırma haritası geçmekten kaçının | Politikanın config.json dosyasını düzenleyerek anahtarlarının veri kaynağınızla eşleşmesini sağlayın |