LeRobot documentation
LIBERO-plus
LIBERO-plus
The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/libero_plus.yaml --sim.task=--docker=true`, where ` ` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).
LIBERO-plus, LIBERO üzerine inşa edilmiş, Vision-Language-Action (VLA) modelleri için bir sağlamlık kriteri (robustness benchmark) olarak tasarlanmıştır. Orijinal LIBERO görev setine yedi bağımsız bozma boyutu uygulayarak politikaları sistematik olarak zorlar ve standart kriterlerin gözden kaçırdığı başarısızlık modlarını ortaya çıkarır.
- Makale: Görüntü-Dil-Eylem Modellerinin Derinlemesine Dayanıklılık Analizi
- GitHub: sylvestf/LIBERO-plus
- Veri seti: lerobot/libero_plus

Pertürbasyon boyutları
LIBERO-plus, her orijinal LIBERO görevini bu eksenler boyunca değiştirerek ~10 000 görev varyantı oluşturur:
| Boyut | Değişiklikler |
|---|---|
| Nesneler düzeni | Hedef konum, karıştırıcı nesnelerin varlığı |
| Kamera bakış açıları | Kamera konumu, yönelimi, görüş alanı |
| Robot başlangıç durumları | Manipülatör başlangıç pozisyonu |
| Dil talimatları | LLM tarafından yeniden yazılmış görev açıklaması (parafraz / eş anlamlı) |
| Işık koşulları | Yoğunluk, yön, renk, gölge |
| Arka plan dokuları | Sahne yüzeyi ve nesne görünümü |
| Sensör gürültüsü | Fotometrik bozulmalar ve görüntü bozulması |
Kullanılabilir görev paketleri
LIBERO-plus, Spatial, Object, Goal ve Long setlerindeki 40 orijinal görevi değiştirir. Bu dört sette kayıtlı her görev, orijinal görevlerden biri yerine değiştirilmiş bir varyanttır. Fork, LIBERO-90'daki 90 değiştirilmemiş görevi de korur.
| Suite | CLI adı | Orijinal görevler | Kayıtlı görevler | Maksimum adım | Açıklama |
|---|---|---|---|---|---|
| LIBERO-Spatial | libero_spatial | 10 | 2,402 | 280 | Uzamsal ilişkiler hakkında akıl yürütme gerektiren görevler |
| LIBERO-Object | libero_object | 10 | 2,518 | 280 | Farklı nesneleri manipüle etmeye odaklanan görevler |
| LIBERO-Goal | libero_goal | 10 | 2,591 | 300 | Hedefleri değişen hedef koşullu görevler |
| LIBERO-90 | libero_90 | 90 | 90 | 400 | Rahatsız edilmemiş kısa ufuklu LIBERO görevleri |
| LIBERO-Long | libero_10 | 10 | 2,519 | 520 | LIBERO-100 koleksiyonundan uzun vadeli görevler |
Bu sayılar, görev kayıt defterinin (upstream) kaynağından gelir. Bozulmuş dört test seti toplamda 10.030 görev varyantı içerir; LIBERO-90 bu toplamda yer almaz. Sayılar ve görev dizinleri, yüklü olan fork revizyonuna bağlıdır.
Installing LIBERO-plus **replaces** vanilla LIBERO — it uninstalls `hf-libero` so that `import libero` resolves to the LIBERO-plus fork. You cannot have both installed at the same time. To switch back to vanilla LIBERO, uninstall the fork and reinstall with `pip install -e ".[libero]"`.
Kurulum
Sistem bağımlılıkları (yalnızca Linux)
sudo apt install libexpat1 libfontconfig1-dev libmagickwand-devPython paketi
pip install -e ".[libero]" "robosuite==1.4.1" bddl easydict mujoco wand scikit-image gym
git clone https://github.com/sylvestf/LIBERO-plus.git
cd LIBERO-plus && pip install --no-deps -e .
pip uninstall -y hf-libero # so `import libero` resolves to the forkLIBERO-plus, pyproject extra olarak değil, GitHub fork'undan kurulur — fork, pip'in işleyemeyeceği bir namespace paketi olarak dağıtıldığından, klonlanıp PYTHONPATH'e eklenmelidir. Kanonik kurulum için docker/Dockerfile.sim'deki libero_plus_native aşamasına bakın. MuJoCo gereklidir, bu nedenle yalnızca Linux desteklenir.
Set the MuJoCo rendering backend before running evaluation:export MUJOCO_GL=egl # headless / HPC / cloud
LIBERO-plus varlıklarını indirin
LIBERO-plus, genişletilmiş varlık paketini ayrı olarak sunar. assets.zip dosyasını Hugging Face veri setinden indirin ve LIBERO-plus paket dizinine çıkarın:
# After installing the package, find where it was installed:
python -c "import libero; print(libero.__file__)"
# Then extract assets.zip into <package_root>/libero/assets/Değerlendirme
Varsayılan yerel değerlendirme
upstream evaluation guide'de önerildiği gibi, her varyant için bir episode kullanarak, dört bozulmuş suite üzerinde kayıtlı her varyantı değerlendirin:
lerobot-eval \
--policy.path="your-policy-id" \
--env.type=libero_plus \
--env.task=libero_spatial,libero_object,libero_goal,libero_10 \
--eval.batch_size=1 \
--eval.n_episodes=1 \
--env.max_parallel_tasks=1Bu, yukarıdaki kayıt defteri için 10.030 bölüm çalıştırır. --eval.n_episodes=10 ile aynı komut, 400 değil, 100.300 bölüm çalıştırır.
Duman testi
Tam bir değerlendirme başlatmadan önce, kurulumunuzu bir kayıtlı varyant ve bir bölümle kontrol edin:
lerobot-eval \
--policy.path="your-policy-id" \
--env.type=libero_plus \
--env.task=libero_spatial \
--env.task_ids='[0]' \
--eval.batch_size=1 \
--eval.n_episodes=1Bu bir kurulum kontrolüdür, temsil edici bir dayanıklılık değerlendirmesi değildir.
Tekli paket değerlendirmesi
Bir LIBERO-plus süitinde değerlendirin:
lerobot-eval \
--policy.path="your-policy-id" \
--env.type=libero_plus \
--env.task=libero_spatial \
--eval.batch_size=1 \
--eval.n_episodes=1--env.task, test setini seçer (libero_spatial,libero_objectvb.).--env.task_ids, dört bozulmuş test setindeki varyantları tanımlayan kayıtlı görev indekslerini ([0],[1,2,3]vb.) kısıtlar. Tüm kayıtlı görevleri çalıştırmak için bu parametreyi atlayın. Birden fazla test seti değerlendirildiğinde, aynı indeks listesi her test setine bağımsız olarak uygulanır.--eval.batch_size, paralel olarak çalışan ortam sayısını kontrol eder.--eval.n_episodes, kayıtlı her görev için kaç bölümün çalıştırılacağını belirler. Bu değeri artırmak, seçilen varyantların değerlendirilmesini tekrarlar; ek, farklı varyantlar seçmez.
Çoklu süit değerlendirmesi
Virgülle ayrılmış bir liste geçirerek bir politikayı birden fazla test setinde aynı anda ölçün:
lerobot-eval \
--policy.path="your-policy-id" \
--env.type=libero_plus \
--env.task=libero_spatial,libero_object \
--eval.batch_size=1 \
--eval.n_episodes=1Kontrol modu
LIBERO-plus iki kontrol modunu destekler: relative (varsayılan) ve absolute. Farklı VLA checkpoint'leri farklı eylem parametrelendirmeleriyle eğitildiğinden, modun politikanızla eşleştiğinden emin olun:
--env.control_mode=relative # or "absolute"Performansı sıfırla
Varsayılan olarak LeRobot, LIBERO’nun sert sıfırlama davranışını korur. Sabit başlangıç durumları etkinleştirildiğinde, her bölümde simülatör modelini ve render’ı yeniden oluşturmayı atlamak için yumuşak sıfırlamaları seçebilirsiniz:
--env.init_states=true --env.hard_reset=falseSoft sıfırlamalar daha hızlıdır ancak ortamın oturma adımlarından sonra hard sıfırlamalarla bit-bite aynı değildir; bu nedenle kamera gözlemleri ve politika sonuçları hafifçe farklılık gösterebilir. Benchmark sonuçlarını yeniden üretirken hard sıfırlamaları kullanın.
Politika girdileri ve çıktıları
Gözlemler:
observation.state— 8 boyutlu proprioseptif özellikler (eef konumu, eksen-açı yönelimi, gripper qpos)observation.images.image— ana kamera görünümü (agentview_image), HWC uint8observation.images.image2— bilek kamera görünümü (robot0_eye_in_hand_image), HWC uint8
Eylemler:
Box(-1, 1, shape=(7,))içinde sürekli kontrol — 6B uç efektor delta + 1B kavrama
Değerlendirme iş yükü ve tekrarlanabilirlik
Değerlendirme bölümlerinin toplam sayısı tüm paketler boyunca seçilen kayıtlı görevlerin sayısı × --eval.n_episodes'dir. Örneğin, her biri birer bölüm olan tüm Spatial varyantları 2.402 bölüm verir; Spatial ve Object'te --env.task_ids='[0,1,2]' seçilip her biri birer bölüm olarak ayarlandığında altı bölüm elde edilir.
400 bölüm hesabı (40 orijinal görev × 10 bölüm), tam bir LIBERO-plus değerlendirmesi için değil, sade LIBERO için geçerlidir. LIBERO-plus için, kayıtlı her varyant için bir bölümle başlayın. Bir varyantın tekrarlanan bölümleri, orijinal bir görevin farklı varyantlarından örneklemeye eşdeğer değildir.
Özel bir alt küme için, bozma kategorilerini ve zorluk seviyelerini belirlemek üzere fork’un task classification görevini kullanın. Her orijinal görevin her bozma kategorisinde on farklı varyanta sahip olduğunu varsaymayın. Sonuçları raporlarken fork revizyonunu, seçilen suite adlarını ve görev indekslerini, varyant başına bölüm sayısını, seed değerini ve sıfırlama ayarlarını kaydedin. Yayınlanmış sonuçlarla karşılaştırma yaparken, keyfi bir alt kümenin eşdeğer olduğunu varsaymak yerine benchmark’un örneklem alma ve birleştirme protokolünü izleyin.
Eğitim
Veri seti
LIBERO-plus için LeRobot formatında bir eğitim veri seti şu adreste mevcuttur:
Örnek eğitim komutu
lerobot-train \
--policy.type=smolvla \
--policy.repo_id=${HF_USER}/smolvla_libero_plus \
--policy.load_vlm_weights=true \
--dataset.repo_id=lerobot/libero_plus \
--env.type=libero_plus \
--env.task=libero_spatial \
--output_dir=./outputs/ \
--steps=100000 \
--batch_size=4 \
--eval.batch_size=1 \
--eval.n_episodes=1 \
--env_eval_freq=1000LIBERO ile İlişki
LIBERO-plus, LIBERO'nun doğrudan kullanılabilir bir uzantısıdır:
- Aynı Python gym arayüzü (
LiberoEnv) ve kanonik gözlemler - Aynı kamera adları ve gözlem/aksiyon biçimi
- Aynı görev paketi adları
- Aynı
liberoPython paketi adı altında kurulur (farklı bir GitHub deposu)
Orijinal LIBERO benchmark'ını kullanmak için LIBERO'ya bakın ve --env.type=libero kullanın.