LeRobot documentation

Đổi tên Bản đồ và Máy ảnh Rỗng

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

Đổi tên Bản đồ và Máy ảnh Rỗng

Khi bạn huấn luyện, đánh giá hoặc ghi lại với một chính sách robot, dataset hoặc môi trường của bạn cung cấp các quan sát dưới một bộ khóa (ví dụ: observation.images.front, observation.images.eagle), trong khi chính sách của bạn kỳ vọng một bộ khác (ví dụ: observation.images.image, observation.images.image2). Bản đồ đổi tên lấp đầy khoảng cách đó mà không cần thay đổi chính sách hay nguồn dữ liệu.

Phạm vi: Bản đồ đổi tên chỉ đổi tên các khóa observation (ảnh và trạng thái). Các khóa hành động không bị ảnh hưởng.

Tại sao các khóa quan sát không phải lúc nào cũng khớp

Các Policy có một tập hợp cố định các tên đặc trưng đầu vào được tích hợp sẵn trong cấu hình tiền huấn luyện của chúng. Ví dụ:

  • pi0fast-libero yêu cầu observation.images.base_0_rgb và observation.images.left_wrist_0_rgb.
  • xvla-base mong đợi observation.images.image, observation.images.image2 và observation.images.image3.

Bộ dữ liệu của bạn có thể sử dụng các tên hoàn toàn khác (ví dụ: observation.images.front, observation.images.eagle, observation.images.glove), và môi trường đánh giá của bạn có thể lại sử dụng một bộ tên khác. Thay vì chỉnh sửa cấu hình chính sách hoặc đổi tên các cột trong bộ dữ liệu, bạn truyền một bản đồ đổi tên: một từ điển JSON ánh xạ các khóa nguồn sang các khóa mà chính sách mong đợi. Việc đổi tên diễn ra bên trong pipeline tiền xử lý, do đó chính sách luôn nhìn thấy các khóa mong đợi của nó.

Sử dụng bản đồ đổi tên

Truyền ánh xạ dưới dạng chuỗi JSON trên dòng lệnh. Quy ước luôn là:

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

trong đó source_key là giá trị do bộ dữ liệu hoặc môi trường cung cấp, và policy_key là giá trị mà chính sách mong đợi.

Chỉ các khóa được liệt kê mới được đổi tên; mọi thứ khác được giữ nguyên không thay đổi. Thứ tự của các mục không quan trọng.

Các chính sách được hỗ trợ: PI0, PI05, PI0Fast, SmolVLA và XVLA.

Huấn luyện

Giả sử bạn tinh chỉnh lerobot/xvla-base trên một tập dữ liệu có các hình ảnh nằm dưới observation.images.front, observation.images.eagle và observation.images.glove. XVLA kỳ vọng observation.images.image, observation.images.image2 và 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"}'

Đánh giá

Một chính sách kỳ vọng observation.images.base_0_rgb và observation.images.left_wrist_0_rgb (ví dụ pi0fast-libero), nhưng môi trường LIBERO trả về observation.images.image và 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"}'

Cách khác: chỉnh sửa trực tiếp cấu hình chính sách

Nếu bạn luôn sử dụng cùng một bộ dữ liệu hoặc môi trường, bạn có thể chỉnh sửa config.json của chính sách để các khóa quan sát của nó khớp với nguồn dữ liệu của bạn. Khi đó, không cần đến bản đồ đổi tên.

Sự đánh đổi: việc sửa đổi cấu hình chính sách sẽ gắn chặt nó với một nguồn dữ liệu duy nhất. Một bản đồ đổi tên giúp duy trì một chính sách có thể sử dụng xuyên suốt nhiều bộ dữ liệu và môi trường khác nhau.

Camera trống: ít góc nhìn hơn so với kỳ vọng của chính sách

Một số policy được xây dựng cho một số lượng đầu vào ảnh cố định. Nếu tập dữ liệu của bạn có ít camera hơn, bạn có thể đặt empty_cameras trong cấu hình policy thay vì sửa đổi kiến trúc mô hình.

Cách hoạt động

Đặt empty_cameras=N sẽ thêm N tính năng ảnh giả vào cấu hình chính sách, được đặt tên là:

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

Vào thời điểm thực thi, các khóa này không có dữ liệu tương ứng trong batch. Chính sách sẽ lấp đầy chúng bằng các tensor giả bị che (được đệm bằng -1 cho các bộ mã hóa thị giác dựa trên SigLIP, kèm theo attention mask bằng zero), do đó các slot hình ảnh bổ sung sẽ bị bỏ qua một cách hiệu quả trong quá trình huấn luyện và suy luận.

Ví dụ

XVLA-base có ba đầu vào hình ảnh và mặc định là empty_cameras=0. Bộ dữ liệu của bạn chỉ có hai camera:

  1. Đặt --policy.empty_cameras=1.
  2. Cấu hình thêm một khóa thứ ba: observation.images.empty_camera_0.
  3. Sử dụng bản đồ đổi tên cho hai camera thực của bạn như bình thường.
  4. Slot thứ ba bị che đi — không cần hình ảnh giả trong bộ dữ liệu của bạn.

Tham khảo nhanh

Mục tiêuCần làm gì
Các khóa của Dataset ≠ các khóa của policy--rename_map='{"dataset_key": "policy_key", ...}'
Khóa môi trường ≠ khóa chính sách (đánh giá)--rename_map='{"env_key": "policy_key", ...}'
Rollout với các khóa khác nhau (suy luận)--rename_map='{"source_key": "policy_key", ...}'.
Ít camera hơn so với kỳ vọng của chính sách--policy.empty_cameras=N (được hỗ trợ bởi PI0, PI05, PI0Fast, SmolVLA, XVLA)
Tránh truyền vào một bản đồ đổi tênSửa config.json của policy để các khóa của nó khớp với nguồn dữ liệu của bạn
Update on GitHub