Gradient based optimization 논문들을 찾아보다가 발견한 논문. DragGAN이나 DragDiffusion 등을 몇 번 들어봤었는데, Drag xxx의 sota model인 것 같다. 이해하는데 꽤 어려웠지만, 배울점이 많은 논문이였다.
arxiv : https://arxiv.org/abs/2405.15769
code : x
Before reading
- 논문 제목을 보고 해당 모델이 어떤 방법론을 바탕으로 할지 가설을 세워봅시다.
- ~~~ Anything이란 제목을 그닥 좋아하지는 않지만 manipulate anything이라니 .. 방법이 굉장히 궁금했다. one step이란 단어는 처음에는 눈에 들어오지 않았는데, related work를 읽으며 기존에 drag xx 방식이 전부 몇십 step의 optimization이 필요하단 걸 알게 되었고, 다시보니 제목이 매력적으로 느껴졌다.
- 논문의 main figure를 보고 전체 흐름을 유추해봅시다.
- 이해되지 않는 파트가 있나요? 있다면 미리 표시해두고 집중적으로 읽어봅시다
One-step Warpage Optimization, Bilarteral Nearest Neighbor Interpolation, Consistency Preserving 이렇게 총 세 가지의 메소드를 제안하는데 마지막 consistency preserving은 대충 뭔지 알 것 같고 1번을 구체적으로 어떻게 했는가와 2번이 뭔지(왜 필요한지)가 궁금하다.
1. Introduction
- 논문이 다루는 task : drag guided image editing
- Input : dragging instruction + image
- Output : edited image
- 해당 task에서 기존 연구 한계점
DragDiffusion, FreeDrag, Dragondiffusion : need n-step(about 50~80) optimization
그러나, Fast Drag는 one-step optimization이 가능하다! + preventing image distortions
2. Related Work
2-1. Text-based Image Editing : DiffusionCLIP, P2P, Imagic, InstructPix2Pix, Null-text inversion
2-2. Drag-based Image Editing
2-2-1. Motion based
DragGAN, DragDiffusion, GoodDrag, StableDrag, DragNoise, FreeDrag
2-2-2. Gradient based
DragonDiffusion, DiffEditor, SDEDrag(one-step but still time consuming)
3. 제안 방법론
- Main Idea
제안하는 방법론은 크게 3가지이다.
1. One-step Warpage Optimization
2. Bilateral Nearest Neighbor Interpolation
3. Consistency Preserving
1. One-step Warpage Optimization
warpage는 뒤틀림, 왜곡이라는 뜻인데, Latent Warpage Function(LWF)을 이용하여 latent space 상에서 drag editing을 어떻게 잘 (뒤틀림이나 왜곡을 최대한 자연스럽게) 할 것인지를 표현한다는 것이다.
수식으로 보면 위와 같은데 v_j가 결국 drag instruction이라고 생각하면 된다.
user가 입력으로 제공하는 것은 k개의 drag instruction들로 구성된 set D와, mask region 안에 있는 feature points들로 구성된 set P이다.
결국 이 함수는 j개의 feature points들을 어떤 warpage vector로 mapping시켜야하는지 결정해야한다. 이를 기하학적으로 그려보면 아래 그림과 같은데,
예를 들어 특정 drag instruction d_i가 s_i(handle point)와 e_i(target point)로 표현된다고 해보자. 그럼 위와 같이 s_i 말고도 수정되어야하는 point p_j들이 존재할 것이고, 이 p_j와 s_i의 유클리디안 거리를 통해 3번식의 weight를 결정한다.(아래 식과 같이) (유클리디안 거리가 멀수록 w의 크기는 작아진다 -> 당연히 거리가 멀면 영향을 적게 받으므로)
바꿔 말하면 p_j에서의 drag instruction vector v_j는 아래와 같이 표현할 수 있다.
그리고 람다는 결국 Figure 3의 그림에서 닮음 조건을 이용하면 아래와 같이 표현할 수 있다.
이렇게 해서 각 point들에 대한 warpage vector v_j를 얻는 것이다.
이렇게 얻은 v_j들을 원래 데카르트 좌표계에서 각 포인트들의 원래 x, y 좌표에다가 더해주면 아래와 같이 새로운 feature point들을 구할 수 있다.
그러나 이렇게 계산한 새로운 feature point들도 결국 latent space에서 한 것이기 때문에, 실제 pixel space에서는 아래 Figure 4와 같이 Null 값을 포함할 수 있다.
2. Bilateral Nearest Neighbor Interpolation
이를 해결하기 위한것이 Bilateral Nearest Neighbor Interpolation이다.
이름은 어렵게 써놨지만, 결국 상 / 하 / 좌 / 우 네 방향에서 가장 가까운 Null이 아닌 value들을 이용해 interpolation하겠다는 것이고 수식은 아래와 같다.
3. Consistency Preserving
마지막으로 Consistency Preserving은 semantic information을 더 잘 보존하기 위해 inversion에서 뽑은 attention Key와 Value를 sampling에서 활용하겠다라는 것인데, 이런 컨셉은 많이 쓰였던 것 같아 novelty가 있는지는 잘 모르겠다. 근데 또 ablation test를 보면 이게 되게 critical하다.
- Contribution
1. One-step Warpage Optimization
2. Bilateral Nearest Neighbor Interpolation
3. Consistency Preserving
을 제안해서 drag instruction을 one step으로 잘 했다!
4. 실험 및 결과
- Dataset
Drag-Bench Dataset (211 different types of images with 349 pairs of handle and target points)
- Baseline
- Results
Ablation test 결과 (Fig 8, 9 ,10)
- Conclusion (What I learned)
기하학적으로 drag points들의 관계를 정의한게 인상깊었다. 처음 읽었을때는 좀 낯설어서 어렵게 느껴졌는데, 두번째 볼 때는 더 잘 이해된 것 같다.
댓글