본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 02. 10:41

최첨단 로봇 학습 데이터(VITRA)를 열어보았더니, 물체가 추적되지 않았던 이야기

요약

Microsoft가 공개한 최첨단 로봇 학습 데이터셋인 VITRA를 직접 분석한 결과, 손의 관절 데이터는 정밀하지만 정작 잡고 있는 물체의 위치나 ID 정보가 누락되어 있음을 발견했습니다. 이는 VLA 모델 학습 시 물체 가려짐(Occlusion) 문제를 해결하는 데 한계가 있을 수 있음을 시사합니다.

핵심 포인트

  • VITRA 데이터셋은 122만 에피소드를 포함한 대규모 VLA 데이터임
  • 손의 관절 정보는 매우 정밀하게 기록되어 있음
  • 물체의 위치(bbox)나 ID 정보가 데이터에 포함되어 있지 않음
  • 물체가 손에 가려지는 폐쇄(Occlusion) 문제 해결에 제약 가능성 존재

결론부터 말씀드리면

Microsoft가 공개한 최신 로봇 학습 데이터인 VITRA(ICRA 2026 채택, 122만 에피소드)를 직접 다운로드하여 내용을 확인해 보았습니다.

그 결과, 손의 움직임은 관절 레벨에서 정밀하게 기록되어 있음에도 불구하고, 「쥐고 있는 물체」가 어디에 있는지는 전혀 기록되어 있지 않았습니다.

「용기를 왼쪽으로 움직인다」라는 작업 라벨(task label)이 붙어 있음에도, 그 용기의 위치(bbox)도, 용기의 ID(동일한 물체라는 정보)도 데이터 어디에도 없었습니다. 물체는 오직 영어 설명문 속에만 존재하고 있었습니다.

이 기사는 그것을 발견하기까지의 과정과, 「그렇다면 거기에 어떤 의미가 있는가」에 대해 씁니다. 파지(Grasping, 물체를 잡는 것) 과정에서 물체가 손에 가려지는 장면의 추적에 관심이 있는 분, VLA 학습 데이터에 관심이 있는 분들에게 닿기를 바랍니다.

애초에 어떤 이야기인가 (전제를 3줄로)

  • 휴머노이드 로봇을 똑똑하게 만들려면 「모범 데이터」가 대량으로 필요하지만, 결정적으로 부족함 (데이터의 벽)
  • 해결책으로서 「인간의 1인칭 영상을 로봇 학습 데이터(VLA 데이터)로 변환하는」 연구가 현재 뜨거운 주제
  • 그 최첨단이 바로 Microsoft의 VITRA

VLA는 Vision-Language-Action의 약자로, 「보고 · 언어 지시를 받아 · 움직이는」 데이터를 의미합니다.

왜 VITRA의 내용이 궁금했는가

저는 원래 물체 추적(Object Tracking) ―― 특히 「손으로 물체를 잡는 순간, 물체가 손에 가려져 놓치는」 문제에 관심이 있어 가상 환경 등을 구축해 다루고 있었습니다. 인간이라면 컵을 쥐어서 손에 절반 정도 가려지더라도 「아까와 같은 컵이다」라고 알 수 있지요. 하지만 기계(혹은 CV 관련 분야)에게는 이것이 은근히 어렵습니다.

그래서 문득 생각이 들었습니다. 「세계 최첨단인 VITRA는 이 파지 시의 폐쇄(Occlusion, 가려짐)를 어떻게 처리하고 있을까?」라고 말이죠. 궁금하면 확인해보고 마는 성격이라, 공개 데이터를 실제로 내려받아 열어보기로 했습니다.

데이터를 열기까지 (간단한 절차)

VITRA 데이터(VITRA-1M)는 Hugging Face에서 공개되어 있습니다. 다만, epic.tar.gz라는 단일 압축 파일에 모든 에피소드가 모여 있어 사이즈가 매우 큽니다. 「에피소드 하나만 보고 싶은데 전부 다 받아야 하나…」라며 잠시 망설였습니다.

결론적으로는, tar 파일을 스트리밍(Streaming) 방식으로 열어서, 맨 앞의 에피소드 하나를 가져온 시점에서 멈추는 방법으로 회피할 수 있었습니다.

import requests, tarfile, numpy as np, io
url = "https://huggingface.co/datasets/VITRA-VLA/VITRA-1M/resolve/main/epic.tar.gz"
resp = requests.get(url, stream=True)
...

이렇게 하면 거대한 tar 파일을 전부 기다리지 않고도 첫 번째 에피소드만 얻을 수 있습니다.

열어본 결과

추출한 에피소드의 최상위 키(Top-level key)를 나열하면 다음과 같았습니다.

video_clip_id_segment # 영상 클립 번호
extrinsics # 카메라의 외부 파라미터 (Extrinsics)
intrinsics # 카메라의 내부 파라미터 (Intrinsics)
...

카메라, 손, 언어 ―― 이 요소들은 갖춰져 있습니다. 특히 손 데이터는 열어보니 놀라울 정도로 정밀했습니다. 오른손만 해도,

ep['right']['hand_pose'] # shape (프레임 수, 15, 3, 3) 15개 관절의 회전
ep['right']['joints_worldspace'] # shape (프레임 수, 21, 3) 21개 관절의 3D 좌표

손가락 관절 하나하나의 굽힘 정도까지 모든 프레임에 대해 기록되어 있었습니다. 「이 정도까지 한다고?」 싶을 정도의 수준입니다.

그런데 ―― 물체에 관한 키가 단 하나도 없습니다.

obj, object, bbox, track, instance, mask ―― 어떤 단어로 찾아도 검색되지 않았습니다.

물체는 「언어」 속에만 있다

그렇다면 물체는 어디로 갔을까요? 언어 라벨(Language label)을 보고 알 수 있었습니다.

ep['text']
# {'right': [('Pick up the clear plastic container.', (0, 36))],
# 'left': []}

다른 에피소드에서는,

"플라스틱 용기를 잡고 왼쪽으로 옮기세요."
(プラスチック容器を持って左に動かす)

"용기를 왼쪽으로 옮긴다"라고 적혀 있습니다. 물체가 공간을 이동하고 있습니다. 그것이 작업의 본질이어야 합니다. 그런데 그 용기가 프레임의 어디에 있는지, 이동 중에 동일한 물체로서 추적되고 있는지 ―― 그러한 정보는 전혀 기록되어 있지 않습니다. 용기는 영어 문장 속에만 존재합니다.

이것은 태만이 아니라, VITRA의 설계 사상이라고 생각합니다. "인간의 손을 로봇의 손(End-effector) 대신으로 학습한다"라는 접근 방식이기에, 손만 정밀하게 추적할 수 있으면 된다는 절제된 선택입니다. 실제로 이를 통해 성과를 내고 있습니다. 대단한 연구입니다.

하지만 제가 계속 신경 써왔던 "잡고 있는 물체를 계속 추적한다"라는 부분은 완전히 비어 있었습니다.

같은 영상으로 나란히 비교해 보기

여기서 운이 좋았던 점은, VITRA의 일부가 EPIC-KITCHENS라는 요리 영상 데이터셋으로 만들어졌고, 제가 평소 사용하는 TREK-150 역시 동일한 EPIC-KITCHENS 유래였다는 것입니다.

프레임 번호를 대조해 보았더니, 놀랍게도 VITRA와 제가 완전히 같은 영상(P03_02)의, 같은 순간을 각자 다르게 가공했다는 사실을 알게 되었습니다. 이건 나란히 비교해 볼 수밖에 없겠다고 생각했습니다.

왼쪽은 VITRA가 가진 것(손의 3D 포즈를 이미지에 투영한 것 ―― 이것은 실제 데이터입니다), 오른쪽은 저의 물체 추적(Object Tracking)이 더한 것(용기의 bbox와 ID)입니다. 같은 영상의, 파지(Grasping)가 한창 진행 중인 프레임입니다.

VITRAの手データと物体追跡の比較。左は手の骨格だけ、右は容器をIDつきで追跡

VITRA의 손 데이터(왼쪽)와, 동일 프레임에 대한 TREK-150 기반의 물체 추적 결과(오른쪽)

왼쪽을 보면, 주황색 손의 골격이 용기를 잡고 있는 손 위에 제대로 올라와 있습니다. 투영은 정확합니다. 하지만 양손으로 들어 올리고 있는 투명한 용기 그 자체는 추적되지 않고 있습니다.

오른쪽에서는 그 용기를 녹색 상자(ID #7)로 감싸고, 파지로 인해 손에 가려져도 동일한 ID로 계속 추적하고 있습니다.

나란히 놓고 보니, "최첨단은 손을 추적한다. 하지만 물체는 추적하지 않는다"라는 점이 한눈에 들어오는 그림이 되었습니다.

그래서, 이것이 어떤 의미가 있는가

솔직히 말하면, 처음에는 "헤에, 물체 정보가 없네" 정도의 기분이었습니다. 하지만 생각하면 할수록, 이것은 꽤 중요한 일이라고 생각하게 되었습니다.

물류 창고를 상상해 보세요. 로봇에게 "이 상자를 이 선반에서 저 바구니로 옮겨라"를 가르치고 싶을 때, 손의 움직임만으로는 부족합니다. 옮겨진 물체 그 자체를 추적한 기록 ―― "어떤 물체를 어디에서 어디로 움직였는가"라는 인식이 필수불가결하다고 개인적으로 생각합니다.

그리고 창고는 공간 효율을 위해 물건을 밀집시킵니다. 밀집되면 물건들은 서로를 가리게 되고, 잡는 순간에 더욱 가려집니다. 파지로 인한 폐색(Occlusion)은 구조적으로 피할 수 없습니다. 이것이 제가 "잡는 순간 놓쳐버리는 문제"로서 추적해 온 영역입니다.

최첨단인 VITRA에서도 비어 있는 이 부분 ―― 물체의 동일성(Identity)을 폐색되어도 계속 유지하는 것 ―― 은 누군가가 채울 가치가 있지 않을까 생각합니다.

솔직한 유보 사항 (중요)

숫자나 발견이 유리하게 보일 때일수록 스스로를 의심하려고 노력합니다 (과거의 트라우마가). 그래서 솔직한 생각을 두 가지 말씀드립니다.

1. VITRA가 물체를 추적하지 않는 것은 "할 수 없어서"가 아닙. "지금 하고 있지 않을" 뿐이라고... 생각합니다.

Microsoft가 마음만 먹는다면 물체 추적을 추가하는 것은 기술적으로 가능합니다. 따라서 "최첨단에 구멍이 있다"라기보다는 "최첨단이 아직 손대지 않은 영역이 있다"라고 보는 것이 정확하다고 생각합니다. 누구나 따라잡을 수 있는 이야기이기에, 특별한 우위를 주장할 생각은 없습니다.

2. "물체를 추적할 수 있으면 정말로 로봇이 똑똑해진다"는 것은 아직 가설입니다.

이번에 확인한 것은 "VITRA에 물체 추적의 차원이 없다"는 사실까지입니다. 그것을 추가했을 때 학습이 어떻게 좋아질지는 실제 로봇에서 검증하지 않으면 말할 수 없습니다. 그 부분은 솔직히 아직 보여드리지 못했습니다.

마치며

"최첨단의 데이터를 직접 열어서 확인해 보는 것"은 직접 해보니 발견할 것이 많아 재미있었습니다. 논문의 주장만 읽어서는 보이지 않는, 데이터 구조의 질감 같은 것을 알 수 있습니다.

아니 정말 오랜만에 만져봐서 깜짝 놀랐다

파지로 인한 폐색 상황에서 물체를 계속 추적하는 문제에 도전하면서, 최근에는 독학으로 자연어 처리(NLP) 등에도 임하고 있습니다.

비슷한 영역(Egocentric 영상, VLA 데이터, 물체 추적)에 관심이 있는 분, 혹은 "우리 VLA 데이터의 물체 추적 품질은 어떨까"라고 궁금해하시는 분이 있다면 편하게 이야기 나눌 수 있으면 좋겠습니다.

사용 코드 예시

코드 1: VITRA 데이터를 단 1개의 에피소드만 열기 (핵심 부분 발췌: 위에서 작성한 코드와 동일합니다)

import requests, tarfile, numpy as np, io
url = "https://huggingface.co/datasets/VITRA-VLA/VITRA-1M/resolve/main/epic.tar.gz"
resp = requests.get(url, stream=True)
...

코드 2: 물체(Object)와 관련된 키(Key)가 있는지 찾기

# 물체와 관련이 있을 법한 키를 하나씩 전부 찾아보기
obj_terms = ['obj', 'object', 'bbox', 'box', 'track', 'instance', 'mask']
found = [k for k in episode.keys()
...

이 기사는 EPIC-KITCHENS / TREK-150 / VITRA (모두 공개 데이터)를 사용한 개인적인 기술 검증 기록입니다. 방법론의 신규성을 주장하는 것이 아니라, 최첨단 데이터의 구조를 실제로 확인해 본 기록입니다. 어쩌면 데이터 로딩 실수나 해석 차이로 인해 예상치 못한, 혹은 의도와 다른 처리를 하고 있을지도 모릅니다.

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn ML의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0