본문 바로가기

논문 리뷰/Diffusion Model

Null-text Inversion for Editing Real Images using Guided Diffusion Models

이미지 편집을 위한 Diffusion Inversion

 

Project Page

 

 

 

Abstract

본 논문에서는 정확한 반전 기법을 도입하여 이미지의 직관적인 텍스트 기반 수정을 용이하게 한다.

  • 무작위 노이즈 샘플을 단일 입력 이미지에 매핑하는 것이 아니라 단일 pivot 노이즈 벡터를 사용하고 그 주변을 최적화하는 pivotal 반전
  • 입력 텍스트 임베딩이 아닌 classifier-free guidance에서 사용하는 무조건 텍스트 임베딩만 수정하는 null-text 최적화

 

 

 

 

Introduction

Classifier-free guidance와 관련된 거의 모든 작업들이 조건부 부분에만 집중하지만, 본 논문의 연구진들은 무조건 부분에 의해 유도되는 상당한 효과를 인식했다.

 

프롬프트 반전을 위해 무조건 부분에 사용되는 임베딩을 최적화하며, 빈 텍스트 문자열의 임베딩을 최적화된 임베딩으로 대체하기 때문에 null-text 최적화라고 한다.

 

DDIM 반전은 DDIM 샘플링을 역순으로 수행하는 것으로 구성되는데, 무조건부의 경우에는 잘 작동하지만 조건부의 경우에는 정확성이 낮다. 그래도 이것이 유망한 출발점이 될 수 있다고 생각하고, DDIM 반전에서 얻은 노이즈가 있는 잠재 코드 시퀀스를 pivot으로 사용한다. 

 

그런 다음 이 pivot을 중심으로 최적화를 수행하여 개선되고 더 정확한 반전을 산출한다. 이 pivotal 반전은 가능한 모든 노이즈 벡터를 단일 이미지에 매핑하는 것을 목표로 하는 기존 연구와 대조적이다.

 

 

 

Method

Prompt-to-Prompt를 baseline으로 사용함.

소스 프롬프트 P는 사용자가 제공하거나 기성 캡션 모델을 사용할 수도 있음.

 

두 가지 주요 접근 방식

  • DDIM 반전은 최적화를 위한 좋은 시작점이 될 수 있음
  • Null 임베딩을 최적화하여 모델과 조건부 임베딩의 튜닝을 피하면서 정확한 재구성이 가능함

 

 

Background and Preliminaries

텍스트 유도 확산 모델의 네트워크 εθ의 목표 :


본 논문의 목표는 정확한 재구성을 달성하는 것이기 때문에 결정론적인 DDIM 샘플링을 사용함.


Classifier-free guidance

 

 


DDIM inversion

 

 

Pivotal Inversion

해당 논문에서 영감을 받아 효율적인 반전을 가능하게 하는 좋은 근사치인 pivotal 노이즈 벡터를 중심으로 최적화를 수행하는 것을 목표로 한다.

 

Classifier-free guidance를 이용한 조건부 모델의 경우 DDIM 반전을 하면 오류가 누적돼 얻은 노이즈 벡터가 가우스 분포를 벗어날 수 있다.

 

Guidance scale w = 1로 DDIM 반전을 수행하면 정확성은 낮지만 편집성은 높은 원본 이미지의 근사치의 궤적(z*0 → z*T)을 얻을 수 있다. (w가 높을수록 편집성 ↑, 정확성 ↓)

 

이 z*T를 w > 1의 값으로 다시 샘플링하고, 매 단계마다 pivot 궤적과의 최적화를 수행한다.

 

Null-text optimization

최적화를 위해 모델이나 텍스트 인코딩의 가중치를 미세조정하면, 이전에 학습된 내용을 손상시킬 수밖에 없다. 대신에, 본 논문에서는 모델과 텍스트 인코딩의 가중치를 건드리지 않고 classifier-free guidance의 무조건 임베딩 ∅만을 최적화한다.

 

Prompt-to-prompt와 무조건 임베딩 최적화를 이용하면 고품질 재구성과 높은 편집성을 달성할 수 있지만, 당연히 모델을 미세 조정하는 것보다는 표현력이 낮기 때문에 효율적인 반전 체계가 필요하다.

 

Global null-text 최적화로써, 각 step t에 대해 각각 다른 null 임베딩 ∅t를 최적화하는 것이 pivotal 반전에 적합했다. 이전 단계의 ∅t+1은 ∅t의 초기화가 된다.

 

Pivotal 반전과 합치면 

 

최적화가 끝나면 업데이트


여기까지도 이해가 잘 안될텐데 알고리즘과 그림을 보면 이해할 수 있다.

일단 ∅t, z̄t로 zt-1을 얻고, zt-1을 pivot 벡터와 비교하여 ∅t를 N번 최적화한다.

최적화된 ∅t는 ∅t-1, zt-1은 z̄t-1이 됨.

 

이렇게 얻은 z̄T(= z*T)와 ∅의 집합을 이용하여 실제 이미지를 편집할 수 있고 다른 케이스에서도 재사용 가능.

 

 

 

Results