Abstract+ intro
기존에는 pretrained된 3D를 synthetic object datasets를 finetuning 하는 방법으로 dynamic scene generation을 한다. 근데 이 방식대로 fine tuning 을 하면 생성된 장면이 object 중심적이고, 현실감이 부족한 문제가 있음. 그래서 이 논문에서는 이런 한계를 극복하기 위해 새로운 파이프라인을 도입했음. Multi view 생성 모델에 의존하지 앟고, 대신 large scale 실제 비디오로 훈련된 비디오 생성모델을 사용해 더 다양한 형태, 움직입, 객체랑 background의 상호작용등을 포착함. 그리고 동적 장면을 표현하기 위해 변형 가능한 3d 가우시안 splat D-3DGS를 사용함.
그래서 파이프라인을 단계적으로 정리해보자면, pretrained된 text video 모델을 사용해 동적장면을 feature로 가지고 있는 reference 비디오를 생성하고, reference video의 선택된 frame에서 3d representation을 재구성한다. 이걸 하기 위해 '정지시간' 비디오를 생성해 카메라 움직임이 있는동안 객체의 움직임을 최소화한다. 근데 이걸 하는 과정에서도 객체의 움직임이 발생할 수 있어서, 이런 불일치를 frame별 변형으로 인식하고 이걸 학습하게 해서 수정하는 방식. 그리고 reference 비디오에서 학습된 representation을 기반으로 시간적 변형을 재구성한다.
주요 contribution으로는
- text 기반으로 한 사실적인 4d generation 파이프라인을최초로 제안했다는 점.
- text video generatino을 통해 목표 reference 비디오랑 보조 '정지시간'비디오를 생성해서, 생성 문제를 재구성 문제로 전환하고, score distillation sampling steps를 줄인 점.
- 사용자가 4d로 변환하고 싶은 비디오를 선택하고 편집 할 수 있고, 다른 방법보다 훨씬 적은 계산 비용으로 고품질 샘플을 생성할 수 있다는 점, 등이 contribution이다.
Related works
Text-to-video generation
여러가 지 방식으로 text-image 디퓨전 모델을 기반으로 video generation 모델을 발전시켰는데, motion 모듈을 통합하거나, unetㄹ 차원을 하나 늘려서 3d unet 구조를 사용하거나, 시간적 공간적 upsampling을 활용해서 이미지랑 비디오 데이터를 함꼐 사용하는 방식 등이 있었음.
Object-centric 3D and 4D generation
3d나 4d 데이터를 생성하는 것에서 가장 큰 문제점은 데이터가 부족하다는것. 기존 3d 생성모델은 제한된 3d데이터로 훈련이 되기에 품질문제나 다양성 문제가 있었음. 이걸 해결하기 위해 2d 생성모델에서 score distillation이나 그 변형방법들로 pretrained text to image모델을 3d 생성하는걸로 확장시켰음. 최근에는 multi view 이미지를 통한 3d 생성 방법도 나오고 있는데, 합성된 object 데이터셋을 사용해서 이미지 diffusion 모델을finetuning 시키고, 3d reconstruction방법과 결합해서 3d 객체를 생성하는데 사용된다. video 디퓨전 모델도 초기 4d 연구에서 사용되었고, multiview supervision을 제공하기 위한 데이터 생성기로 탐구되었는데, 이런 모델 대부분이 합성 object 데이터셋에서 얻어진 3d prior에 의존해서 object centric 하고 비현실적인 결과가 생성되는경향이 있었음.
4D Reconstruction
NeRF는 3d reconstruction등을 혁신적으로 가능하게 했고, 이거를 dynamic scene으로 확장시키려는 시도들이 있었음. 다이나믹 NeRF에는 크게 두가지 방법이 있었는데, 첫번째는 시간차원을 추가해서 field를 확장하는 방법이고, 두번째는 dynamic scene을 canonical space랑 deformation field 로 (예를 들어 사람의 동작을 표현할떄 canonical space에서는 사람이 기본 자세를 취하고 있고, deformation field에서는 걷는자세로 변형하는 방법을 설명함) 나타내는 방법.
최근에는 3D 가우시안 splatting, 명시적인 가우시안 particle을 이용해 neural rendering 을 수행하는 연구가 있었음. 그래서 이 논문에서는 이 3d 가우시안 splat을 다이나믹 scene representation으로 adopt했음.
Method
텍스트 프롬프트를 입력으로 받아, 애니메이션 객체랑 상세한 배경이 포함된, realistic한 dynamic scene을 생성하는것을 목표로 한다. 이 과정에서 객체와 배경의 상대적 크기와 움직이는 객체와의 상호작용을 현실감있게 구현하는게 목표. 이를 위해 deformable 3d 가우시안 splat을 사용해 장면을 표현한다.
전체적인 과정으로는
- reference 비디오 생성 - 먼저 text video 디퓨전 모델을 사용해 dynamic 장면을 포함한 reference video를 생성한다.
- Freeze-time 비디오 생성 - reference 비디오에서 하나의 프레임을 선택해 비디오 diffusion모델의 condition입력으로 사용한다. 이를 통해 circular camera motion이랑 최소한의 객체 움직임이 있는 freeze time 비디오가 생성이 3됨. 이 비디오는 다이나믹 sceneㅇ르 정지된 상태에서 다양한 시점으로 보는 것 처럼 표현됨.
- 3DGS 재구성 - freeze time 비디오를 기반으로 canonical 3d representation을 reconstruct 한다. 이 단계에서 dynamic scene을 3d 가우시안 splat을 활용해 정적으로 표현한다.
- Temporal deformation 재구성 - reference 비디오에서 객체의 움직임과 일치하도록 temporal deformation을 재구성한다. 이를 통해 dynamic 장면에서 객체가 어떻게 움직이는지 표현할 수 있게 됨.
하나씩 자세히 보자
Dynamic Scene Representation
Deformable 3d 가우시안 splat (D-3DGS)를 사용해 dynamic scene을 어떻게 모델링할
우선 3d Gaussian Splat 이 뭔지부터 알아보자.
3D 가우시안 스플랫은 3D 공간에서 장면을 표현하는 방법이다. 이 방법은 수많은 작은 가우시안 입자들로 장면을 묘사한다. 각 입자는 다음과 같은 정보들을 가지고 있다:
- 위치( x ∈ R³ ): 3D 공간 내에서의 좌표(x,y,z)
- 형태: 가우시안 분포의 크기와 방향을 나타내는 요소로, 이를 위해 공분산 행렬이 사용된다. 이 행렬은 방향을 나타내는 ** quaternion( q ∈ R⁴ )**과 크기를 나타내는 **스케일( s ∈ R³ )**로 분해된다
- 색상( c ∈ R³ ): RGB 색상 값으로, 입자가 나타내는 색깔을 표현한다
- 불투명도( α ∈ R ): 입자의 투명도를 나타내는 값(보통 0~1)
이 입자들은 전체 3D 장면을 구성하며, 각 입자의 정보는 장면의 특정 부분을 묘사하는 데 사용된다. 예를 들어, 입자들이 모여서 하나의 물체나 장면의 일부를 나타낼 수 있음.
그럼 Deformation Field 가 뭔지 알아보자.
Deformation Field는 시간에 따라 장면이 어떻게 변하는지를 설명하는 필드이다. 3D 가우시안 스플랫은 주로 정적인 장면을 표현하지만, deformation field를 사용하면 시간에 따라 장면이 어떻게 변화하는지를 모델링할 수 있다.
- 위치 변화(∆x): 시간 t에서 입자가 원래 위치 x에서 얼마나 이동했는지를 나타낸다
- 방향 변화(∆q): 입자의 방향이 시간 t에서 원래 방향 q에서 어떻게 바뀌었는지를 나타낸다.
wt-deform(x, t) = (∆xt, ∆qt)
t시점에서의 3DGS는 xt = x + ∆xt , qt = q + ∆qt 이런식으로 구해지고, 이 Deformation Field는 MLP를 통해 구현된다.
Generating Reference and Freeze-time Videos
먼저, 텍스트 프롬프트를 입력 받아, 이에 상응하는 reference 비디오를 만든다. 이 reference 비디오에서 한 frame을 선택해, 이 frame을 기반으로 freeze time 비디오를 생성한다. 이 freeze time video는 선택된 frame의 장면을 기준으로 해서 카메라가움직이며 다양한 각도에서 장면을 보여주는 비디오이다.
이를 위한 모델로는 카메라움직임과 상대적으로 정적인 장면을 유지하는데 뛰어난 성능을 보이는 Snap Video Model이 사용되었다.
Frames-conditioned pixel-space video diffusion
Snap Video model은 text video 디퓨전 모델로, pixel 값 자체를 diffusion 시키는 방식으로 작동한다. latent space 에서 작동하는 diffusion moedel 과 달리 motion blur이 적고 gridding effects가 줄어드는 장점이 있다.
추가로 snap video model은 텍스트 프롬프트 뿐만 아니라 임의의 비디오 프ㅡ레임 세트도 입력으로사용할수 있게 변형되었다. autoregressive generation에 유연하다는 장점이 있음.
Context conditioning and prompt engineering
Context embedding -> 각 데이터셋에 고유한 context embedding을 사용해 특정한데이터 분포를 따르는 비디오를 생성할 수 있게 한다.
prompt engineering -> 입력 프롬프트의 시작과 끝에 "카메라가 회전하는 중" 또는 "시간이 흐름"이라는 문구를 추가하면 모델이 생성하는 비디오에서 카메라의 움직임이나 시간의 흐름을 반영할 가능성이 높아진다. 반면 "뛰다" "걷다"이런 단어를 생량하면 모델이 객체의 움직임을 덜 강조하게 된다.
근데 현재 snap video model은 muli view inconsistency( 한 시점에서 본 장면이 다른시점에서 본 장면과 다ㅡㄹㄴ) 혹은 moderate object motion(모델이 원래 의도한 정적 장면이 아닌 예상치 못한 객체의 움직임이 포함되는) 한계가 있었음. --> 이후 reconstruction 단계에서 해결할 예정
Extending View Coverage
Snap Video moel의 원래 출력이 16개 frame으로 구성된 비디오 시퀀스인데, 이게 제한된 view coverage를 가지고 있다는 문제점이 있음. 이걸 확장하기 해 반복적인 autoregression generation을 함. 각 단계에서는 이전에 생성된 8개의 프레임을 기준으로, 모델이 새로운 8개의프레임을 생성하도록 함.(180도 정도까지 반복됨. 아직 360도까지는 어렵다고 함..) 이렇게 하면 이전 프레임에서 시작한 카메라 궤적을 계속 따라서 더 넓은 시야의 view coverage를 만들 수 있음.
Robust Reconstruction of 3DGS from Noisy Freeze-time Videos
Representing multi-view inconsistency as deformation
multi-view inconsistency 문제, 여러 시점에서 같은 장면을 봤을때 일관되지 않은 표현이 발생하는 문제를 해결하기 위한 방법이 제안되었다. Multi-view inconsistency 문제에는크게 두가지 유형이 있는데, 첫번째가 시간적으로는 consistent하지만 기하학적으로 부정확한 비디오, 두번쨰는 객체 움직임이 있는 비디오이다.
이 inconsistency 문제를 해결하기 위해, multi view inconsistency를 deformation field를 사용하는 방법으로, 각 frame에서의 변형으로 간주한다.
구체적으로는 레퍼런스 비디오의 3DGS(기준 프레임에서의 3d scene을 가우시안splat으로 표현한거) 를 비교해서 각 framed에서의 위치와 방향 변화로 표현하는데, wmulti-view(x,k)라는 또 다른 deformation field를사용하는 방식이다. 여기서 x는 canoical position(특정 기준frame에서의 3d 위치), k는 k 번째 frame을 나타내어, wmulti-view 는 해당 frame에서의 새로운 위차와 방향에 대한 변화를 출력한다.
wmulti-view(x, k) = (∆xk, ∆qk) =(k번쨰 frame 에서 위치변화, 방향변화)
그리고 canonical frame(정규 프레임)은 freeze time video를 생성하는데 사용된 reference 비디오의 frame 중 하나로 설정이 된다. 여기서는 deformation field의 출력이 0으로 변형이 없음을 뜻함
optimization 을 할때 wmulti-view 랑 3d 가우시안 splat의 parameter를 동시에 최적화한다.
Image reconstruction loss
변형된 3D 가우시안 스플랫(3DGS)으로 렌더링된 이미지와 정지 시간 비디오의 프레임 간의 차이를 계산한다. 이 손실은 생성된 이미지가 실제 비디오 프레임과 얼마나 일치하는지를 측정함.
여기서:
- \(\mathcal{I}_{\text{GS}}\): 변형된 3DGS로 렌더링된 이미지.
- \(x + \Delta x_{k}\): 정규 위치 \(x\)에서 \(k\)번째 프레임에서의 위치 변화를 포함한 최종 위치.
- \(q + \Delta q_{k}\): 정규 방향 \(q\)에서 \(k\)번째 프레임에서의 방향 변화를 포함한 최종 방향.
- \(s, \alpha, c\): 각각 가우시안의 크기, 불투명도, 색상 파라미터.
- \(P_{k}\): 카메라 투영 행렬, Colmap을 사용해 초기화된 후 3DGS와 함께 finetuning 됨
- \(\mathcal{I}_{k}\): 정지 시간 비디오의 실제 \(k\)번째 프레임.
- \(\|\cdot\|_{1}\): 예측 이미지와 실제 이미지 간 L1norm
small motion loss
\(L_{\text{recon}}\)만 최소화하는 것은 현실적인 3DGS를 얻기에 충분하지 않을 수 있음. 동일한 이미지 렌더링을 생성할 수 있는 변형 필드와 3DGS의 쌍이 무수히 많을 수 있기 때문. 따라서, 변형이 가능한 한 작아야 한다는 가정을 도입
이 손실 항은 변형 필드가 가능한 한 작게 유지되도록 하여, 현실적이고 일관된 3DGS를 생성하는 데 도움을 준다. 여기서:
- \(\Delta x_{k}\): \(k\)번째 프레임에서의 위치 변화.
- \(\Delta q_{k}\): \(k\)번째 프레임에서의 방향 변화.
이 두 가지 손실을 결합하여 모델을 최적화함으로써, 모델은 정지 시간 비디오에서 얻은 프레임과 최대한 일치하는 이미지를 생성하면서도, 가능한 한 작은 변형으로 현실적인 3D 장면을 재구성할 수 있음
Score Distillation Sampling loss
SDS loss는 고품질의 정규 3D 가우시안 스플랫(3DGS)을 생성하기 위한 방법 중 하나다.특히, 다중 뷰 불일치 문제를 해결하고 생성된 이미지가 비디오 확산 모델에 의해 규정된 분포와 일치하도록 보장한다.
카메라trajectory 샘플링
최적화 과정에서, freeze time 비디오의 카메라 trajectory에서 임의로 카메라 위치 \( P_k \)를 선택하고, 이를 약간 변형하여 새로운 카메라 위치 \(\hat{P}\)를 생성한다. 이렇게 생성된 궤적 \(\{\hat{P}^k\}_{k=1,...,16}\)는 정규 카메라 위치와 \(\hat{P}\) 사이에서 균일하게 interpolated됨.
generate video frame
선택된 trajectory를 따라 정규 3DGS를 렌더링하여 비디오 프레임 \( T_{k, \text{can-GS}} \)를 생성한다. 이 과정은 다음과 같은 수식으로 표현됨.
noise 추가 + denoising
SDS 샘플링을 위해, 생성된 이미지 \( T_{k, \text{can-GS}} \)에 가우시안 노이즈를 추가하고, 비디오 확산 모델을 사용하여 한 단계의 디노이징 이미지를 생성한다. 샘플링된 카메라 궤적이 정규 카메라 위치에서 시작하기 때문에 첫 번째 프레임 \( T_{0, \text{can-GS}} \)는 정지 시간 비디오의 해당 프레임 \( I_c \)와 동일하게 됨
이 과정은 다음과 같이 표현됨
여기서:
- \(\epsilon_k\)는 비디오 프레임에 추가된 노이즈를 나타냄
- \(\sigma\)는 현재 확산 단계의 노이즈 레벨을 나타냄
- \(\tilde{I}_k\)는 각 프레임에 대한 디노이징 예측을 나타냄.
sds loss
SDS loss는 생성된 비디오 프레임 \( T_{k, \text{can-GS}} \)와 디노이징된 프레임 \(\tilde{I}_k\) 간의 차이의 제곱합을 최소화하는 방식으로 계산됨
이는 모델이 생성한 이미지와 디노이징 후의 이미지가 최대한 일치하도록 보장하여, 비디오 확산 모델을 통해 얻어진 참조 영상과 일치하도록 정규 3DGS를 최적화한다.