`LeRobotDataset:v3.0`: Bringing large-scale datasets to `lerobot`

๐Ÿ“ ์š”์•ฝ

Hugging Face๋Š” ๋กœ๋ด‡ ํ•™์Šต์„ ์œ„ํ•œ ํ‘œ์ค€ํ™”๋œ ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์ธ `LeRobotDataset`์˜ v3.0์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์—…๋ฐ์ดํŠธ๋Š” ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ๋ฅผ ๋‹จ์ผ ํŒŒ์ผ์— ๋ฌถ๊ณ  ๊ด€๊ณ„ํ˜• ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ™•์žฅ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์„ ์ฆ‰์„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. `lerobot` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ด ์ƒˆ๋กœ์šด ํ˜•์‹์€ ๋กœ๋ด‡ ๊ณตํ•™ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.


TL;DR ์˜ค๋Š˜ LeRobotDataset:v3๋ฅผ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค! ์ด์ „ LeRobotDataset:v2 ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์—ํ”ผ์†Œ๋“œ๋‹น ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ์ €์žฅํ–ˆ๋Š”๋ฐ, ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์—ํ”ผ์†Œ๋“œ๋กœ ๋ฐ์ดํ„ฐ์…‹์„ ํ™•์žฅํ•  ๋•Œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ œํ•œ์— ๋ถ€๋”ชํ˜”์Šต๋‹ˆ๋‹ค. LeRobotDataset:v3๋Š” ๊ด€๊ณ„ํ˜• ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ ํŒŒ์ผ์—์„œ ๊ฐœ๋ณ„ ์—ํ”ผ์†Œ๋“œ ์ˆ˜์ค€์˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ๋ฅผ ๋‹จ์ผ ํŒŒ์ผ์— ๋ฌถ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ˜•์‹์€ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋“œ์—์„œ ๋ฐ์ดํ„ฐ์…‹์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์„ ์ฆ‰์„์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LeRobotDataset ํ˜•์‹์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์…‹์„ ์ƒˆ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•œ ์ค„ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋‹ค์Œ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค ์ „์— ์ด ์ด์ •ํ‘œ๋ฅผ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค!

LeRobotDataset, v3.0

LeRobotDataset์€ ๋กœ๋ด‡ ํ•™์Šต์˜ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋œ ํ‘œ์ค€ํ™”๋œ ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์ด๋ฉฐ, ์„ผ์„œ ์šด๋™ ํŒ๋…, ์—ฌ๋Ÿฌ ์นด๋ฉ”๋ผ ํ”ผ๋“œ ๋ฐ ์›๊ฒฉ ์กฐ์ž‘ ์ƒํƒœ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋กœ๋ด‡ ๊ณตํ•™ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ†ตํ•ฉ๋˜๊ณ  ํŽธ๋ฆฌํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹น์‚ฌ์˜ ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์€ ์ˆ˜์ง‘๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ์ •๋ณด(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ํ…์ŠคํŠธ ์„ค๋ช…, ์‚ฌ์šฉ๋œ ๋กœ๋ด‡ ์ข…๋ฅ˜ ๋ฐ ์ด๋ฏธ์ง€์™€ ๋กœ๋ด‡ ์ƒํƒœ ์ŠคํŠธ๋ฆผ์ด ์ƒ˜ํ”Œ๋ง๋˜๋Š” ์ดˆ๋‹น ํ”„๋ ˆ์ž„๊ณผ ๊ฐ™์€ ์ธก์ • ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” Hugging Face Hub์—์„œ ๋กœ๋ด‡ ๊ณตํ•™ ๋ฐ์ดํ„ฐ์…‹์„ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!

Hugging Face์—์„œ ๊ฐœ๋ฐœ ์ค‘์ธ ๋กœ๋ด‡ ๊ณตํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ lerobot ๋‚ด์—์„œ LeRobotDataset์€ ๋‹ค์ค‘ ๋ชจ๋‹ฌ, ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, Hugging Face ๋ฐ Pytorch ์ƒํƒœ๊ณ„์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์€ ์‰ฝ๊ฒŒ ํ™•์žฅ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, SO-100 ํŒ” ๋ฐ ALOHA-2 ์„ค์ •๊ณผ ๊ฐ™์€ ์กฐ์ž‘๊ธฐ ํ”Œ๋žซํผ, ์‹ค์ œ ํœด๋จธ๋…ธ์ด๋“œ ๋ฐ์ดํ„ฐ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ์ดํ„ฐ์…‹, ์‹ฌ์ง€์–ด ์ž์œจ ์ฃผํ–‰ ์ž๋™์ฐจ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•œ ์‹ค์ฒด์—์„œ ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ์…‹์„ ์ด๋ฏธ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ์ดํ„ฐ์…‹ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๊ธฐ์—ฌํ•œ ํ˜„์žฌ ๋ฐ์ดํ„ฐ์…‹์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ”—

์ด LeRobotDataset์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋Š” ๊ทœ๋ชจ ์™ธ์—๋„ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ๋””์Šคํฌ์— ์ง€๋‚˜์น˜๊ฒŒ ํฐ ๋ฐ์ดํ„ฐ ๋ชจ์Œ์„ ๋‹ค์šด๋กœ๋“œํ•  ํ•„์š” ์—†์ด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์—์„œ ์ฆ‰์„์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์šฉ StreamingLeRobotDataset ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ v3.0์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์…‹์— ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋“œ๋กœ ์•ก์„ธ์Šคํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์…‹์€ ๋กœ๋ด‡ ํ•™์Šต์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋†’์ด๋Š” ๋ฐ ์ค‘์š”ํ•œ ์ด์ •ํ‘œ์ด๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค ๐Ÿค—

LeRobotDataset v3 diagram
์—ํ”ผ์†Œ๋“œ ๊ธฐ๋ฐ˜์—์„œ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ
StreamingLeRobotDataset
Hugging Face Hub์—์„œ ์ฆ‰์„ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์…‹ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง์ ‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

lerobot ์„ค์น˜ ๋ฐ ๋ฐ์ดํ„ฐ์…‹ ๊ธฐ๋ก

lerobot์€ Hugging Face์—์„œ ๊ฐœ๋ฐœํ•œ ์—”๋“œ ํˆฌ ์—”๋“œ ๋กœ๋ด‡ ๊ณตํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์‹ค์ œ ๋กœ๋ด‡ ๊ณตํ•™ ๋ฐ ์ตœ์ฒจ๋‹จ ๋กœ๋ด‡ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ ๋กœ๋ด‡์—์„œ ๋กœ์ปฌ๋กœ ๋ฐ์ดํ„ฐ์…‹์„ ์ง์ ‘ ๊ธฐ๋กํ•˜๊ณ  Hugging Face Hub์— ๋ฐ์ดํ„ฐ์…‹์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ง€์›ํ•˜๋Š” ๋กœ๋ด‡์— ๋Œ€ํ•ด ์—ฌ๊ธฐ์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

LeRobotDataset:v3์€ lerobot ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋กœ lerobot-v0.4.0๋ถ€ํ„ฐ ์ œ๊ณต๋  ์˜ˆ์ •์ด๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์กฐ๊ธฐ์— ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ PyPI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ƒˆ ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์„ ์ง€์›ํ•˜๋Š” ์ตœ์‹  lerobot-v0.3.x๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

pip install "https://github.com/huggingface/lerobot/archive/33cad37054c2b594ceba57463e8f11ee374fa93c.zip"  # This will affect your local lerobot installation!

์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ํ–ฅํ•œ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์—ฌ๊ธฐ์—์„œ ํŒ”๋กœ์šฐํ•˜์„ธ์š” ๐Ÿค—

์ƒˆ ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์„ ์ง€์›ํ•˜๋Š” lerobot ๋ฒ„์ „์„ ์„ค์น˜ํ•œ ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง€์นจ๊ณผ ํ•จ๊ป˜ ์›๊ฒฉ ์กฐ์ž‘์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋กœ๋ด‡ ํŒ”์ธ SO-101๋กœ ๋ฐ์ดํ„ฐ์…‹์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

lerobot-record \
    --robot.type=so101_follower \
    --robot.port=/dev/tty.usbmodem585A0076841 \
    --robot.id=my_awesome_follower_arm \
    --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1920, height: 1080, fps: 30}}" \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem58760431551 \
    --teleop.id=my_awesome_leader_arm \
    --display_data=true \
    --dataset.repo_id=${HF_USER}/record-test \
    --dataset.num_episodes=5 \
    --dataset.single_task="Grab the black cube"

์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์…‹ ๊ธฐ๋ก ๋ฐฉ๋ฒ•์„ ๋ณด๋ ค๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋กœ ์ด๋™ํ•˜์„ธ์š”.

(์ƒˆ๋กœ์šด) ํ˜•์‹ ๋””์ž์ธ

LeRobotDataset์˜ ํ•ต์‹ฌ ๋””์ž์ธ ์„ ํƒ์€ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ์‚ฌ์šฉ์ž ๋Œ€๋ฉด API๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ์ง๋ ฌํ™” ๋ฐ ์ €์žฅ๊ณผ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง๊ด€์ ์ด๊ณ  ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์…‹์€ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ: ์กฐ์ธํŠธ ์ƒํƒœ ๋ฐ ์•ก์…˜๊ณผ ๊ฐ™์€ ์ €์ฐจ์›, ๊ณ ๋นˆ๋„ ๋ฐ์ดํ„ฐ๋Š” ํšจ์œจ์ ์ธ Apache Parquet ํŒŒ์ผ์— ์ €์žฅ๋˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ฑ์ˆ™ํ•œ datasets ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์˜คํ”„๋กœ๋“œ๋˜์–ด ๋น ๋ฅด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘๋œ ์•ก์„ธ์Šค ๋˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  2. ์‹œ๊ฐ ๋ฐ์ดํ„ฐ: ๋Œ€๋Ÿ‰์˜ ์นด๋ฉ”๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์ด ์—ฐ๊ฒฐ๋˜๊ณ  MP4 ํŒŒ์ผ๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์—ํ”ผ์†Œ๋“œ์˜ ํ”„๋ ˆ์ž„์€ ํ•ญ์ƒ ๋™์ผํ•œ ๋น„๋””์˜ค๋กœ ๊ทธ๋ฃนํ™”๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ๋น„๋””์˜ค๋Š” ์นด๋ฉ”๋ผ๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋™์ผํ•œ ์นด๋ฉ”๋ผ ๋ณด๊ธฐ์— ๋Œ€ํ•œ ๋น„๋””์˜ค ๊ทธ๋ฃน๋„ ์—ฌ๋Ÿฌ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
  3. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ: ๋ฐ์ดํ„ฐ์˜ ํ…Œ์ด๋ธ” ๋ฐ ์‹œ๊ฐ์  ์ฐจ์›์— ๋Œ€ํ•œ ๊ด€๊ณ„ํ˜• ๋Œ€์‘ ์—ญํ• ์„ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์…‹์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” JSON ํŒŒ์ผ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์Šคํ‚ค๋งˆ, ํ”„๋ ˆ์ž„ ์†๋„, ์ •๊ทœํ™” ํ†ต๊ณ„ ๋ฐ ์—ํ”ผ์†Œ๋“œ ๊ฒฝ๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ž ์žฌ์ ์œผ๋กœ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์—ํ”ผ์†Œ๋“œ(์ˆ˜์–ต/์ˆ˜์‹ญ์–ต ๊ฐœ์˜ ๊ฐœ๋ณ„ ํ”„๋ ˆ์ž„์œผ๋กœ ์ด์–ด์ง)๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์…‹์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์—ํ”ผ์†Œ๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•œ ๋†’์€ ์ˆ˜์ค€์˜ ๊ตฌ์กฐ๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ์ด๋Š” ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ” ์ปฌ๋ ‰์…˜๊ณผ ๋น„๋””์˜ค๊ฐ€ ๋‹จ์ผ ์—ํ”ผ์†Œ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋ณด์˜ ์—ฐ๊ฒฐ์„ ํฌํ•จํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ์ปฌ ๋ฐ Hugging Face์™€ ๊ฐ™์€ ์›๊ฒฉ ์ €์žฅ์†Œ ์ œ๊ณต ์—…์ฒด ๋ชจ๋‘์—์„œ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์••๋ ฅ์„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ์—ํ”ผ์†Œ๋“œ ์ •๋ณด, ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ์–ด์ง„ ์—ํ”ผ์†Œ๋“œ๊ฐ€ ํŠน์ • ๋น„๋””์˜ค์—์„œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋๋‚˜๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์…‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • meta/info.json: ์ค‘์•™ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ๋Šฅ(์˜ˆ: observation.state, action), ํ•ด๋‹น ๋ชจ์–‘ ๋ฐ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ •์˜ํ•˜๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ์…‹ ์Šคํ‚ค๋งˆ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ ๋น„๋””์˜ค ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ ํ…œํ”Œ๋ฆฟ, ๋ฐ์ดํ„ฐ์…‹์˜ ์ดˆ๋‹น ํ”„๋ ˆ์ž„(fps), ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ฒ„์ „๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ •๋ณด๋„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • meta/stats.json: ์ „์ฒด ๋ฐ์ดํ„ฐ์…‹์—์„œ ๊ฐ ๊ธฐ๋Šฅ์˜ ์ง‘๊ณ„ ํ†ต๊ณ„(ํ‰๊ท , ํ‘œ์ค€ ํŽธ์ฐจ, ์ตœ์†Œ, ์ตœ๋Œ€)๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ •๊ทœํ™”์— ์‚ฌ์šฉ๋˜๋ฉฐ dataset.meta.stats๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • meta/tasks.jsonl: ์ž์—ฐ์–ด ์ž‘์—… ์„ค๋ช…๊ณผ ์ •์ˆ˜ ์ž‘์—… ์ธ๋ฑ์Šค ๊ฐ„์˜ ๋งคํ•‘์„ ํฌํ•จํ•˜๋ฉฐ, ์ด๋Š” ์ž‘์—… ์กฐ๊ฑด๋ถ€ ์ •์ฑ… ํ›ˆ๋ จ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • meta/episodes/: ์ด ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ๊ธธ์ด, ํ•ด๋‹น ์ž‘์—… ๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์™€ ๊ฐ™์€ ๊ฐ ๊ฐœ๋ณ„ ์—ํ”ผ์†Œ๋“œ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ์ด ์ •๋ณด๋Š” ๋‹จ์ผ ๋Œ€ํ˜• JSON ํŒŒ์ผ์ด ์•„๋‹Œ ์ฒญํฌํ™”๋œ Parquet ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • data/: Parquet ํŒŒ์ผ์— ์žˆ๋Š” ํ•ต์‹ฌ ํ”„๋ ˆ์ž„๋ณ„ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ํฐ ํŒŒ์ผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ํŒŒ์ผ์€ ์ฒญํฌํ™”๋œ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ผ ํŒŒ์ผ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ํ”ผ์†Œ๋“œ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • videos/: ๋ชจ๋“  ์‹œ๊ฐ์  ๊ด€์ฐฐ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ MP4 ๋น„๋””์˜ค ํŒŒ์ผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. data/ ๋””๋ ‰ํ† ๋ฆฌ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ์˜ ๋น„๋””์˜ค ์˜์ƒ์ด ๋‹จ์ผ MP4 ํŒŒ์ผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด ์ „๋žต์€ ์ตœ์‹  ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋” ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ์…‹์˜ ํŒŒ์ผ ์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค. ๊ฒฝ๋กœ ๊ตฌ์กฐ(/videos/<camera_key>/<chunk>/file_...mp4)๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋กœ๋”๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋น„๋””์˜ค ํŒŒ์ผ์„ ์ฐพ๊ณ  ์ง€์ •๋œ ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

v2.1 ๋ฐ์ดํ„ฐ์…‹์„ v3.0์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

LeRobotDataset:v3.0์€ lerobot-v0.4.0๊ณผ ํ•จ๊ป˜ ๋ฆด๋ฆฌ์Šค๋  ์˜ˆ์ •์ด๋ฉฐ, Hugging Face Hub์— ํ˜„์žฌ ํ˜ธ์ŠคํŒ…๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์…‹์„ ์ƒˆ v3.0์œผ๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

python -m lerobot.datasets.v30.convert_dataset_v21_to_v30--repo-id=<HFUSER/DATASET_ID>

์ด ์ƒˆ ํ˜•์‹์„ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์กฐ๊ธฐ์— ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค! lerobot-v0.4.0์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ์ตœ์‹  lerobot-v0.3.x๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์…‹์„ ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „์œผ๋กœ ๊ณ„์† ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋‹ค์Œ PyPI๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

pip install "https://github.com/huggingface/lerobot/archive/33cad37054c2b594ceba57463e8f11ee374fa93c.zip"  # This will affect your local lerobot installation!
python -m lerobot.datasets.v30.convert_dataset_v21_to_v30 --repo-id=<HFUSER/DATASET_ID>

์ด๋Š” ์‚ฌ์ „ ๋ฆด๋ฆฌ์Šค์ด๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถˆ์•ˆ์ •ํ•œ ๋ฒ„์ „์ž„์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ๋‹ค์Œ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค ๊ฐœ๋ฐœ ์ƒํƒœ๋ฅผ ์—ฌ๊ธฐ์—์„œ ํŒ”๋กœ์šฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋ณ€ํ™˜ ์Šคํฌ๋ฆฝํŠธ convert_dataset_v21_to_v30.py๋Š” ์—ฌ๋Ÿฌ ์—ํ”ผ์†Œ๋“œ episode-0000.mp4, episode-0001.mp4, episode-0002.mp4, .../episode-0000.parquet, episode-0001.parquet, episode-0002.parquet, episode-0003.parquet, ...๋ฅผ ๋‹จ์ผ ํŒŒ์ผ file-0000.mp4/file-0000.parquet๋กœ ์ง‘๊ณ„ํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํžˆ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ƒ์œ„ ์ˆ˜์ค€ ํŒŒ์ผ์—์„œ ํŠน์ • ์—ํ”ผ์†Œ๋“œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์˜ˆ์ œ: LeRobotDataset์„ torch.utils.data.DataLoader์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋‘ฅ(ํ…Œ์ด๋ธ” ๋ฐ ์‹œ๊ฐ ๋ฐ์ดํ„ฐ, ๊ด€๊ณ„ํ˜• ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” Hugging Face Hub์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์…‹์€ ํ•œ ์ค„๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•ํ™” ํ•™์Šต(RL) ๋˜๋Š” ํ–‰๋™ ๋ณต์ œ(BC)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋กœ๋ด‡ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ด€์ฐฐ ๋ฐ ํ–‰๋™ ์Šคํƒ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, RL ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์ „ ๊ด€์ฐฐ์˜ ๊ธฐ๋ก o_{t-H_o:t}์„ ์‚ฌ์šฉํ•˜๊ณ , BC ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Œ€์‹  ์—ฌ๋Ÿฌ ํ–‰๋™์˜ ์ฒญํฌ๋ฅผ ํšŒ๊ท€ํ•˜๋„๋ก ํ›ˆ๋ จ๋ฉ๋‹ˆ๋‹ค. ๋กœ๋ด‡ ํ•™์Šต ํ›ˆ๋ จ์˜ ํŠน์ • ์‚ฌํ•ญ์„ ์ˆ˜์šฉํ•˜๊ธฐ ์œ„ํ•ด LeRobotDataset์€ ๊ธฐ๋ณธ ์ฐฝ ์—ฐ์‚ฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด delta_timestamps ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๊ด€์ฐฐ ์ด์ „ ๋ฐ ์ดํ›„์˜ ์ดˆ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ๋ฆฌํ•˜๊ฒŒ๋„ LeRobotDataset์„ PyTorch DataLoader์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์…‹์˜ ๊ฐœ๋ณ„ ์ƒ˜ํ”Œ ์‚ฌ์ „ ๋ชจ์Œ์„ ์ž๋™์œผ๋กœ ์ผ๊ด„ ํ…์„œ์˜ ๋‹จ์ผ ์‚ฌ์ „์œผ๋กœ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from lerobot.datasets.lerobot_dataset import LeRobotDataset

repo_id = "yaak-ai/L2D-v3"

# Hugging Face Hub์—์„œ ๋กœ๋“œ (๋กœ์ปฌ์— ์บ์‹œ๋จ)
dataset = LeRobotDataset(repo_id)

# ์ธ๋ฑ์Šค๋กœ ๋ฐ์ดํ„ฐ์…‹์˜ 100๋ฒˆ์งธ ํ”„๋ ˆ์ž„ ๊ฐ€์ ธ์˜ค๊ธฐ
sample = dataset[100]
print(sample)
# ์ƒ˜ํ”Œ์€ ํ…์„œ ์‚ฌ์ „์ž…๋‹ˆ๋‹ค.
# {
#     'observation.state': tensor([...]),
#     'action': tensor([...]),
#     'observation.images. front_left': tensor([C, H, W]),
#     'timestamp': tensor(1.234),
#     ...
# }
delta_timestamps = {
    "observation.images.front_left": [-0.2, -0.1, 0.0]  # ๊ด€์ฐฐ ์ „ 0.2 ๋ฐ 0.1์ดˆ
}
dataset = LeRobotDataset(
    repo_id
    delta_timestamps=delta_timestamps
)

# ์ด์ œ ์ธ๋ฑ์Šค์— ์•ก์„ธ์Šคํ•˜๋ฉด ์ง€์ •๋œ ํ‚ค์— ๋Œ€ํ•œ ํ”„๋ ˆ์ž„ ์Šคํƒ์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
sample = dataset[100]

# ์ด๋ฏธ์ง€ ํ…์„œ์— ์ด์ œ ์‹œ๊ฐ„ ์ฐจ์›์ด ์žˆ์Šต๋‹ˆ๋‹ค.
# 'observation.images.wrist_camera'๋Š” T=3์ธ [T, C, H, W] ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
print(sample['observation.images.front_left'].shape)

batch_size=16
# ํ›ˆ๋ จ ๋ชฉ์ ์œผ๋กœ ๋ฐฐ์น˜๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์…‹์„ DataLoader๋กœ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค.
data_loader = torch.utils.data.DataLoader(
    dataset,
    batch_size=batch_size
)

# 3. ํ›ˆ๋ จ ๋ฃจํ”„์—์„œ DataLoader๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
num_epochs = 1
device = "cuda" if torch.cuda.is_available() else "cpu"

for epoch in range(num_epochs):
    for batch in data_loader:
        # 'batch'๋Š” ๊ฐ ๊ฐ’์ด ํ…์„œ ๋ฐฐ์น˜์ธ ์‚ฌ์ „์ž…๋‹ˆ๋‹ค.
        # ์˜ˆ๋ฅผ ๋“ค์–ด, batch['action']์€ [32, action_dim] ํ˜•ํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

        # delta_timestamps๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์น˜ ์ด๋ฏธ์ง€ ํ…์„œ์˜
        # ํ˜•ํƒœ๋Š” [32, T, C, H, W]๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        # ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์žฅ์น˜(์˜ˆ: GPU)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
        observations = batch['observation.state.vehicle'].to(device)
        actions = batch['action.continuous'].to(device)
        images = batch['observation.images.front_left'].to(device)

        # ๋‹ค์Œ์œผ๋กœ amazing_model.forward(batch)๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
        ...

์ŠคํŠธ๋ฆฌ๋ฐ

๋ฐ์ดํ„ฐ์…‹์„ ๋กœ์ปฌ์— ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  v3.0 ํ˜•์‹์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์…‹์„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. StreamingLeRobotDataset ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

from lerobot.datasets.streaming_dataset import StreamingLeRobotDataset
# ๋ฐ์ดํ„ฐ์…‹์„ ๋””์Šคํฌ์— ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  Hugging Face Hub์—์„œ ์ง์ ‘ ์ŠคํŠธ๋ฆฌ๋ฐ
repo_id = "yaak-ai/L2D-v3"
dataset = StreamingLeRobotDataset(repo_id)

๊ฒฐ๋ก 

LeRobotDataset v3.0์€ LeRobot์—์„œ ์ง€์›ํ•˜๋Š” ๋กœ๋ด‡ ๊ณตํ•™ ๋ฐ์ดํ„ฐ์…‹์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋””๋”ค๋Œ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋กœ๋ด‡ ๋ฐ์ดํ„ฐ ๋ชจ์Œ์„ ์ €์žฅํ•˜๊ณ  ์•ก์„ธ์Šคํ•˜๋Š” ํ˜•์‹์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๋กœ๋ด‡ ๊ณตํ•™์„ ๋ฏผ์ฃผํ™”ํ•˜๋Š” ๋ฐ ์ง„์ „์„ ์ด๋ฃจ๊ณ  ์žˆ์œผ๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „ํ˜€ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์—ํ”ผ์†Œ๋“œ์— ๋Œ€ํ•ด ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค!

์ตœ์‹  lerobot-v0.3.x๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์ƒˆ ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, GitHub ๋˜๋Š” Discord ์„œ๋ฒ„์—์„œ ํ”ผ๋“œ๋ฐฑ์„ ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”! ๐Ÿค—

๊ฐ์‚ฌ

LeRobotDataset:v3 ๊ฐœ๋ฐœ ์ค‘ ๊ท€์ค‘ํ•œ ์ง€์›๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ด ์ค€ fantastic yaak.ai ํŒ€์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Hugging Face Hub์—์„œ ํ•ด๋‹น ์กฐ์ง์„ ํŒ”๋กœ์šฐํ•˜์„ธ์š”! ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์ดˆ๊ธฐ ๊ธฐ๋Šฅ์„ ๊ณต์œ ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ํ˜‘์—…์„ ์›ํ•˜์‹œ๋ฉด ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š” ๐Ÿ˜Š


์›๋ฌธ ์ถœ์ฒ˜: https://huggingface.co/blog/lerobot-datasets-v3

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

LeRobot v0.4.0: Supercharging OSS Robot Learning

SmolVLA: Efficient Vision-Language-Action Model trained on Lerobot Community Data

LeRobot goes to driving school: World’s largest open-source self-driving dataset