LeRobot documentation

Veri Seti Araçlarını Kullanma

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

Veri Seti Araçlarını Kullanma

Bu kılavuz, bir LeRobot veri setinin çevrimiçi veya yerel olarak nasıl keşfedileceğini gösterir ve ardından LeRobot'un mevcut veri setlerini değiştirmek ve düzenlemek için sağladığı yardımcı araçları ele alır.

Tarayıcıda Bir Veri Setini Keşfedin

LeRobot veri setinin içeriğini görmek için en hızlı yol, Hub'daki herhangi bir LeRobot veri setini hiçbir şey kurmadan oynatabilen Hugging Face Space'i olan LeRobot Dataset Visualizer'dır. lerobot ile kaydettiğiniz veri setleri, bu davranışı devre dışı bırakmadığınız sürece Hub'a gönderilir; bu nedenle kendi kayıtlarınız da orada açılır.

The LeRobot Dataset Visualizer showing episode 0 of lerobot/svla_so101_pickplace: the episode list, two synchronized camera recordings, the task, and joint charts

Gerçek bir veri setinde denemek için, bir SO-101 kolunun bir lego parçasını kutuya yerleştirdiği lerobot/svla_so101_pickplace veri setinin 0. bölümünü açın ve aşağıdaki adımları izleyin:

  1. Bir veri seti seçin. Görselleştiricinin ana sayfasında, lerobot/svla_so101_pickplace gibi bir depo kimliği girin veya örneklerden birini seçin. Özel veri setlerinizi açmak için oturum açın.

    The visualizer's home page, with a search box for a dataset repo id and example datasets
  2. Bir bölüm seçin. Kenar çubuğu, veri setinin toplam kare sayısını, bölüm sayısını ve FPS değerini listeler. Açmak için birine tıklayın veya ↑ / ↓ tuşlarıyla aralarında gezinin.

  3. Kayıtları izleyin. Veri setindeki her kamera senkronize olarak oynatılır. Birini büyütün veya ihtiyaç duymadıklarınızı gizleyin. Bölümün görevi, yani dil talimatı, videoların altında gösterilir.

  4. Verileri yan yana okuyun. Videoların altında, robotun durumu ve eylemleri tüm bölüm boyunca, eklem başına bir çizgi olarak grafiklendirilmiştir. Bir imleç oynatmayı takip eder ve efsane, her değeri geçerli karede (veya üzerine gelirken imlecin altında) gösterir. Oynatmak veya duraklatmak için Space tuşuna basın, arama çubuğunu sürükleyin veya o ana atlamak için bir grafiğe tıklayın.

    Synchronized charts of observation.state and action for each joint, with the playback cursor and current values
  5. Daha ileri gidin. 3D Replay, kaydedilen eklem konumlarından (v3.0 veri setlerinde SO-100/SO-101, OpenArm ve Unitree G1) robotu canlandırır. Gelişmiş bölümünde veri seti istatistikleri, sorunlu bölümleri işaretlemek için filtreleme, ilk/son kare özetleri ve eylem içgörüleri bulunur.

Bir bölümün doğrudan bağlantısını https://huggingface.co/spaces/lerobot/visualize_dataset?path=/<repo_id>/episode_<index> ile paylaşabilirsiniz, örneğin bir hata durumunu ekibinizle paylaşmak için.

Bir Veri Setini Yerel Olarak Görselleştirme

Ayrıca, komut satırı aracımızı kullanarak bir veri setindeki bölümleri yerel olarak görselleştirebilirsiniz.

Hugging Face Hub'dan:

lerobot-dataset-viz \
    --repo-id lerobot/pusht \
    --episode-index 0

Özel veya gated bir veri seti için önce hf auth login ile kimlik doğrulaması yapın veya HF_TOKEN ortam değişkenini ayarlayın. Hub istemcisi kimlik bilgilerini otomatik olarak algılar; token argümanı gerekmez.

Yerel bir klasörden: --root seçeneğini ekleyin ve --mode local olarak ayarlayın. --root, veri seti klasörünün kendisidir. Örneğin, ./my_local_data_dir/lerobot/pusht içinde saklanan bir veri seti için:

lerobot-dataset-viz \
    --repo-id lerobot/pusht \
    --root ./my_local_data_dir/lerobot/pusht \
    --mode local \
    --episode-index 0

Araç çalıştırıldığında rerun.io açılır ve seçilen bölüm için kamera akışlarını, robot durumlarını ve eylemleri görüntüler.

Rerun yerine Foxglove kullanmak için viz ekini (içinde foxglove-sdk bulunur) yükleyin ve --display-mode foxglove ekleyin. Bu, bir WebSocket sunucusu başlatır (Foxglove uygulamasını ws://127.0.0.1:8765 adresine bağlayın); bu sunucu, oynat/duraklat ve kaydırma işlemleri yapabileceğiniz, aramaya uygun bir zaman çizelgesi olarak bölümü sunar.

Gelişmiş kullanım için—uzak bir sunucuda depolanan veri setlerini görselleştirme dahil—şunu çalıştırın:

lerobot-dataset-viz --help

Veri Setlerini Düzenleme

LeRobot, veri setlerini manipüle etmek için çeşitli yardımcılar sağlar:

  1. Bölümleri Sil - Bir veri setinden belirli bölümleri kaldırın
  2. Veri Setini Bölme - Bir veri setini birden fazla küçük veri setine ayırma
  3. Veri Setlerini Birleştir - Birden fazla veri setini tek bir veri setinde birleştirir. Veri setlerinin özdeş özelliklere sahip olması gerekir ve epizotlar, repo_ids içinde belirtilen sırada birleştirilir.
  4. Özellik Ekle - Bir veri setine yeni özellikler ekleyin
  5. Özellikleri Kaldır - Bir veri setinden özellikleri kaldırır
  6. Görevleri Değiştir - Bölümlerle ilişkili doğal dil görev açıklamalarını değiştirin
  7. Videoya Dönüştür - Görüntü tabanlı veri kümelerini verimli depolama için video formatına dönüştürür (RGB ve derinlik kameraları ayrı kodlayıcılarla kodlanır)
  8. Videoları Yeniden Kodla - Mevcut bir video veri setinin RGB ve/veya derinlik akışlarını yeni kodlayıcı ayarlarıyla yeniden kodla
  9. Veri Setlerinin Bilgilerini Göster - Bölüm sayısı gibi veri seti bilgileri özetini gösterir.

Çekirdek uygulama lerobot.datasets.dataset_tools içindedir. Araçlar API'sinin nasıl kullanılacağını ayrıntılandıran örnek bir betik examples/dataset/use_dataset_tools.py adresinde mevcuttur.

Komut Satırı Aracı: lerobot-edit-dataset

lerobot-edit-dataset, veri setlerini düzenlemek için kullanılan bir komut satırı betiğidir. Bölümleri silmek, veri setlerini bölmek, veri setlerini birleştirmek, özellikleri kaldırmak, görevleri değiştirmek, görüntü veri setlerini video biçimine dönüştürmek, videoları yeniden kodlamak, istatistikleri yeniden hesaplamak ve veri seti bilgilerini görüntülemek için kullanılabilir. Özellik ekleme yalnızca Python API'si (lerobot.datasets.dataset_tools) üzerinden kullanılabilir.

Her bir işlemin yapılandırması hakkında daha fazla bilgi için lerobot-edit-dataset --help komutunu çalıştırın.

Kullanım Örnekleri

Bölümleri Sil

Bir veri setinden belirli bölümleri kaldırın. Bu, istenmeyen verileri elemek için kullanışlıdır.

# Delete episodes 0, 2, and 5 (modifies original dataset)
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type delete_episodes \
    --operation.episode_indices "[0, 2, 5]"

# Delete episodes and save to a new dataset (preserves original dataset)
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --new_repo_id lerobot/pusht_after_deletion \
    --operation.type delete_episodes \
    --operation.episode_indices "[0, 2, 5]"

Veri Setini Böl

Bir veri setini birden çok alt küme olarak bölün.

# Split by fractions (e.g. 60% train, 20% val, 20% test)
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type split \
    --operation.splits '{"train": 0.6, "val": 0.2, "test": 0.2}'

# Split by specific episode indices
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type split \
    --operation.splits '{"task1": [0, 1, 2, 3], "task2": [4, 5]}'

Bölüm adları üzerinde herhangi bir kısıtlama yoktur; bunlar kullanıcı tarafından belirlenebilir. Oluşturulan veri kümeleri, bölüm adı eklenmiş depo kimliği altında kaydedilir, örneğin lerobot/pusht_train, lerobot/pusht_task1, lerobot/pusht_task2.

Veri Setlerini Birleştir

Birden çok veri setini tek bir veri setinde birleştirin.

# Merge train and validation splits back into one dataset
lerobot-edit-dataset \
    --new_repo_id lerobot/pusht_merged \
    --operation.type merge \
    --operation.repo_ids "['lerobot/pusht_train', 'lerobot/pusht_val']"

Özellikleri Kaldır

Bir veri setinden özellikleri kaldırın.

# Remove a camera feature
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type remove_feature \
    --operation.feature_names "['observation.images.top']"

Görevleri Değiştir

Epizotlara eklenen doğal dil görev açıklamalarını değiştirin. Bu, yazım hatalarını düzeltmek, ifadeyi standartlaştırmak veya epizotları yeniden etiketlemek için kullanışlıdır.

modify_tasks, veri setini yerinde değiştirir (meta/tasks.parquet, veri dosyalarındaki task_index sütunu, bölüm meta verilerindeki tasks sütunu ve meta/info.json içindeki total_tasks güncellenir). Bu işlem için --new_repo_id ve --new_root parametreleri yok sayılır.

# Set a single task for all episodes
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type modify_tasks \
    --operation.new_task "Pick up the cube and place it"

# Set different tasks for specific episodes
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type modify_tasks \
    --operation.episode_tasks '{"0": "Task A", "1": "Task B", "2": "Task A"}'

# Replace existing task strings wherever they appear
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type modify_tasks \
    --operation.task_replacements '{"Pick up the red cube": "Lift the red cube"}'

# Combine modes in a single run
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type modify_tasks \
    --operation.new_task "Default task" \
    --operation.task_replacements '{"Pick up the red cube": "Lift the red cube"}' \
    --operation.episode_tasks '{"5": "Special task for episode 5"}'

Parametreler:

  • new_task: Aksi belirtilmedikçe bölümler için varsayılan olarak kullanılan tek bir görev dizgesi.
  • episode_tasks: Bölüm dizininden görev dizgesine eşleme.
  • task_replacements: Mevcut görev dizgilerinden ikame edilecek görevlere yapılan eşleme, mevcut görevi bir anahtarla eşleşen epizotlara uygulanır. Her anahtar, veri setindeki mevcut bir görev olmalıdır.

Modlar tek bir çalıştırmada birleştirilebilir. Her bölümde, görev aşağıdaki önceliğe göre çözümlenir:

episode_tasks > task_replacements > new_task > orijinal görev

En az bir new_task, episode_tasks veya task_replacements parametresi belirtilmelidir. Görevsiz kalan bir episode hata oluşturur.

Videoya Dönüştür

Görüntü tabanlı bir veri setini video formatına dönüştürür ve görüntülerin videolar olarak saklandığı yeni bir LeRobotDataset oluşturur. Bu, depolama gereksinimlerini azaltmak ve veri yükleme performansını artırmak için faydalıdır. Yeni veri seti, orijinal veri setiyle birebir aynı yapıya sahip olacak, ancak görüntüler uygun LeRobot formatında MP4 videolar olarak kodlanmış olacaktır.

# Local-only: Save to a custom output directory (no hub push)
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type convert_image_to_video \
    --operation.output_dir /path/to/output/pusht_video

# Save with new repo_id (local storage)
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --new_repo_id lerobot/pusht_video \
    --operation.type convert_image_to_video

# Convert and push to Hugging Face Hub
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --new_repo_id lerobot/pusht_video \
    --operation.type convert_image_to_video \
    --push_to_hub true

# Convert with custom video codec and quality settings
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type convert_image_to_video \
    --operation.output_dir outputs/pusht_video \
    --operation.rgb_encoder.vcodec libsvtav1 \
    --operation.rgb_encoder.pix_fmt yuv420p \
    --operation.rgb_encoder.g 2 \
    --operation.rgb_encoder.crf 30

# Convert a dataset that includes depth maps, customizing the depth encoder
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type convert_image_to_video \
    --operation.output_dir outputs/pusht_video \
    --operation.depth_encoder.depth_min 0.01 \
    --operation.depth_encoder.depth_max 10.0 \
    --operation.depth_encoder.use_log true

# Convert only specific episodes
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type convert_image_to_video \
    --operation.output_dir outputs/pusht_video \
    --operation.episode_indices "[0, 1, 2, 5, 10]"

# Convert with multiple workers for parallel processing
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type convert_image_to_video \
    --operation.output_dir outputs/pusht_video \
    --operation.num_workers 8

# For memory-constrained systems, users can now specify limits:
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type convert_image_to_video \
    --operation.max_episodes_per_batch 50 \
    --operation.max_frames_per_batch 10000

Parametreler:

  • output_dir: Özel çıktı dizini (isteğe bağlı - varsayılan olarak new_repo_id veya {repo_id}_video kullanılır)
  • rgb_encoder: RGB kameralara uygulanan video kodlayıcı ayarları — tüm alt alanlara --operation.rgb_encoder.<field> üzerinden erişilebilir. Daha fazla ayrıntı için Video Kodlama Parametreleri bölümüne bakın.
  • depth_encoder: Derinlik haritası kameralarına (ör. Intel RealSense) uygulanan video kodlayıcı ayarları. Standart kodlayıcı alanlarının yanı sıra, --operation.depth_encoder.<field> üzerinden erişilebilen derinlik kuantizasyonu ayarlarını (depth_min, depth_max, shift, use_log) sunar. Bu kuantizasyon ayarları, yükleme sırasında derinliğin fiziksel birimlere geri dönüştürülebilmesi için veri seti meta verilerine kaydedilir. Ayrıntılar için Derinlik akışları bölümüne bakın.
  • episode_indices: Dönüştürülecek belirli bölümlerin listesi (varsayılan: tüm bölümler)
  • num_workers: İşleme için paralel işçi sayısı (varsayılan: 4)

Not: Sonuç olarak elde edilen veri seti, videos/ dizinindeki tüm kameraların video olarak kodlandığı ve yalnızca üst veriyi (ham görüntü verisi içermeyen) içeren parquet dosyalarına sahip uygun bir LeRobotDataset olacaktır. Derinlik haritası kameraları otomatik olarak algılanır ve depth_encoder yönlendirilirken, RGB kameralar rgb_encoder kullanır. Tüm bölümler, istatistikler ve görevler korunur.

Videoları Yeniden Kodla

Mevcut bir video veri setindeki videoları, ham karelere geri dönmeden farklı kodlayıcı ayarlarıyla yeniden kodlayın. RGB videolar rgb_encoder kullanırken derinlik videoları depth_encoder kullanır. Komut satırında her iki kodlayıcının da her zaman ayarları vardır (değiştirmedikçe varsayılanlar), bu nedenle yapılandırmadığınız bir akış türü, zaten varsayılan ayarları kullanmıyorsa varsayılan ayarlarla yeniden kodlanır.

# Re-encode all RGB videos with new settings (saves to lerobot/pusht_reencoded by default)
lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --operation.type reencode_videos \
    --operation.rgb_encoder.vcodec h264 \
    --operation.rgb_encoder.pix_fmt yuv420p \
    --operation.rgb_encoder.crf 23

# Re-encode both RGB and depth videos in a dataset with depth maps
lerobot-edit-dataset \
    --repo_id lerobot/pusht_depth \
    --operation.type reencode_videos \
    --operation.rgb_encoder.vcodec h264 \
    --operation.depth_encoder.crf 50

Parametreler:

  • rgb_encoder: Her RGB videosuna uygulanan kodlayıcı ayarları.
  • depth_encoder: Her derinlik videosuna uygulanan kodlayıcı ayarları.

Sadece bir akış türünü yeniden kodlamak ve diğerine dokunmamak için Python API'sini kullanın ve diğer kodlayıcı için None geçirin, örneğin reencode_dataset(dataset, rgb_encoder=..., depth_encoder=None).

  • num_workers: İşlem için paralel çalışan işçi sayısı.

Derinlik videoları yeniden kodlanırken, mevcut derinlik kuantizasyon parametreleri (depth_min, depth_max, shift, use_log) ve is_depth_map bayrağı korunur — yeniden kodlama, yalnızca depolanan akışın codec/kalitesini değiştirir, derinliğin yükleme sırasında nasıl dekuantize edildiğini değil.

Veri kümelerinin bilgilerini göster

Bölüm sayısı, kare sayısı, dosya boyutu gibi veri setlerinin bilgilerini gösterir. Veri setinde herhangi bir değişiklik yapılmaz


# Show dataset information without feature details
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type info

# Show dataset information with feature details
lerobot-edit-dataset \
    --repo_id lerobot/pusht_image \
    --operation.type info \
    --operation.show_features true

Parametreler:

  • show_features: Özellik ayrıntılarının da gösterilip gösterilmeyeceği (varsayılan: false).

Hub'a Yükle

Herhangi bir komuta --push_to_hub true bayrağını ekleyerek sonuçlanan veri setini Hugging Face Hub'a otomatik olarak yükleyin:

lerobot-edit-dataset \
    --repo_id lerobot/pusht \
    --new_repo_id lerobot/pusht_after_deletion \
    --operation.type delete_episodes \
    --operation.episode_indices "[0, 2, 5]" \
    --push_to_hub true

lerobot-edit-dataset aracında henüz ele alınmamış bir veri setine özellik ekleme aracı da mevcuttur.

Update on GitHub