본문 바로가기
Paper Review/Diffusion Model

[논문 리뷰] MasaCtrl: Tuning-Free Mutual Self-Attention Control for ConsistentImage Synthesis and Editing (ICCV 2023)

by climba 2024. 2. 11.

arxiv : https://arxiv.org/abs/2304.08465

code : https://github.com/TencentARC/MasaCtrl

 

Before reading

  1. 논문 제목을 보고 해당 모델이 어떤 방법론을 바탕으로 할지 가설을 세워봅시다.
    1. -> Mutual Self-Attention이 뭘까...
  2. 논문의 main figure를 보고 전체 흐름을 유추해봅시다.
    1. 이해되지 않는 파트가 있나요? 있다면 미리 표시해두고 집중적으로 읽어봅시다.

1. Introduction

  1. 논문이 다루는 task : conditional image generation
    1. Input : image + prompt
    2. Output : image
  2. 해당 task에서 기존 연구 한계점

reference로 주어진(conditional) image의 object를 보존하면서 prompt에 알맞게 editing하는 능력이 부족(특히 non rigid prompt의 경우) + 가능하더라도 시간이 오래걸리고 추가 학습이 필요

 

아래 사진처럼 random seed를 fix하더라도 image의 object가 바뀜(고양이의 종류가 달라짐)

2. Related Work

Text-to-Image Generation : GLIDE, VQ-Diffusion, LDM, DALLE2, Imagen

 

Text-guided Image Editing

  • Blended Diffusion, GLIDE : image의 local regions을 수정하기 위해 extra mask필요
  • DiffusionCLIP : local detail까지 수정하지는 못함
  • Prompt-to-Prompt, Plug and Play Diffusion : source image를 유지하려함, 역동적이거나 복잡한 editing은 잘 못함
  • Imagic : careful optimization 및 finetuning 필요(time consuming and unifriendly for ordinary users)

3. 제안 방법론

- Main Idea

전체적인 pipeline 및 알고리즘은 아래와 같다.

중점적으로 봐야 할 부분은 크게 두가지 인데, 1) Mutual Self-Attention, 2) Mask-Guided Mutual Self-Attention이다.

1) Mutual Self-Attention

Mutual Self-Attention은 Source image I_s를 reconstruct 하는 denosing process에서, self-attention layer에 있는 projected key features K_s와 projected value features V_s를 target image의 denoising process에서 self-attention layer에 있는 K, V 대신 사용 것이다. (위 알고리즘의 EDIT function)

그림으로 보면 좀 더 이해가 쉬운데, 아래 Figure 5의 (a)와 같은 방식이다.

이때 모든 timestep과 layer에 대해서 이러한 mutual attention을 적용하는 것이 아닌, 특정 timestep 및 layer에만 이를 적용하고, 그 외에는 기존의 Key, Value를 그대로 사용한다.

(이렇게 하는 이유는, 너무 다 K_s와 V_s로 바꿔버리면 기존의 Source image를 reconsturction하는 것과 동일한 효과가 날 수 있기 때문이다.)

EDIT function의 수식

 

아래 Figure 4의 (a)에서도 보면, denoising process의 초반에는 target image의 Layout이 아직 생기지 않은 것을 볼 수 있다.

(b)에서는 Encoder의 Query feature는 running horse나 standing horse나 비슷한 반면, Decoder에서는 확연한 차이를 보인다. 이러한 이유로 Mutual self-attention을 Unet의 Decoder에서만 수행하는 것이다.

2) Mask-Guided Mutual Self-Attention

다만 위 방법으로 Mutual Self-Attention을 사용하는 것은 object와 background가 너무 비슷한 경우 image 생성이 실패하는 경우가 있다. 이를 해결하기 위해서 하나의 이미지를 foreground와 background로 segment하고, 각각의 query contents를 따로 적용한다.

아래 Figure 5의 (b)를 다시보면, 각각의 token에 대한 cross attention maps을 구하고 foreground object(horse)에 대한 것을 mask(M_s)로 사용한다. (background는 1 - M_s)

이렇게 각각의 M_s(foreground mask)와 1-M_s(background mask)를 구해서 사용하면, image I의 object를 I_s의 object region으로 제한해서 정보를 query할 수 있다.

이를 수식으로 보면 아래와 같다.

final attention output

 

논문에서 제시한 이러한 방법들은 단순히 Stable Diffusion에서만 사용하는 것이 아닌, ControlNet이나 T2I Adapter과 연동해서 사용할 수 있다.

 

핵심은 이러한 방법론이 별도의 모델 finetuning이나 textual embedding optimizing이 필요 없다는 것이다.

- Contribution

  • a tuning-free(optimization, finetuning) mutual self attention control method
  • non-rigid consistent image synthesis and editing 가능

4. 실험 및 결과

- Baseline

  • StableDiffusion v1.4
  • Anything-V4

- Results

P2P, SDEdit, PnP와 비교했을때, target prompt를 가장 잘 따른다.

 

T2I-Adapter과 같이 사용한 것도 seed를 단순히 고정시켜놓는 것 보다 훨씬 object를 잘 보존하는 것을 볼 수 있다.

 

Anything-V4 + MasaCtrl

mutual self-attention의 starting step / layer 비교 실험

댓글