AI VIDEO BRIEFING
코덱 모션 벡터로 학습 없이 3D 가우시안 스플래팅 갱신하기: 실시간 자유시점 영상 스트리밍 연구
동영상 코덱이 압축 과정에서 이미 만들어 보내는 모션 벡터를 그대로 가져와, 학습이나 최적화 없이 3D 가우시안을 움직인다. 서울대 수업 최종 발표에서 소개된 실시간 자유시점 영상 스트리밍 연구의 아이디어와 실험 결과를 정리했다.

핵심 메시지
쉽게 이해하기
이 발표는 서울대 시각 이해를 위한 머신러닝 수업의 팀 프로젝트 최종 발표로, 김주석·허운·유정민 세 사람이 맡았다. 주제는 영상 코덱이 이미 계산해 둔 정보를 그대로 활용해 학습이나 최적화 없이 3D 가우시안을 실시간으로 갱신하는 방법이다.
문제의 배경은 자유시점 영상이다. 일반 영상은 카메라가 정해 준 시점만 볼 수 있지만, 자유시점 영상은 3차원 공간 안에서 보는 각도와 위치를 시청자가 고를 수 있어 가상현실이나 3차원 화상통화 같은 몰입형 응용의 핵심으로 꼽힌다. 특히 미리 만들어 둔 3D 데이터를 받아 재생하는 것이 아니라 카메라에서 프레임이 들어오는 즉시 복원해야 하는 온라인 스트리밍에서는 30FPS를 지키려면 33밀리초라는 빠듯한 시간 제약이 걸린다.
발표팀이 주목한 사실은 우리가 영상을 주고받을 때 늘 H.264나 HEVC 같은 2D 코덱으로 압축한다는 점이다. 이 코덱들은 인코딩 과정에서 화면 안 물체가 어디로 움직이는지를 블록 단위 모션 벡터로 계산해 비트스트림에 함께 실어 보내고, 받는 쪽은 어차피 디코딩을 하므로 이 정보를 사실상 공짜로 얻는다. 그렇다면 움직임을 다시 추정하느라 연산을 쓰지 말고, 코덱이 준 모션 벡터를 그대로 3D 가우시안에 적용하자는 것이 핵심 아이디어다.
전체 파이프라인은 코덱의 GOP 구조를 그대로 따른다. 키프레임에 해당하는 I프레임에서는 그 시점의 멀티뷰 영상으로 3D 가우시안을 새로 복원하고, 뒤따르는 P프레임에서는 학습 없이 모션 벡터만으로 가우시안을 제자리에서 움직인다. P프레임 갱신은 세 단계로 나뉜다. 먼저 2D 모션 벡터를 직전 가우시안에서 얻은 깊이맵과 카메라 파라미터를 이용해 3차원 벡터로 되돌리는데, 여러 카메라에서 모으면 시점이 일치하는 움직임은 강하게 남고 가려진 부분이나 잡음은 자연스럽게 걸러진다.
다음 단계에서는 모든 벡터로 모든 가우시안을 갱신하면 연산량과 잡음이 커지므로, 2D에서 패치 단위로 움직이는 성질에 착안해 3차원에서는 복셀 단위의 회전과 평행이동을 구한다. 이 계산은 반복 최적화 없이 한 번에 끝난다. 큰 복셀은 안정적이지만 뭉개지고 작은 복셀은 세밀하지만 잡음에 약해, 여러 복셀 크기를 동시에 계산하고 정합 오차와 인라이어 비율로 점수를 매긴다. 마지막으로 하나의 가우시안이 여러 크기의 복셀에 동시에 속하므로 어떤 움직임을 쓸지 고르는데, 가장 작은 크기부터 유효성을 보는 방식, 잔차로 일관성을 판단하는 방식, 정해진 기준 안에 드는 벡터가 가장 많은 복셀을 고르는 방식 세 가지를 비교했다.
주요 인사이트
- 이미 만들어져 전송되는 데이터를 재활용한다는 발상 자체가 비용 절감의 핵심이다. 모션 추정을 새로 하지 않으니 실시간 제약을 지킬 여지가 생긴다.
- 실험은 실내 장면 데이터셋과 움직임이 빠른 스포츠 장면 데이터셋에서 진행했고, 공정한 비교를 위해 모든 방법을 같은 초기 3D 가우시안에서 출발시키고 GPU 시간 동기화로 측정했다. 장비는 RTX 3090 한 장이다.
- 화질 지표에서는 움직임이 빠른 스포츠 장면에서 베이스라인에 뒤졌지만 정적인 실내 장면에서는 경쟁력이 있었다. 화질을 조금 양보하고 지연을 크게 줄이는 트레이드오프인 셈이다.
- 복셀 크기 선택지를 하나에서 둘로 늘릴 때 이득이 가장 컸고 그 이상은 미미했다. 선택지가 늘수록 연산량도 늘기 때문에 적절한 개수를 정하는 것이 중요하다.
- 새로 등장하거나 가려졌던 물체는 제대로 표현하지 못하고, 키프레임 간격이 길어지면 다음 키프레임까지 오차가 계속 쌓인다. 발표팀은 코덱이 보내는 잔차 신호를 가벼운 보정에 활용하면 개선할 수 있으리라고 봤다.
자주 묻는 질문
왜 33밀리초가 기준이 되나요?
끊김 없이 30FPS로 재생하려면 프레임 하나를 33밀리초 안에 복원해야 하기 때문입니다. 기존 방식은 프레임마다 경사하강 최적화나 신경망 연산을 반복해 보통 수 초가 걸려 이 조건을 맞추지 못합니다.
코덱 모션 벡터를 쓰는 것이 실제로 효과가 있었나요?
키프레임을 그대로 유지하는 정적 베이스라인과 비교한 실험에서, 프레임이 진행될수록 두 경우 모두 화질 지표가 떨어지지만 코덱 모션을 적용하면 그 어긋남이 상당 부분 보정됐습니다.
이 방식의 한계는 무엇인가요?
새로 나타나거나 가려진 영역은 완전히 표현하지 못하고, 키프레임 간격이 길어지면 오차가 누적됩니다. 복셀 크기나 임계값 같은 하이퍼파라미터도 데이터셋에 따라 조정이 필요합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗