안녕하세요. KDST팀 김현수 입니다.

 

제가 이번에 소개드릴 논문은 최근 3D Reconstruction, 3D Rendering 분야에서 NeRF를 제치고, 메인 아키텍쳐로 자리잡은 3D Gaussian Splatting 입니다.

arxiv : https://arxiv.org/abs/2308.04079

github : https://github.com/graphdeco-inria/gaussian-splatting

 

기존에 3D reconstruction 분야에서는 NeRF, Mip-NeRF, Mip-NeRF 360 등 NeRF 기반의 방법론들이 많이 연구되어 왔습니다. 그러나 NeRF의 가장 큰 단점은 시간이 오래 걸린다는 것이고, 이는 real-time rendering 등을 수행하기에 적합하지 않습니다.

InstructNGP 등은 inference 시간이 별로 안 걸리지만, Mip-NeRF 등에 비해서 고해상도의 reconstruction을 할 수 없다는 단점이 있습니다.

 

본 논문에서는 3D Gaussian을 활용해 high quality real-time rendering을 가능하게 하는 방법론을 제안하고 있습니다.

우선 3D gaussian이란 무엇일까요?

 

아래 그림은 고등학교때 배운 정규분포(1D Gaussian)와 이를 2차원으로 표현한 2D Gaussian의 형태입니다.

1D Gaussians(좌) vs 2D Gaussians(우)

3D Gaussian도 이와 유사하게, 한 차원만 추가해주면 됩니다. 이는 구 형태로 생겼는데, 우측 그림의 3D Gaussian Visualization을 자세히 보면, 숲이 여러개의 초록색 구 형태가 합쳐져서 구성되어 있음을 알 수 있습니다.

3D Gaussian(좌) vs 3D Gaussian in 3DGS

 

위에서 설명했듯, 본 논문에서는 이러한 3D Gaussian 즉, 구 형태를 최적화하여 3D scene을 표현할 수 있도록 학습합니다.

 

아래 그림은 3D Gaussian이 학습되는 flow입니다.

 

입력으로 들어 오는 것은 한 object를 여러 각도에서 찍은 image들 입니다. 이를 SfM 알고리즘을 이용하여 SfM points들을 찾아내어 Gaussian들의 initialization parmeter로 활용합니다.

 

SfM 알고리즘이란 Photo Tourism: Exploring Photo Collections in 3D 논문에서 제안한 알고리즘으로, 하나의 대상을 촬영한 여러장의 입력 이미지로부터, 이 대상의 representation을 잘 나타낼 수 있는 point cloud들을 찾아내는 알고리즘입니다.

Gaussian Splatting에서는 이렇게 찾은 point들을 Gaussian의 초깃값으로 사용합니다.

조금 더 구체적으로는 이를 Gaussian의 평균값(M)으로 초기화하는데, 이 외에도 S(covariance), C(color), A(opacity) 등을 초기화해줍니다.

이렇게 Gaussian을 초기화해줬으면, input으로 받은 각 이미지들에서의 각도와 함께 이를 projection 시켜주고, 이를 미분가능한 Tile Rasterizer를 활용해 loss를 계산할 수 있는 이미지 I 형태로 만들어줍니다.

알고리즘으로 보면 아래와 같습니다.

이렇게 구한 이미지 I와 우리가 원래 알고있던 ground truth I hat을 이용해 loss를 계산해줍니다. 이때, loss function으로는 L1 loss와 SSIM loss를 함께 사용합니다.

loss를 계산한 뒤 rasterizer가 미분 가능하기 때문에 역전파를 통해 gaussian들의 각 파라미터(M,S,C,A)를 업데이트 해줍니다.

이때 Adaptive Density Control이란 알고리즘이 작용하는데, Gaussian의 크기가 너무 크거나 작으면 이를 복제 / 분할 하여 표현하고자 하는 representation을 잘 담을 수 있게 만들어주는 것입니다.

Gaussian의 공분산이 너무 크면 이를  Split해주고, 너무 작으면 이를 Clone하여줍니다.

 

전체적인 프로세스를 알고리즘과 함께 보면 아래 그림과 같습니다.

 

실험 결과는 정말 놀라운데, 이전에 가장 속도가 빨랐던 InstructNGP는 물론, SOTA 모델이였던 Mip-NeRF 360 보다도 훨씬 좋은 3D reconstruction 성능을 보여주고 있습니다. 특히 디테일한 부분도 3DGS는 굉장히 잘 잡는 것을 볼 수 있습니다.

 

정량 지표 역시 다른 기존의 모델들 보다 훨씬 좋음을 보여주고 있습니다.

 

더 많은 실험 결과 및 real time rendering 결과(video)는 공식 프로젝트 사이트 혹은 논문을 참고하시기 바랍니다.

읽어주셔서 감사합니다.

안녕하세요. KDST팀 김유진입니다. 6월 14일에 진행했던 Image Editing에 대한 세미나 내용을 간략하게 요약해보도록 하겠습니다. 이번에 소개해 드릴 논문은 Text-to-Image model 기반의 Image editing 연구로 유명한 "Prompt-to-prompt image editing with cross-attention control", "Plug-and-Play Diffusion Features for Text-Driven Image-to-Image Translation" 입니다.

Diffusion model기반의 Image editing을 수행하기 위한 방법론은 크게 3가지로 나눌 수 있습니다. 

  1. Training-based: 모든 아키텍처를 training하여 target data distribution에 대해서 stable하게 학습할 수 있는 방법
  2. Testing-Time Finetuning-based: pre-trained diffusion model을 target data로 finetuning 하는 방법 또는 특정 identifier token의 embedding만을  optimize하는 방법 
  3. Training and Finetuning Free-based: Source이미지나 target 이미지가 필요 없으며, low-cost로 image editing을 수행하는 방법

Diffusion based Image editing approaches

그 중에서도 오늘 소개해드릴 방법론은 3. Training and Finetuing Free-based Image editing 에 해당하는 연구이며, 그 중에서도 Text-to-Image diffusion model 기반의 image editing으로 유명한 P2P, PnP를 다룹니다. 

(ICLR-2023, notable top-25%) Prompt-to-prompt image editing with cross-attention control


본 논문에서는 기존의 Text-to-Image model (DALLE, Imagen etc) 들은 일반적으로 source 이미지의 semantic information을 유지하며 세밀한 부분을 control하는것에 큰 어려움이 있음을 motivation으로 주장합니다. 

또한 기존의 Image editing 방법론들은 masking 기법으로 수정하길 원하는 range를 heurisitic하게 정하여 원하는 부분만을 control 하는데, 이러한 방법론은 source image에 따라서 hand-craft 방식으로 mask를 지정해줘야하는 limitation이 존재한다고 주장합니다. 
본 논문에서는 번거로운 기법 없이, Prompt상에서의 textual editing 만으로도 원하는 부분만을 수정할 수 있으며, 이는 Diffusion process에서 오직 cross-attention map을 변경해주는 연산만을 통해서 구현할 수 있음을 주장하고 있습니다. 

Prompt-to-Prompt editing capabilities

P2P 논문에서는 위 그림과 같이 3가지의 경우에 대해서 image editing을 수행할 수 있다고 합니다. 

 

1. Word swap: Source prompt의 특정 단어를 원하는 단어로 교체하는 경우
(ex: $P$=“a cat riding a bicycle” to $P^∗$=“a cat riding a car”)

 

Word swap 기법은 Gaussian distribution으로부터 random initalize된 동일한 image latent로부터 각 각 source prompt, target prompt로 이미지를 생성한 후, source prompt로부터 생성한 이미지의 cross-attention map을 target prompt로 생성한 이미지의 cross-attention map에 주입 (injection) 하는 방법입니다. 예를 들어, "A cat riding a bicycle" 이라는 source prompt에서 bicycle을 car로 editing을 수행하고 싶다면, "bicycle" 이라는 text에 해당하는 cross-attention map을 "car"에 해당하는 cross-attention map 으로 변경합니다. cross-attention map을 injection 하는 시점은, Diffusion의 denoising 스텝에서 특정 time step이 $tau$ 이하일 때에만 수행합니다. 

Word swap operation
Word swap operation visualization

특정 $tau$ 를 점차 T시점에서 에서 0 시점으로 옮길 때 editing 되는 이미지의 결과는 아래와 같습니다. 

Attention injection via a varied number of diffusion steps in a word swap operation

 

2. Prompt Refinement: Source prompt에 원하는 스타일의 prompt가 추가되는 경우
(ex: $P$=“a castle” to $P^∗$=“children drawing of a castle”)

 

Source prompt에 원래 존재했던 토큰들에 대한 cross-attention map은 유지한 채로, target prompt에서 새롭게 추가된 text에 대한 cross-attention map 만을 새로 주입하는 방법론입니다. Prompt Refinement를 수행하면, source image의 semantic information은 유지된 채로, 추가된 target prompt의 스타일만이 입혀지게 되는 효과가 나타납니다. 

Prompt Refinement operation
Prompt Refinement operation visualization
Image editing by prompt refinement

 

3. Attention Re-weighting: Source prompt의 특정 단어 영향력을 강화/약화하는 경우

(ex: $P$="The boulevards are crowed today")

Source prompt의 cross attention map에서 영향력을 바꾸고 싶은 text에 해당하는 cross attention map에 곱해지는 scale을 조정하며 image editing을 수행합니다. 이때, scale parameter c는 $c\in[-2,2]$ 제약조건을 따릅니다. 

Attention Re-weighting operation
Attention Re-weighting operation visualization
Text-based editing with fader control

이처럼 prompt-to-prompt 방법론은 모델 아키텍처를 따로 training이나 fine-tuning 시키지 않고도 단순히 text editing과 그에 따른 Cross-attention map injection 연산을 통해, source image의 semantic information을 유지한 채, 원하는 스타일로 editing할 수 있음을 보입니다. 흥미로운 다른 결과들은 논문을 참조해주세요.