짧은 영상 도중에 부분을 가렸을 때, 모델이 '보이지 않는 부분의 특징'을 예측하여 4개의 보완 후보 중 합성 데이터 생성 규칙에 맞는 것을 선택할 수 있을까요? 이번에는 V-JEPA 2의 predictor를 사용하여 합성 영상으로 이 작은 과제를 시도했습니다.
영상 자체를 생성하거나 미래만을 예측하는 것이 아닙니다. 사전에 학습된 V-JEPA 2 checkpoint를 사용했기 때문에, 이 과제에 대한 추가 학습이나 probe 학습은 진행하지 않았습니다. 64프레임 영상의 프레임 30~33에 있는 중앙 영역을 가리고, gap 앞과 뒤의 두 영상을 context로 사용하여 해당 영역의 특징을 종합적으로 예측합니다. 동일한 보이는 부분을 가진 4개의 후보는 그 예측 특징과의 근접도에 따라 순위가 매겨집니다.
먼저 결과를 말씀드리자면, JEPA의 predictor는 4건 모두에서 생성 규칙상의 정답을 1위로 만들었습니다. 다만, 이미지 상에서 등속 보간(linear interpolation)하는 단순한 방법 역시 4건 모두 정답이었습니다. 이 결과만으로는 JEPA가 보간보다 우수하다고 단정하기 어렵습니다.
각 영상은 64프레임이며, 원래 크기는 64×64 화소입니다. 파란 공이 배경 위를 가로질러 움직입니다. 영상의 전반부와 후반부는 그대로 보여주고, 프레임 30~33의 중앙 영역만 가립니다.
4개의 후보는 가려진 구간만 다르고, 바깥쪽 보이는 부분은 동일합니다. 생성기는 가려진 4프레임에서도 가로 방향의 등속 운동을 계속하며 세로 위치를 유지하는 후보를 정답으로 레이블링하고, 나머지 3개 후보에서는 그 구간만 공의 세로 위치를 상하로 어긋나게 했습니다. 이 정답은 합성 데이터 생성 규칙에 의해 정의된 것입니다. 전후의 보이는 부분만으로는 가려진 궤도를 유일하게 결정할 수 없으며, 실제 세계 영상에 유일한 정답이 있다는 것을 보여주는 것도 아닙니다.
모델에 넣기 전에 영상을 짧은 변 292화소로 확대하고 중앙 256×256 화소를 잘라냅니다. 모델은 공간을 16×16의 patch grid로 나누고, 시간 방향은 2프레임씩 tubelet으로 취급합니다.
따라서 프레임 30~33에 해당하는 두 개의 시간 단위 각각에서 중앙의 8×8 patch만 context에서 제외합니다. 가리는 token은 2 × 8 × 8 = 128 개입니다. 나머지 8,064개는 보이는 context로 사용됩니다. 즉, 대상인 4프레임 전체가 보이지 않는 것이 아니라, 각 프레임의 중앙 영역을 제외한 부분은 보입니다.
후보 간의 차이가 이 가려진 범위 밖으로 새어 나가면, 모델이 본래 볼 수 없어야 할 답을 단서로 삼아버릴 위험이 있습니다. 그래서 리사이즈와 자르기를 마친 후에도, 가린 범위 바깥쪽은 4개의 후보에서 일치하는지 확인했습니다.
| 방법 | 사용하는 정보 | 후보 순위 결정 방식 |
|---|
| Masked-context predictor | 가려진 token을 제외한 보이는 context | 예측된 특징과 후보 측의 특징 오차가 작은 순서 |
| 이미지 상 등속 보간 | gap 전후에서 보이는 공 위치 | 보이는 위치에서 직선 운동을 적용하여 화소 차이가 작은 순서 |
| seeded random | 고정된 난수 seed | 영상 내용 사용 없이 무작위로 배열 |
| 가시 부분만 encoder | 4개 후보에 공통되는 보이는 context | 모든 후보에 동일한 입력을 주므로, 모두 동점 처리 |
세 가지 구성 요소의 역할을 분리하면 처리 흐름을 이해하기 쉽습니다.
| 구성 요소 | 이 실험에서의 역할 |
|---|
| Context encoder | 4개 후보에 공통되는 보이는 부분을 입력받아, 가려진 128 token을 제외한 8,064개의 특징으로 변환하는 것 |
| Predictor | context의 특징과, 가릴 위치에 배치된 학습된 mask token을 Transformer에 통과시켜, 그 128개 위치에 있는 특징을 종합적으로 예측하는 것 |
| Target encoder | 채점용으로 각 후보의 영상 전체를 개별적으로 처리하여, 동일한 128개 위치의 특징을 추출하는 것 |
| 채점 처리 | predictor의 예측값과 각 후보의 target 특징을 비교하여, 오차가 작은 순서대로 후보를 배열하는 것 |
여기서 predictor는 '다음으로 어떤 patch를 예측할지' 순서를 정해서 이미지를 조금씩 생성하는 구성 요소가 아닙니다. 이번 mask 위치는 처음부터 지정되어 있으며, 위치 정보는 각 특징이 영상의 어디에 대응하는지를 보여줍니다. context에는 gap 전후 프레임과 대상 프레임의 가려지지 않은 주변 영역이 남아있기 때문에, 미래만을 보는 예측이 아니라 전후 양쪽을 단서로 한 보완입니다. predictor는 그 지정된 위치에 대한 128개의 특징을 한 번의 forward pass로 종합적으로 출력합니다.
후보를 채점할 때, target encoder는 각 후보의 전체 비디오를 처리합니다. 즉, 가려진 픽셀은 context encoder나 predictor에게 전달되지 않지만, 후보 측의 '정답 확인용 특징'을 만드는 target encoder에는 들어갑니다. 이는 정답 레이블을 모델에 전달하는 것과는 별개입니다. 네 가지 후보 각각에 대해 동일한 128 위치의 target 특징을 추출하고, 후보 측 target 특징에 위치별 LayerNorm을 적용한 후, predictor의 출력과의 평균 절대 오차(MAE)를 계산합니다. 후보 순위 지정은 이 별도의 채점 처리를 통해 이루어지며, 정답 레이블은 모든 후보의 점수 산출이 끝난 후에 평가 목적으로만 사용됩니다.
따라서 이것은 가려진 픽셀을 직접 재구성하는 방식도, 예측 순서에 따라 이미지를 생성하는 방식도 아닙니다. 모델이 예측한 특징과 후보로부터 얻은 특징이 얼마나 가까운지를 기준으로 후보를 순위화합니다. target encoder의 특징에는 후보가 볼 수 있는 문맥(context)이 반영될 수도 있지만, 네 가지 후보 모두 동일한 가시 영역을 가지고 있습니다.
등속 보간(Constant Velocity Interpolation)은 별개의 방법입니다. 간극 전후에서 보이는 공의 중심으로부터 x/y 직선 궤적을 추정하여, 가려진 구간의 공 이미지를 보간합니다. 각 후보별 pixel MAE는 대상 4프레임의 원본 이미지 중앙 32×32 픽셀에서 측정했습니다. JEPA의 잠재 특징(latent feature) 오차와는 대상 영역과 척도가 다르기 때문에, 두 방법의 오차 마진 수치 자체는 비교하지 않습니다. 비교하는 것은 후보의 순위입니다.
평가한 합성 비디오는 총 4건입니다. 시드(seed)는 20261101부터 20261104까지이며, 정답 후보가 제시된 위치는 각각 [3, 3, 3, 0]이었습니다. 위치를 고정하지는 않았지만, 4건만으로는 균등한 분포가 아닙니다.
| 방법 | 단독으로 1위를 차지하여 정답인 경우 수 | 동점을 균등하게 처리했을 때 기대되는 top-1 | 동점을 균등하게 처리했을 때 기대되는 MRR |
|---|
| Masked-context predictor | 4/4 | 1.000 | 1.000 |
| ... | | | |
4지선다에서 무작위로 선택할 경우, 이론적인 top-1 정답률은 25%입니다. 이번에 시드된 랜덤 테스트의 2/4는 이 4건에서 우연히 관측된 값일 뿐이며, 랜덤 방식의 이론적 정답률이 50%라는 의미는 아닙니다. 가시 부분만을 인코딩하는 encoder는 후보들을 구별할 수 없어 엄밀한 1위 정답은 0건이었습니다. 동점을 균등하게 할당했을 때의 기대값은 랜덤 기준과 동일합니다.
MRR(Mean Reciprocal Rank)은 정답 후보가 몇 번째 순위에 있는지를 역수로 평균한 지표입니다. 1위면 1, 2위면 1/2이 됩니다. 동점이 있을 경우, 동점 후보들에게 균등하게 순위를 할당했을 때의 기대값을 사용했습니다.
predictor의 평균 손실 마진(가장 가까운 오답 후보의 loss − 정답의 loss)은 0.032326이었고, 등속 보간의 평균 pixel-error margin은 2.666504였습니다. 측정하는 양과 척도가 다르기 때문에, 이 수치들의 크기만으로 어느 방법이 더 확신을 가지고 정답했는지 비교할 수는 없습니다. 여기서 알 수 있는 것은, 두 방법 모두 4건에서 후보를 1위로 만들었다는 점입니다.
실험 코드와 결과를 확인할 수 있는 참고 자료로, 아래에 공개 스냅샷 파일을 제시합니다. 다만, 실험 당시의 실행 파일 해시(hash)나 커밋(commit)을 확인할 기록이 남아있지 않아, 아래 코드가 실험 시 사용된 코드와 완전히 일치하는지는 확인할 수 없습니다.
보충 설명으로, 공식 V-JEPA 2 repository의 ViT-L/16 predictor와 이번 중앙 마스크용 adapter를 동일한 predictor 인스턴스와 고정된 CPU float32 latent로 대조했습니다. 12 블록의 토큰 순서와 형태가 일치했으며, 출력 형태는 [1, 2, 1024]였고, 최대/평균 절대 오차는 모두 0.0이었습니다(허용 오차 atol=rtol=1e-5). 이는 고정된 하나의 입력 조건에 대한 결과이며, 모든 마스크 배치나 호환 로더 전체의 일치를 보장하지 않습니다.
사용된 기존 체크포인트는 로컬의 identity/hash 기록과 일치하며, 안전한 weight-only load와 strict load를 사용했습니다. 추후 공개 준비 점검에서 해당 SHA-256 및 바이트 카운트가 공식 Hugging Face의 facebook/vjepa2-vitl-fpc64-256와 일치합니다.
original/model.pth에 있는 LFS 기록과 일치하는 것을 확인했습니다. 따라서 저장된 바이트열은 동일한 아티팩트(artifact)와 일치하지만, 실제 획득 경로나 서명 검증까지는 확인하지 못했습니다.
이번 4건의 경우, masked-context predictor가 합성 규칙에 맞는 후보를 선택할 수 있었습니다. 하지만 등속 보간(constant velocity interpolation) 역시 동일한 4건 모두에서 정답입니다. 따라서 JEPA의 우위성은 확인할 수 없습니다.
또한, 평가는 4건에 불과하며 held-out seed가 없습니다. 생성기의 조건도 제한적이고, 정답 후보의 위치에도 편향이 있습니다. 이는 실제 영상으로의 일반화(generalization), 물리 법칙 이해, 위험 예측 능력을 보여주는 결과가 아닙니다. 후보 생성이나 mask를 변경한 평가에서는 답을 보고 조정하지 않는 독립적인 held-out 궤도가 필요합니다.
이 실험을 동일한 형태로 재현하기 위한 체크포인트(checkpoint), 전처리 설정, 호환 로더(loader), Python/ML 환경이 하나의 공개 레포지토리(repository)에 갖춰져 있지 않습니다. 의존성 잠금(dependency lock), 휴대 가능한 설정 방법, 체크포인트 획득 및 검증 절차, 단독으로 작동하는 실행 명령어(command) 또한 미비합니다. 공개된 코드가 있어도 즉시 재현할 수 있는 단계는 아닙니다.
다음으로는 더 많은 독립적인 궤도(trajectory)를 만들고 정답 후보 제시 위치를 균등하게 할 계획입니다. seed나 궤도 단위로 개발용과 held-out을 분리하고, held-out 결과를 본 후에 생성기나 mask를 조정하지 않는 평가를 진행할 것입니다. 등속 보간을 포함하는 동일한 비교 방법을 유지한다면, 합성 조건의 범위 내에서 predictor가 어떤 상황에 유용한지 확인하기 쉬워질 것입니다.
원 논문: V-JEPA 2: Self-Supervised Video Models Enable Understanding, Prediction and Planning. 이 논문에서는 대규모 비디오를 사용한 자기 지도 사전 학습(self-supervised pre-training)으로서, 가시 토큰(visible token)을 encoder로 처리하고, predictor가 mask 위치의 특징을 예측하여 EMA target encoder의 특징과 학습하는 방법을 설명하고 있습니다. 별도의 단계인 V-JEPA 2-AC는 행동 등을 조건으로 미래의 특징을 예측하는 모델입니다. 본 기사의 실험은 사전 학습된 V-JEPA 2 predictor를 이용한 전후 문맥 기반의 보완 후보 비교이며, V-JEPA 2-AC의 미래 예측과는 다릅니다.