Isaac Lab 시각 증강: demo ID로 새 영상과 기존 행동을 다시 묶기

Isaac Lab에서 시각적으로 증강한 영상을 학습 데이터로 되돌릴 때는 원래 demonstration의 ID가 연결 기준이 됩니다. mp4_to_hdf5.py는 원본 HDF5에서 로봇 상태·행동 같은 비시각 데이터를 보존하고, 대응하는 증강 영상으로 시각 데이터를 교체합니다. 따라서 새 영상의 파일명은 demo_{demo_id}_*.mp4 형식을 따라야 하며, ID는 그 영상이 나온 원래 시범과 같아야 합니다.

Isaac Lab의 Augmented Imitation Learning 문서가 설명하는 흐름은 HDF5에서 카메라 영상을 내보내고, Cosmos로 외관을 바꾸고, 원본 상태·행동과 다시 결합하는 순서입니다. 영상 생성 단계와 로봇 학습 데이터 구성 단계 사이에서 ID를 유지하는 이유를 한 시범의 이동 경로로 살펴보겠습니다.

MP4에는 원본 HDF5의 모든 정보가 들어가지 않는다

Mimic이 만든 demonstration HDF5에는 카메라 영상과 로봇의 비시각 데이터가 함께 있습니다. 문서의 Cosmos용 큐브 쌓기 환경은 RGB에 더해 segmentation, depth, normal 정보를 생성합니다. hdf5_to_mp4.py는 이 카메라 프레임들을 MP4 영상으로 내보냅니다. 이렇게 바꾸는 이유는 문서에서 사용하는 Cosmos 증강 경로가 HDF5 대신 영상을 받기 때문입니다.

이때 비디오 파일이 행동 배열까지 대신 저장하는 것은 아닙니다. 상태·행동과 결합할 원본 HDF5는 역변환 때 다시 입력합니다. “증강된 MP4 폴더만 남기면 학습 데이터를 재구성할 수 있다”는 가정 대신, 원본 HDF5와 거기서 내보낸 영상의 관계를 유지해야 합니다.

문서의 기본 카메라 키에는 table·wrist RGB와 table segmentation·normal·depth 등이 있습니다. table_cam_shaded_segmentation은 약간 다릅니다. 이 항목은 시뮬레이션 HDF5에 원래 생성된 별도 modality가 아니라, 변환 스크립트가 segmentation과 normal을 조합해 만드는 제어용 영상입니다. 어떤 파일이 원본 관측이고 어떤 파일이 증강을 돕기 위한 파생 입력인지 구분하면, 역변환 때 보존해야 할 데이터도 선명해집니다.

demo_7의 외관을 바꿔도 demo_7의 행동에 연결한다

다음은 파일 대응을 설명하기 위한 가상 예시입니다. 원본 demo_7은 큐브를 테이블 왼쪽에서 집는 시범이고, demo_8은 오른쪽에서 집는 시범이라고 하겠습니다. 두 시범에서 테이블 재질만 바꾼 영상을 만들었다면 대응은 다음과 같습니다.

증강 영상 파일 결합할 원본 시범 유지되는 비시각 데이터
demo_7_wood_table.mp4 demo_7 왼쪽에서 집는 시범의 상태·행동
demo_8_metal_table.mp4 demo_8 오른쪽에서 집는 시범의 상태·행동

여기서 wood_table이나 metal_table 같은 접미부는 설명용 이름입니다. 문서상 demo_{demo_id}_ 뒤 이름은 사용자가 정할 수 있지만, 앞의 demonstration ID는 원본과 일치해야 합니다. 접미부가 재질 정보를 잘 설명하더라도 ID가 바뀌면 연결되는 시범이 달라집니다.

가령 실제로 demo_7에서 만든 영상을 demo_8_wood_table.mp4로 이름 붙이면, 왼쪽을 향하는 화면이 오른쪽 집기 행동에 연결될 수 있습니다. 프레임 하나하나는 자연스러워 보여도 정책이 배우는 관측·행동 쌍의 뜻은 달라집니다. 이 문제는 이미지 생성 품질을 높여 해결하기보다, 영상이 어느 원본 시범에서 왔는지 추적해 바로잡아야 합니다.

로봇 영상 증강과 행동 라벨의 관계는 영상 변환이 행동의 의미를 어떻게 바꿀 수 있는지 설명합니다. 여기서는 그 관계를 파일 단위로 지키는 첫 연결 고리가 demo ID입니다.

역변환은 새 영상과 원본 상태·행동을 결합한다

문서의 역변환 명령은 다음 세 입력·출력 경로를 명시합니다. 기존 원본을 입력으로 읽고 새 HDF5를 출력하는 형태입니다.

python scripts/tools/mp4_to_hdf5.py \
  --input_file datasets/mimic_dataset_1k.hdf5 \
  --videos_dir datasets/cosmos_dataset_1k_mp4 \
  --output_file datasets/cosmos_dataset_1k.hdf5

--input_file은 원본 demonstration을 찾는 기준입니다. --videos_dir에는 그 시범들과 대응하는 증강 MP4가 들어갑니다. --output_file에는 증강 영상을 사용하되 비시각 데이터를 보존한 학습용 HDF5를 만듭니다. 여기서 원본 HDF5를 지정하는 이유는 단지 파일 형식을 참고하기 위해서가 아니라, 새 영상에 연결할 기존 상태·행동을 가져오기 위해서입니다.

ID가 맞은 뒤에는 시간축도 살펴볼 수 있습니다. 예를 들어 증강 과정에서 앞부분이 잘렸거나 프레임 순서가 바뀌면, 같은 demo라도 특정 영상 시점과 행동 시점이 달라집니다. 원본과 증강 영상의 프레임 수·순서, 집기 시작·그리퍼 닫힘·배치 같은 주요 장면의 위치를 비교하는 것이 유용합니다. 이는 이 글에서 제안하는 데이터 확인 방법입니다. 공식 문서가 설명하는 자동 대응 조건은 파일명의 demo ID이며, 프레임 수나 순서를 변환기가 자동 검사하는지는 해당 문서에 명시돼 있지 않습니다.

특히 출력 영상의 재생 프레임률만 보고 원래 로봇 제어 간격을 새로 정의하면 안 됩니다. 영상 파일의 시간 표현과 원본 행동 배열의 순서는 함께 확인할 대상입니다. 연결이 어긋난 시범은 정상 시범과 섞기 전에 해당 ID의 원본·증강 파일을 나란히 비교하는 편이 원인을 찾기 쉽습니다.

원본과 증강 데이터셋의 merge는 그다음 작업이다

영상의 역변환과 데이터셋 병합은 서로 다른 단계입니다. mp4_to_hdf5.py는 증강 영상과 원본 비시각 데이터를 결합한 새 HDF5를 만듭니다. 이후 merge_hdf5_datasets.py가 원본 HDF5와 증강 HDF5 등 여러 파일을 하나로 모읍니다.

예를 들어 원본 시범 하나와 그 시범의 조명 변형 하나를 모두 학습에 넣으려면, 원본 데이터셋과 변형 데이터셋을 각각 유지한 뒤 병합할 수 있습니다. 로봇 동작은 대응하지만 관측 외관은 다르게 제시하는 구성입니다. 병합은 이미 만들어진 데이터들을 모으므로, 그전에 ID나 시간축이 잘못 연결된 시범부터 찾아야 합니다.

Cosmos 증강에서는 바꾸는 외관과 유지할 과제 단서도 함께 정합니다. 공식 큐브 쌓기 예시는 조명·배경·재질을 바꾸면서 아래 큐브는 파랑, 가운데는 빨강, 위는 초록이라는 색·순서를 유지하도록 프롬프트에 적습니다. 원래 행동이 의미를 가지는 장면 조건을 구체적으로 남기는 방식입니다.

같은 문서는 Cosmos Transfer1의 e4055e39ee9c53165e85275bdab84ed20909714a commit을 사용한 recipe를 안내합니다. 변환 경로를 재현할 때는 이 문서의 조합과 자신이 설치한 버전을 맞춰 읽으면 됩니다. 원본 HDF5, demo ID, 증강 출력, 역변환 HDF5의 대응을 유지하면 어떤 외관 변화가 어떤 행동 시범에 붙었는지 끝까지 설명할 수 있습니다.

2026년 10월 16일 확인한 Isaac Lab 공식 문서를 바탕으로 작성했습니다. 데이터 변환, Cosmos 생성, 정책 학습·평가를 직접 실행하지 않았습니다.