사람 영상(유튜브·일반 카메라)으로 VLA 모델을 파인튜닝하면 더 좋아질까?
사람 영상(유튜브·일반 카메라)으로 VLA 모델을 파인튜닝하면 더 좋아질까? — 학생용 검증 가이드
작성일: 2026-11-10 대상: 로봇 데이터 없이도 VLA(Vision-Language-Action) 모델을 개선할 수 있는지 직접 검증해 보려는 학부생 성격: 연구 설계안 + 환경 설정 가이드입니다. 아래 가설은 아직 검증되지 않았고, 결과가 “효과 없음”으로 나와도 정상적인 연구 결과입니다.
0. 이 프로젝트가 묻는 질문
로봇 데이터로 학습한 VLA 모델(비싼 데이터)에, 유튜브 영상이나 일반 카메라로 찍은 사람 동작 영상(싼 데이터)을 추가해 파인튜닝하면 시뮬레이션에서 성능이 좋아질까?
검증 방식: 같은 시뮬레이터에서 원본 모델과 파인튜닝한 모델을 각각 1000번씩 돌려 성공률을 비교하고, 같은 장면을 나란히 보여 주는 데모 영상으로 마무리합니다.
선행연구가 있다는 점을 먼저 알아 두세요
사람 영상으로 VLA를 학습하려는 시도는 이미 있습니다. 우리 프로젝트는 “처음 발견”이 아니라 “학생 규모의 저비용 환경에서도 재현되는가” 를 보는 프로젝트입니다.
- EgoVLA (arXiv 2507.12440): 사람 1인칭 영상으로 VLA를 학습하고, 손목·손 동작을 로봇 동작으로 변환(IK, 리타겟팅)한 뒤 소량의 로봇 데모로 파인튜닝합니다.
- 사람 활동 영상 기반 VLA 사전학습 (arXiv 2510.21571): 1인칭 영상에서 손 동작 데이터 약 100만 에피소드를 자동 생성해 사전학습합니다.
1. 전체 흐름 (원래 5단계 + 보강)
| 단계 | 내용 | 비고 |
|---|---|---|
| 0 | 가설·대조군·평가 지표 정의 | 가장 중요. 이 단계를 건너뛰면 결과를 해석할 수 없음 |
| 1 | 시뮬레이터와 VLA 모델 선택 | LIBERO(MuJoCo) + SmolVLA 추천 |
| 2 | 베이스 모델의 입력/출력 데이터 형식 분석 | 우리가 만들 데이터의 “목표 형식” |
| 3 | 베이스라인 정확도 측정 | 같은 평가 설정을 이후에도 그대로 사용 |
| 4 | 사람 영상 → 스켈레톤 → 학습 데이터 변환, 파인튜닝 | 핵심 작업 |
| 5 | 1000회 비교 평가와 나란히 보여 주는 데모 | 통계와 영상 |
원래 계획에서는 “시뮬레이터 정확도 확인”이 먼저였지만, 데이터 형식 분석(2단계)을 먼저 해야 어떤 평가가 공정한지 정할 수 있어 순서를 바꿨습니다.
2. 0단계: 가설과 대조군 설계
“파인튜닝했더니 좋아졌다”만으로는 부족합니다. 무엇 때문에 좋아졌는지 분리해야 합니다.
가설 예시
로봇 데이터로만 학습한 모델은 새 물체·배경·언어 지시에서 약하다. 사람 영상을 추가하면 이런 분포 밖(OOD) 상황에서 성공률이 오른다.
실험 조건 (대조군 포함)
| ID | 학습 내용 | 왜 필요한가 |
|---|---|---|
| A | 원본 모델 (추가 학습 없음) | 기준선 |
| B | 원본 + 로봇 데이터만 추가 학습 (스텝·배치·학습률은 C와 동일) | “추가로 학습한 것 자체”의 효과를 분리 |
| C1 | 원본 + 직접 촬영한 사람 영상 (통제된 환경) | 제안 방법 1 |
| C2 | 원본 + 유튜브 영상 | 제안 방법 2 (더 싸고, 더 어려움) |
| C3 (선택) | 원본 + 스켈레톤을 시뮬에서 재생해 만든 로봇 영상 | 시각적 도메인 갭 제거 효과 |
B가 없으면 “영상 데이터라서 좋아졌다”와 “그냥 더 학습해서 좋아졌다”를 구분할 수 없습니다.
공정성 규칙
- 모든 조건에서 같은 학습 스텝, 배치 크기, 학습률, 시드를 사용합니다.
- 새 데이터만으로 이어서 학습하면 기존 능력을 잊을 수 있으니, 원본 로봇 데이터를 일정 비율 섞어서 학습하고 그 비율을 모든 조건에서 고정합니다.
- 평가는 같은 초기 상태·같은 시드로 진행합니다.
- 보고할 지표: 성공률 + 95% 신뢰구간(아래 9장 참고). 차이가 신뢰구간 안에 들어가면 “효과가 있다”고 주장하지 않습니다.
3. 1단계: 시뮬레이터와 모델 선택
| 후보 | 추천도 | 이유 |
|---|---|---|
| LIBERO (LeRobot 연동, MuJoCo) | ★★★ 추천 | 언어 지시가 있고, 평가 명령어가 이미 있으며, 공개 데이터셋·체크포인트가 있음 |
| gym-aloha (LeRobot) | ★★ 보조 | 태스크가 적고 ACT 중심 |
| Mobile ALOHA 시뮬 | ★ 비추천 | LeRobot에 공식 sim 환경이 없어 직접 구축해야 함 |
| Gazebo | ★ 비추천 | VLA 평가 생태계가 거의 없음 |
모델은 SmolVLA(450M) 를 추천합니다. 단일 GPU로 파인튜닝이 가능합니다. GPU가 충분하면 π0.5도 후보입니다.
주의: 기본 LIBERO는 이미 점수가 높다
기본 스위트에서는 최신 모델이 이미 90%대라서 개선 여지가 작습니다. 그래서 아래 중 하나가 필요합니다.
- LIBERO-10(장기 태스크)
- 교란(perturbation) 버전: LIBERO-PRO, LIBERO-Plus
- 직접 만든 OOD 변형(새 물체, 배경 색, 지시문 바꿔 말하기)
4. 환경 설정 (단계별 따라 하기)
아래 명령은 공식 문서에서 확인한 것입니다. 버전이 바뀔 수 있으니 막히면 각 링크의 최신 문서를 우선하세요.
4-1. 기본 환경: LeRobot 설치
공식 가이드: LeRobot Installation / 코드: github.com/huggingface/lerobot
요구 사항: Python 3.12 이상, PyTorch 2.10 이상 (가이드는 conda/miniforge 권장)
# 1) miniforge 설치 (conda를 쓰는 경우)
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
# 2) 가상환경 생성
conda create -y -n lerobot python=3.12
conda activate lerobot
# 3) 영상 디코딩용 ffmpeg
conda install ffmpeg -c conda-forge
# 4) LeRobot 설치 (소스)
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[training]" # 학습용
빌드 오류가 나면 시스템 패키지가 필요할 수 있습니다(Linux).
sudo apt-get install cmake build-essential python3-dev pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libswresample-dev libavfilter-dev
실험 추적을 쓰려면 wandb login을 실행합니다.
4-2. SmolVLA 설치
공식 가이드: SmolVLA 문서
pip install -e ".[smolvla]"
GPU가 없다면 공식 Colab 노트북으로 학습할 수 있습니다. 문서 기준으로 20k 스텝 학습은 A100 1장에서 약 4시간입니다.
4-3. LIBERO 시뮬레이터 설치
공식 가이드: LeRobot LIBERO 문서 / 원본: LIBERO GitHub
pip install -e ".[libero]" # Linux 전용
export MUJOCO_GL=egl # 서버(화면 없음) 렌더링 설정
- Windows·macOS에서는 LIBERO가 지원되지 않으니 Linux 서버나 학교 GPU 서버를 쓰세요.
- 교란 벤치마크를 쓰려면 LIBERO-PRO 또는 LIBERO-Plus의 설치 안내를 따릅니다(LIBERO-Plus는 기존
libero를 대체 설치하는 방식이라 별도 가상환경을 권장).
4-4. 사람 영상 → 스켈레톤 추출 도구
| 도구 | 용도 | 링크 |
|---|---|---|
| MediaPipe Hand Landmarker | 가장 쉬움. 손 21개 키포인트. 입문용 | Python 가이드 |
| HaMeR | 단안 영상에서 3D 손 메시 복원. 더 정확, GPU 필요 | 프로젝트 페이지 |
| WiLoR | 야외(in-the-wild) 영상용 3D 손 추적 | 프로젝트 페이지 |
| HaWoR / Dyn-HaMR | 카메라가 움직이는 1인칭 영상에서 손 동작 복원 | HaWoR, Dyn-HaMR |
처음엔 MediaPipe로 시작하고, 정확도가 부족하면 HaMeR/WiLoR로 올리는 순서를 권합니다.
python -m pip install mediapipe
MediaPipe 사용 시 알아 둘 점 (공식 문서 기준):
- 결과에는 이미지 좌표 랜드마크와 월드 좌표 랜드마크, 좌우 손 구분이 들어 있습니다.
- 월드 좌표는 손의 기하학적 중심이 원점인 미터 단위 값입니다. 즉 “책상 위 어디에 손이 있는지”가 아니라 손 모양만 알려 줍니다. 손목의 전역 위치를 얻으려면 카메라 보정이나 깊이 정보가 따로 필요합니다.
- 영상 파일은
detect_for_video(mp_image, frame_timestamp_ms)로 프레임별 처리합니다.
4-5. 유튜브 영상 다운로드와 이용 시 주의
- 다운로드 도구는 yt-dlp를 많이 씁니다.
- 반드시 확인할 것: 영상의 저작권과 플랫폼 이용약관, 영상에 나오는 사람의 얼굴·개인정보. 교내 연구·발표용 범위를 지도교수와 확인하고, 가능하면 재사용이 허용된 라이선스(CC) 영상 또는 직접 촬영 영상을 우선 쓰세요. 데이터를 공개 저장소에 올릴 때는 더욱 주의가 필요합니다.
5. 2단계: 베이스 모델이 받는 입력과 출력 (우리가 맞춰야 할 목표 형식)
LeRobot LIBERO 문서 기준 사양입니다.
| 구분 | 키 | 내용 |
|---|---|---|
| 관측 | observation.images.image |
메인 카메라(agentview_image), 256×256×3 |
| 관측 | observation.images.image2 |
손목 카메라(robot0_eye_in_hand_image), 256×256×3 |
| 관측 | observation.state |
8차원: 엔드이펙터 위치(3) + 축-각 방향(3) + 그리퍼 qpos(2) |
| 행동 | action |
7차원, 범위 [-1, 1]: 6D 엔드이펙터 델타 + 1D 그리퍼 |
| 제어 모드 | --env.control_mode |
relative(기본) / absolute. 체크포인트의 학습 방식과 맞춰야 함 |
| 학습 데이터 | lerobot/libero |
1,693 에피소드, 273,465 프레임, 40 태스크 |
문서에 명시되지 않은 항목이 있습니다. 직접 확인하세요.
- FPS: 데이터셋을 내려받아
meta/info.json의fps확인 - 언어 지시문 필드: 데이터셋의 task 필드와 문체 확인
- 데이터셋 포맷 상세: LeRobotDataset v3 문서, 데이터 녹화 가이드
핵심 관찰: 스켈레톤으로는
state와action(엔드이펙터 궤적)을 만들 수 있지만, 로봇 이미지와 손목 카메라 영상은 사람 영상에 없습니다. 이 차이를 어떻게 처리할지가 다음 장의 주제입니다.
6. 3단계: 베이스라인 측정
평가 명령 (LeRobot 공식 예시):
lerobot-eval \
--policy.path="your-policy-id" \
--env.type=libero \
--env.task=libero_spatial,libero_object,libero_goal,libero_10 \
--eval.batch_size=1 \
--eval.n_episodes=10 \
--env.max_parallel_tasks=1
- 공식 권장 프로토콜은 태스크당 10 에피소드, 총 400회이며 3개 시드 평균을 권장합니다.
- 우리 프로젝트의 1000회는 예를 들어 40 태스크 × 25 에피소드로 맞춥니다.
- 결과를 보고할 때는
--dataset.revision을 고정하세요(허브 데이터셋이 재업로드될 수 있음).
베이스 모델 확보 방법:
- 공개된 LIBERO 파인튜닝 체크포인트를 쓰거나(GPU 여유가 있을 때), 직접 학습합니다.
- 직접 학습 예시(공식 예시):
lerobot-train \ --policy.type=smolvla \ --policy.load_vlm_weights=true \ --policy.push_to_hub=false \ --dataset.repo_id=lerobot/libero \ --dataset.video_backend=torchcodec \ --output_dir=./outputs/libero_smolvla \ --steps=100000 \ --batch_size=64 - 이 학습은 무겁습니다. 베이스라인은 2회 이상 측정해 평가가 흔들리지 않는지 확인하세요. 평가가 불안정하면 이후 비교가 모두 의미를 잃습니다.
7. 4단계: 사람 영상 → 학습 데이터 변환
7-1. 데이터 수집 전략 (순서가 중요)
- 직접 촬영(C1) 먼저: LIBERO 태스크와 같은 물체 배치를 책상에 재현하고, 고정 카메라로 사람이 수행하는 모습을 촬영합니다(시뮬의 agentview 시점과 비슷하게). 시점·스케일이 통제되어 변환이 쉽습니다.
- 유튜브(C2)는 그 다음: 시점, 스케일, 카메라 파라미터가 제각각이라 훨씬 어렵습니다. 단안 영상은 깊이가 모호합니다.
- 처음부터 유튜브로 가면 “효과가 없는 이유가 데이터 때문인지, 변환 오류 때문인지” 구분할 수 없습니다.
공식 문서의 데이터량 가이드(SmolVLA): 약 50 에피소드를 시작점으로 보고, 25개는 부족했다고 보고합니다. 태스크 변화(예: 물체 위치)마다 충분한 데모가 필요합니다. 우리도 직접 촬영 100~300 클립을 목표로 시작해 보세요.
클립 선별 기준:
- 손이 계속 보이는 구간만 사용
- 한 클립 = 한 동작(예: “검은 그릇을 집어서 접시 위에 놓기”)
- 지시문은 LIBERO 문체에 맞춰 직접 작성(문체가 다르면 언어 분포 이동 발생)
7-2. 스켈레톤 → 모델 입력 변환 규칙
| 모델 필드 | 스켈레톤에서 만드는 방법 | 주의점 |
|---|---|---|
state[0:3] 위치 |
손목 3D 좌표를 로봇 작업공간 좌표로 변환하고 스케일 보정 | 단안 영상은 깊이가 불확실. 책상 평면·카메라 보정 필요 |
state[3:6] 방향 |
손목·검지 MCP·새끼 MCP로 손바닥 좌표계를 만들고 회전벡터(축-각)로 변환 | 로봇 그리퍼 축과 맞추는 고정 오프셋 필요 |
state[6:8] 그리퍼 |
엄지-검지 거리를 0~1로 정규화해 핑거 개도 2값으로 매핑 | 로봇 데모의 개도 분포에 맞춰 보정 |
action[0:6] |
연속 프레임 간 위치·회전 델타를 구해 로봇 데모의 행동 분포(분위수)에 맞춰 [-1,1]로 스케일 | 평활화(One Euro 필터, Savitzky-Golay) 필수 |
action[6] |
그리퍼 개폐 신호 | 로봇 데모의 부호 규약 확인 |
| 언어 지시문 | 클립마다 작성 | LIBERO 데이터의 문체와 통일 |
image |
아래 7-3 참고 | 사람 영상은 로봇이 아님 |
image2 (손목) |
사람 영상에는 없음 | 아래 7-3 참고 |
7-3. 이미지 처리: 두 가지 데이터 조건
조건 H-V — 사람 영상 프레임을 그대로 사용
- 프레임을 256×256으로 리사이즈해
image에 넣고, 스켈레톤에서 만든state/action을 붙입니다. - 손목 카메라가 없으므로 (a)
image를 복제하거나 (b) 빈 카메라로 처리합니다(SmolVLA 구현에empty_cameras설정이 있으니 사용 가능 여부를 코드에서 확인). 어느 방법을 택했는지 반드시 기록하세요. - 장점: 구현이 쉬움 / 단점: 사람 손 vs 로봇 팔이라는 시각적 도메인 갭
조건 H-S (선택, 고급) — 스켈레톤을 시뮬에서 재생해 로봇 영상으로 변환
- 변환한 행동을 LIBERO 장면에서 재생하고 성공한 에피소드만 남깁니다. 그러면 로봇이 찍은
image/image2가 자동으로 생겨 베이스 모델의 입력 형식과 정확히 일치합니다. - 단점: 물체 위치가 사람 영상과 다르면 대부분 실패합니다. 그래서 성공 채택률(몇 %가 데이터로 남았는지)을 함께 보고해야 합니다.
- 일정이 빠듯하면 H-V만 하고 H-S는 향후 과제로 남기세요.
7-4. 변환 코드 뼈대 (참고용, 반드시 검증 후 사용)
아래는 개념을 보여 주는 뼈대입니다. 좌표계, 스케일, 오프셋은 여러분의 카메라·시뮬 설정에 맞게 직접 보정해야 합니다.
import numpy as np
from scipy.spatial.transform import Rotation as R
# MediaPipe 손 랜드마크 인덱스 (21점 표준): 0=손목, 4=엄지 끝, 5=검지 MCP, 8=검지 끝, 17=새끼 MCP
WRIST, THUMB_TIP, INDEX_MCP, INDEX_TIP, PINKY_MCP = 0, 4, 5, 8, 17
def hand_frame(lm):
"""lm: (21,3) 한 프레임의 3D 랜드마크 -> (위치 3, 회전벡터 3, 그리퍼 개도 0~1)"""
p = lm[WRIST]
x = lm[INDEX_MCP] - lm[PINKY_MCP]; x /= np.linalg.norm(x)
z = np.cross(x, lm[INDEX_MCP] - lm[WRIST]); z /= np.linalg.norm(z)
y = np.cross(z, x)
rotvec = R.from_matrix(np.stack([x, y, z], axis=1)).as_rotvec()
aperture = np.linalg.norm(lm[THUMB_TIP] - lm[INDEX_TIP])
return p, rotvec, aperture
def to_actions(positions, rotvecs, apertures, pos_scale, rot_scale):
"""연속 프레임 델타 -> [-1,1] 7D 행동. scale은 로봇 데모 행동 분포(예: 99 분위수)로 보정."""
dpos = np.diff(positions, axis=0) / pos_scale
drot = (R.from_rotvec(rotvecs[1:]) * R.from_rotvec(rotvecs[:-1]).inv()).as_rotvec() / rot_scale
grip = np.where(apertures[1:] > 0.5, -1.0, 1.0) # 부호 규약은 로봇 데모에서 확인할 것
return np.clip(np.concatenate([dpos, drot, grip[:, None]], axis=1), -1, 1)
권장 후처리: 위치·회전 시계열에 One Euro 또는 Savitzky-Golay 평활화를 적용한 뒤에 델타를 계산하세요(순서가 반대면 노이즈가 증폭됩니다).
7-5. 변환 검증 (학습 전에 꼭!)
- 변환한 행동을 시뮬레이터에서 재생해 보고 궤적이 자연스러운지 눈으로 확인
- 로봇 데모와 행동 분포 비교(속도·델타 크기 히스토그램)
- FPS 맞추기: 영상 FPS와 데이터셋 FPS가 다르면 델타 크기가 틀어지므로 리샘플링
- 키 이름·정규화 통계 일치 확인(키 이름이 다르면 정규화 통계와 어긋나 성능이 급락)
분포가 어긋난 채 학습하면 성능 저하의 원인이 “사람 영상이라서”인지 “변환 오류라서”인지 알 수 없게 됩니다.
7-6. 데이터셋 저장과 파인튜닝
- 변환 결과를 LeRobotDataset 형식으로 저장하고 허브에 올립니다(데이터셋 문서, 녹화 가이드). 공식 문서상 데이터셋은 허브에 있어야
--dataset.repo_id로 참조할 수 있습니다. - 원본 로봇 데이터와 새 데이터를 섞는 방법(데이터셋 병합 등)은 LeRobot 버전에 따라 다를 수 있으니 레포 문서/이슈에서 현재 지원 방식을 확인하세요.
파인튜닝 명령 (공식 SmolVLA 예시를 우리 데이터에 맞게 수정):
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/mydataset \
--batch_size=64 \
--steps=20000 \
--output_dir=outputs/train/my_smolvla \
--job_name=my_smolvla_training \
--policy.device=cuda \
--wandb.enable=true
- 시작은 작은
--batch_size로, GPU가 허용하면 늘리세요. 옵션 전체는lerobot-train --help로 확인합니다. - 사용 중인 체크포인트가
smolvla_base인지, 이미 LIBERO로 학습된 체크포인트인지에 따라 출발점이 달라집니다. A~C 모든 조건이 같은 출발 체크포인트에서 시작하는지 꼭 확인하세요. - 추론 때 쓰는 task 문자열은 데이터셋 녹화 때 쓴 지시문과 일치해야 합니다.
8. 5단계: 평가와 데모
8-1. 평가 설계
- 조건(A, B, C1, C2, C3)마다 1000회 평가, 초기 상태와 시드는 고정
- 표준 LIBERO + OOD 변형(LIBERO-PRO/Plus 또는 직접 만든 변형) 모두에서 측정
- 망각 확인: 원래 태스크(in-distribution) 성능이 떨어지지 않았는지도 반드시 확인
- 데이터량 곡선: 새 데이터를 50 / 100 / 300 클립으로 바꿔 가며 성능 변화 그리기
8-2. 결과 표 양식 예시
| 조건 | 표준 스위트 성공률 (95% CI) | OOD 성공률 (95% CI) | 비고 |
|---|---|---|---|
| A 원본 | |||
| B +로봇 데이터 | |||
| C1 +직접 촬영 | |||
| C2 +유튜브 |
8-3. 데모 영상
- 같은 초기 상태에서 원본 vs 파인튜닝 모델을 나란히 재생합니다.
- 보여 줄 에피소드는 무작위가 아니라 사전에 정한 규칙(예: 시드 0~4) 으로 고르세요. 체리피킹 논란을 막습니다.
- 실패 사례도 함께 보여 주세요(파인튜닝 후 오히려 나빠진 태스크 포함). 신뢰도가 올라갑니다.
- 평가 환경 설정에서 영상 저장 옵션을 처음부터 켜 두세요.
9. 통계: 신뢰구간 계산
성공률 p, 시행 횟수 n일 때 Wilson 95% 신뢰구간:
from math import sqrt
def wilson(successes, n, z=1.96):
p = successes / n
denom = 1 + z**2 / n
center = (p + z**2 / (2 * n)) / denom
half = z * sqrt(p * (1 - p) / n + z**2 / (4 * n**2)) / denom
return center - half, center + half
print(wilson(500, 1000)) # 성공률 50%, n=1000 -> 대략 ±3%p
- 1000회 기준 성공률 50% 근처에서 오차는 약 ±3%p입니다. 이보다 작은 차이는 우연일 수 있습니다.
- 시드를 3개 이상 쓰고, 시드 간 편차도 함께 보고하세요.
10. 예상 일정 (약 10주)
| 주차 | 작업 |
|---|---|
| 1 | 가설·대조군 확정, LeRobot + LIBERO + SmolVLA 환경 구축 |
| 2~3 | 데이터 형식 분석, 베이스라인 평가(시드 여러 개) |
| 4~5 | 직접 촬영 영상 수집, 스켈레톤 추출 → state/action 변환 + 소규모 파일럿 |
| 6~7 | A~C 조건 학습, 소규모 평가로 디버깅 |
| 8 | 유튜브 영상으로 확장(C2) |
| 9 | 1000회 본 평가와 통계 분석 |
| 10 | 데모 영상 제작, 발표 |
파일럿 먼저: 4~5주차에 클립 30개만으로 “변환 → 재생 검증 → 행동 분포 비교”를 먼저 통과시키세요. 이 단계가 통과해야 이후 학습이 의미가 있습니다.
11. 자주 막히는 지점 체크리스트
- 영상 FPS와 데이터셋 FPS가 일치하는가?
- 키 이름(
observation.images.image등)이 베이스 데이터와 똑같은가? - 행동 제어 모드(
relative/absolute)가 체크포인트와 맞는가? - 행동 스케일을 로봇 데모의 분포로 보정했는가?
- 모든 조건이 같은 출발 체크포인트·스텝·시드를 쓰는가?
- 대조군 B(로봇 데이터만 추가 학습)가 있는가?
- 원래 태스크 성능이 떨어지지 않았는지 확인했는가?
- 영상 저작권·개인정보를 확인했는가?
12. 결과가 “효과 없음”으로 나와도 괜찮은 이유
도메인 갭이 크면 사람 영상 추가가 오히려 성능을 낮출 수 있습니다. 그 경우에도 어떤 조건에서 왜 효과가 없었는지(직접 촬영은 되고 유튜브는 안 됨, 변환 품질에 민감함 등)를 정량적으로 보여 주면 충분히 가치 있는 연구입니다. 결과 방향을 미리 정해 두지 마세요.
참고 링크 모음
환경 설정
- LeRobot 설치 가이드
- LeRobot GitHub
- SmolVLA 문서
- SmolVLA 학습 Colab
- LeRobot LIBERO 문서
- LIBERO GitHub
- LIBERO-PRO GitHub · LIBERO-Plus GitHub
- LeRobotDataset v3 문서 · 데이터 녹화 가이드
스켈레톤·손 추적
논문