본문 바로가기
Paper Review/Diffusion Model

[논문 리뷰] Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance (arxiv 24/03/26)

by climba 2024. 6. 3.

arxiv : https://arxiv.org/abs/2403.17377

code : https://github.com/KU-CVLAB/Perturbed-Attention-Guidance

 

Before reading

  1. 논문 제목을 보고 해당 모델이 어떤 방법론을 바탕으로 할지 가설을 세워봅시다.

Rectifying이란 단어를 몰랐는데, 바로 잡는다는 뜻이다. self-guidance와 같이 스스로 바로잡는(?) 아마 cfg도 self guidance 느낌이니 그런 느낌이지 않을까 생각한다.(+ perturbed attention guidance를 덧붙인..)

  1. 논문의 main figure를 보고 전체 흐름을 유추해봅시다. 

Figure가 정말 기가 막히다. CFG를 쓰는 논문을 정말 많이 보았지만, 이 그림이 CFG를 가장 잘 표현한 것 같다. 또한 더불어 PAG가 하려는 것도 뭔지 한 눈에 알기쉽게 도식화 되어 있는 것 같다. 아마 SAG에서 guidance로 줄 때 self-attention 이 등장하였는데, 그 self attention에서 gaussian blurring을 활용하지 않고, 이와 비슷(?)한 perturbed self-attention을 활용해 cfg와 같이 guiding을 하는 논문이지 않을까 생각한다.

1. Introduction

  1. 논문이 다루는 task : diffusion guidance method
  2. 해당 task에서 기존 연구 한계점 : 

cg / cfg : they require additional training or the integration of external modules, often diminish the diversity of the output samples, and are unavailable in unconditional generation. (SAG와 비슷한 얘기)

Diffusion models, Sampling guidance for diffusion models(SAG), Self-Attention



3. 제안 방법론

- Main Idea

SA(Self-Attention)와 PSA(Perturbed Self-Attention).

Perturbed attention이 특별한게 아니라 identity matrix I를 사용해 Query와 Key의 값을 생략하는 것이다. (Value vector만 활용)

알고리즘으로 보면 위와 같은데, Model이 기존의 SA diffusion model이고, Model'이 PSA diffusion model이다.

input x_t를 Model과 Model'에 통과시켜서 구한 epsilon_t, epsilon^_t를 Eq.10 (like CFG)를 이용해 guiding 해준다.

이때 Eq. 10은  아래와 같다.

 

L_g는 energy function의 loss function으로 본 논문에서는 condition을 줄 때 desired distribution의 output y와 undesired distribution의 output y^를 이용해 discriminator D를 정의하고, 아래와 같이 표시한다.(Energy function의 gradien로 표기하기 위함)

D의 negative log likelihood loss를 구해보면 아래와 같다.

이를 Eq.10의 첫번째 줄에 대입하면 두번째 줄이 나오는 것이다.

 

다시 Eq. 10으로 돌아와 결국 epsilon^~_t는 아래와 같이 표시될 수 있는데, 좌변은 cfg의 식과 유사하고 이때 epsilon(x_t) - epsilon^(x_t) guidance signal로서 delta^_t로 표현할 수 있다.

cfg와의 차이가 있다면, condition c를 공집합으로서 줬다 뺐다(?) 해야하는데, 여기서는 그럴 필요가 없이 전부 제공하면 된다.

class conditional version of Eq 10

 

epsilon^의 perturbation 전략은 어느것이든 사용할 수 있지만(cfg : 공집합, sag : gaussian blur), 본 논문에서는 self-attetion map의 value만을 사용하여 perturb한다고 한다.

value만 활용하는 이유는 query-key : structure, values : appearance를 나타낸다는 선행 연구들이 있었음 -> appearance 즉 value를 perturbing하면 OOD issue가 나올 수 있음 (paper의 4.2 참고)

 

최종적으로 알고리즘과 figure를 다시보면 다음과 같다.

4. 실험 및 결과

Use NVIDIA GeForce RTX 3090, NVIDIA RTX A6000 for image sampling

- Baseline

ADM, SD

- Results

PAG + CFG가 FID에서는 제일 좋지만, IS는 CFG만 쓴게 더 좋다. (아마 그만큼 정제된 이미지들만 생성해서 diversity가 낮아지는 이유인가..?)

 

downstream task에서도 잘한다.

 

 

Ablation study로 masking strategy를 identidy matrix로 대체, random하게, random off-diagonal를 비교(기타 perturbation은 Appendix D.1 참고)

 

PAG scale에 따른 비교

PAG scale이 커질수록 artifacts가 적어지고 퀄리티가 올라감.

 

- Conclusion (What I learned)

SAG와 같이보면 좋은 것 같다.

성능도 되게 좋고, 논문도 잘 쓰여져있어서 배울 점이 많았던 것 같다.

무엇보다 시각화 등을 너무 잘해서 읽기 편했고 코드를 꼭 봐야겠다.

댓글