LeRobot documentation

LIBERO-plus

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

and get access to the augmented documentation experience

to get started

LIBERO-plus

LIBERO-plus là một benchmark đánh giá độ bền vững cho các mô hình Vision-Language-Action (VLA) được xây dựng dựa trên LIBERO. Nó kiểm tra áp lực có hệ thống các chính sách bằng cách áp dụng bảy chiều nhiễu độc lập lên bộ tác vụ LIBERO gốc, phơi bày các chế độ thất bại mà các benchmark tiêu chuẩn bỏ sót.

An overview of the LIBERO-plus benchmark perturbation dimensions

Các chiều nhiễu

LIBERO-plus tạo ra ~10 000 biến thể tác vụ bằng cách nhiễu loạn mỗi tác vụ LIBERO gốc dọc theo các trục sau:

Kích thướcNhững thay đổi
Bố cục các đối tượngVị trí mục tiêu, sự hiện diện của các vật thể gây nhiễu
Góc nhìn của cameraVị trí, hướng, trường nhìn của camera
Trạng thái ban đầu của robotTư thế bắt đầu của cơ cấu chấp hành
Hướng dẫn ngôn ngữMô tả nhiệm vụ được viết lại bởi LLM (diễn đạt lại / từ đồng nghĩa)
Điều kiện ánh sángCường độ, hướng, màu sắc, bóng đổ
Kết cấu nềnBề mặt cảnh và ngoại quan của đối tượng
Nhiễu cảm biếnBiến dạng quang trắc và suy giảm hình ảnh

Các bộ nhiệm vụ có sẵn

LIBERO-plus gây nhiễu cho 40 tác vụ gốc trong các bộ Spatial, Object, Goal và Long. Mỗi tác vụ được đăng ký trong bốn bộ này là một biến thể gây nhiễu, thay vì một trong các tác vụ gốc. Bản fork cũng giữ lại 90 tác vụ không gây nhiễu trong LIBERO-90.

BộTên CLICác tác vụ ban đầuCác tác vụ đã đăng kýSố bước tối đaMô tả
LIBERO-Spatiallibero_spatial102,402280Các tác vụ đòi hỏi suy luận về các quan hệ không gian
LIBERO-Objectlibero_object102,518280Các tác vụ tập trung vào việc thao tác với các đối tượng khác nhau
LIBERO-Goallibero_goal102,591300Các tác vụ có điều kiện theo mục tiêu với các mục tiêu thay đổi
LIBERO-90libero_909090400Các tác vụ LIBERO tầm ngắn không bị nhiễu
LIBERO-Longlibero_10102,519520Các tác vụ dài hạn từ bộ sưu tập LIBERO-100

Các số lượng này đến từ đăng ký tác vụ nguồn gốc. Bốn bộ bài toán bị nhiễu chứa tổng cộng 10.030 biến thể tác vụ; LIBERO-90 không được tính vào tổng số đó. Số lượng và chỉ số tác vụ phụ thuộc vào phiên bản fork đã cài đặt.

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]"`.

Cài đặt

Phụ thuộc hệ thống (chỉ dành cho Linux)

sudo apt install libexpat1 libfontconfig1-dev libmagickwand-dev

Gói Python

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 fork

LIBERO-plus được cài đặt từ bản fork trên GitHub thay vì từ một extra của pyproject — bản fork được phát hành dưới dạng namespace package mà pip không thể xử lý, do đó phải clone và thêm vào PYTHONPATH. Xem docker/Dockerfile.benchmark.libero_plus để biết cách cài đặt chuẩn. MuJoCo là bắt buộc, vì vậy chỉ hỗ trợ Linux.

Set the MuJoCo rendering backend before running evaluation:
export MUJOCO_GL=egl   # headless / HPC / cloud

Tải tài sản LIBERO-plus

LIBERO-plus phát hành gói tài nguyên mở rộng riêng biệt. Tải xuống assets.zip từ dataset Hugging Face và giải nén vào thư mục gói LIBERO-plus:

# 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/

Đánh giá

Đánh giá mặc định (khuyến nghị)

Đánh giá mọi biến thể đã đăng ký trên bốn bộ dữ liệu nhiễu, sử dụng một tập (episode) cho mỗi biến thể như được khuyến nghị trong hướng dẫn đánh giá upstream:

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=1

Điều này chạy 10.030 episode cho registry ở trên. Với --eval.n_episodes=10, cùng lệnh đó chạy 100.300 episode, không phải 400.

Kiểm thử nhanh

Trước khi chạy đánh giá đầy đủ, hãy kiểm tra cấu hình của bạn với một biến thể đã đăng ký và một tập:

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=1

Đây là kiểm tra cài đặt, không phải đánh giá độ bền đại diện.

Đánh giá bộ duy nhất

Đánh giá trên một bộ LIBERO-plus:

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 chọn bộ bài tập (libero_spatial, libero_object, v.v.).
  • --env.task_ids giới hạn theo các chỉ số tác vụ đã đăng ký ([0], [1,2,3], v.v.), dùng để xác định các biến thể trong bốn bộ bài kiểm tra đã nhiễu. Bỏ qua tham số này để chạy tất cả các tác vụ đã đăng ký. Khi đánh giá nhiều bộ bài kiểm tra, cùng một danh sách chỉ số sẽ được áp dụng độc lập cho từng bộ.
  • --eval.batch_size kiểm soát số lượng môi trường chạy song song.
  • --eval.n_episodes xác định số lượng episode cần chạy cho mỗi task đã đăng ký. Việc tăng giá trị này sẽ lặp lại quá trình đánh giá các biến thể đã chọn; nó không chọn thêm các biến thể khác biệt.

Đánh giá đa bộ

Đánh giá hiệu năng của một chính sách trên nhiều bộ bài kiểm tra cùng lúc bằng cách truyền vào một danh sách phân tách bằng dấu phẩy:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero_plus \
  --env.task=libero_spatial,libero_object \
  --eval.batch_size=1 \
  --eval.n_episodes=1

Chế độ điều khiển

LIBERO-plus hỗ trợ hai chế độ điều khiển — relative (mặc định) và absolute. Các checkpoint VLA khác nhau được huấn luyện với các tham số hóa hành động khác nhau, vì vậy hãy đảm bảo chế độ khớp với chính sách của bạn:

--env.control_mode=relative   # or "absolute"

Đặt lại hiệu suất

Mặc định, LeRobot giữ nguyên hành vi hard-reset của LIBERO. Khi đã bật các trạng thái ban đầu cố định, bạn có thể chọn dùng soft reset để bỏ qua việc xây dựng lại mô hình mô phỏng và trình render ở mỗi episode:

--env.init_states=true --env.hard_reset=false

Soft resets nhanh hơn nhưng không giống hệt bit với hard resets sau các bước ổn định của môi trường, do đó quan sát từ camera và kết quả chính sách có thể khác nhau đôi chút. Hãy dùng hard resets khi tái tạo kết quả benchmark.

Đầu vào và đầu ra của Policy

Quan sát:

  • observation.state — 8 chiều đặc trưng cảm nhận bản thân (vị trí eef, hướng axis-angle, qpos của kẹp)
  • observation.images.image — góc nhìn từ camera chính (agentview_image), HWC uint8
  • observation.images.image2 — góc nhìn camera cổ tay (robot0_eye_in_hand_image), HWC uint8

Thao tác:

  • Điều khiển liên tục trong Box(-1, 1, shape=(7,)) — delta của đầu cuối 6D + kẹp 1D

Tải công việc đánh giá và khả năng tái lập

Tổng số tập đánh giá là số lượng tác vụ đã đăng ký được chọn trên tất cả các bộ bài × --eval.n_episodes. Ví dụ, tất cả các biến thể Spatial với mỗi tập một episode cho ra 2.402 tập; việc chọn --env.task_ids='[0,1,2]' trong Spatial và Object với mỗi tập một episode cho ra sáu tập.

Việc tính toán 400 tập (40 tác vụ gốc × 10 tập) áp dụng cho LIBERO thông thường, không phải cho một đánh giá LIBERO-plus đầy đủ. Đối với LIBERO-plus, hãy bắt đầu với một tập cho mỗi biến thể đã đăng ký. Các tập lặp lại của một biến thể không tương đương với việc lấy mẫu các biến thể khác nhau của một tác vụ gốc.

Đối với một tập con tùy chỉnh, hãy sử dụng phân loại tác vụ của bản fork để xác định các danh mục nhiễu và mức độ khó. Không nên giả định rằng mọi tác vụ gốc đều có mười biến thể riêng biệt trong mọi danh mục nhiễu. Khi báo cáo kết quả, hãy ghi lại phiên bản fork, tên các bộ bài kiểm tra đã chọn và chỉ số tác vụ, số tập (episodes) cho mỗi biến thể, hạt ngẫu nhiên (seed) và các cài đặt đặt lại (reset). Để so sánh với các kết quả đã công bố, hãy tuân theo giao thức lấy mẫu và tổng hợp của bộ chuẩn (benchmark) thay vì coi một tập con tùy ý là tương đương.

Huấn luyện

Bộ dữ liệu

Bộ dữ liệu huấn luyện định dạng LeRobot cho LIBERO-plus có sẵn tại:

Lệnh huấn luyện mẫu

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=1000

Mối quan hệ với LIBERO

LIBERO-plus là một phần mở rộng thay thế trực tiếp của LIBERO:

  • Giao diện Python gym tương tự (LiberoEnv, LiberoProcessorStep)
  • Cùng tên camera và định dạng quan sát/hành động
  • Cùng tên bộ nhiệm vụ
  • Được cài đặt dưới cùng tên gói Python libero (kho GitHub khác)

Để sử dụng bộ chuẩn LIBERO gốc, hãy xem LIBERO và sử dụng --env.type=libero.

Update on GitHub