Руководство по программированию для сквозного обучения робототехнике с помощью LeRobot: обучение, оценка и визуализация политик клонирования поведения на PushT

В этом руководстве мы шаг за шагом рассмотрим использование библиотеки LeRobot от Hugging Face для обучения и оценки политики клонирования поведения на наборе данных PushT.

Настройка среды

1. Установка необходимых зависимостей:
“`
!pip -q install –upgrade lerobot torch torchvision timm imageio[ffmpeg]
“`

2. Импорт модулей:
“`
import os, math, random, io, sys, json, pathlib, time
import torch, torch.nn as nn, torch.nn.functional as F
from torch.utils.data import DataLoader, Subset
from torchvision.utils import makegrid, saveimage
import numpy as np
import imageio.v2 as imageio
“`

3. Настройка среды:
“`
DEVICE = “cuda” if torch.cuda.is_available() else “cpu”
SEED = 42
random.seed(SEED); np.random.seed(SEED); torch.manual_seed(SEED)
“`

Загрузка набора данных

1. Загрузка набора данных PushT:
“`
REPO_ID = “lerobot/pusht”
ds = LeRobotDataset(REPO_ID)
print(“Dataset length:”, len(ds))
“`

2. Проверка ключей:
“`
s0 = ds[0]
keys = list(s0.keys())
print(“Sample keys:”, keys)
“`

Определение политики

1. Определение политики:
“`
class PushTWrapper(torch.utils.data.Dataset):
# …
“`

2. Создание экземпляра:
“`
wrapped = PushTWrapper(ds)
N = len(wrapped)
idx = list(range(N))
random.shuffle(idx)
n_train = int(0.9*N)
trainidx, validx = idx[:ntrain], idx[ntrain:]
“`

Обучение и оценка

1. Создание загрузчиков данных:
“`
trainloader = DataLoader(trainds, batchsize=BATCH, shuffle=True, numworkers=2, pin_memory=True)
valloader = DataLoader(valds, batchsize=BATCH, shuffle=False, numworkers=2, pin_memory=True)
“`

2. Определение политики:
“`
class SmallBackbone(nn.Module):
# …
“`

3. Обучение:
“`
policy = BCPolicy().to(DEVICE)
opt = torch.optim.AdamW(policy.parameters(), lr=3e-4, weight_decay=1e-4)
# …
for epoch in range(EPOCHS):
# …
“`

Визуализация

1. Визуализация поведения:
“`
policy.loadstatedict(torch.load(ckpt)[“state_dict”]); policy.eval()
# …
frames = []
with torch.no_grad():
for i in range(60):
# …
frames.append(draw_arrow(b[“image”], pred))
“`

В этом руководстве мы рассмотрели, как использовать библиотеку LeRobot для обучения и оценки политики клонирования поведения на наборе данных PushT. Мы определили компактную висомоторную политику, обучили её с помощью AdamW и визуализировали её поведение на кадрах PushT.

Это позволяет нам легко интегрировать обработку данных, определение политики и оценку в единую структуру. Библиотека LeRobot предоставляет практическую отправную точку для изучения робототехники без необходимости использования реального оборудования.

1. Какие основные шаги включает в себя настройка среды для работы с библиотекой LeRobot?

Ответ: настройка среды включает в себя установку необходимых зависимостей с помощью команды `!pip -q install –upgrade lerobot torch torchvision timm imageio[ffmpeg]`, импорт модулей и настройку среды с помощью определения `DEVICE` и `SEED`.

2. Как происходит загрузка набора данных PushT в рамках данного руководства?

Ответ: загрузка набора данных PushT осуществляется с помощью `LeRobotDataset(REPOID)`, где `REPOID` задаётся как `”lerobot/pusht”`.

3. Какие шаги необходимо выполнить для определения и обучения политики в данном руководстве?

Ответ: для определения политики создаётся класс, например, `PushTWrapper`, который наследуется от `torch.utils.data.Dataset`. Затем создаётся экземпляр этого класса, определяется `BATCH`, `DEVICE` и `SEED`, а также `policy`, `opt` и `EPOCHS`. Обучение происходит в цикле `for epoch in range(EPOCHS):`.

4. Какие методы используются для визуализации поведения политики после обучения?

Ответ: после обучения политика визуализируется с помощью метода `draw_arrow(b[“image”], pred)`, который позволяет отобразить поведение политики на кадрах PushT.

5. Какие преимущества предоставляет библиотека LeRobot для изучения робототехники?

Ответ: библиотека LeRobot предоставляет практическую отправную точку для изучения робототехники без необходимости использования реального оборудования, что упрощает интеграцию обработки данных, определения политики и оценки в единую структуру.

Источник