안녕하세요. 안녕하세요. KDST팀 김유진입니다. 9월 27일에 진행했던 Point-based image editing에 대한 세미나 내용을 간략하게 요약해보도록 하겠습니다. 이번에 소개해 드릴 논문은 CVPR 2024에서 Highlight를 받은 "DragDiffusion: Harnessing Diffusion Models for Interactive Point-based Image Editing" 입니다.
Point-based image edit이란 사용자가 먼저 주어진 이미지에서 Handling point와 Target point pair를 여러 개 지정 후, 모델이 해당 이미지에서 의미론적으로 일관된 편집을 수행하여 Handling point의 content를 target point로 이동하여 이미지를 수정하는 방식입니다. 아래의 동영상은 DragDiffusion의 official github에서 참고한 Point-based image editing 과정을 보여줍니다.
Point-based image editing에서 반드시 만족해야하는 특징은 첫번째로, 수정이 되길 원하는 부분에 대해서 masking 작업을 수행 후, 해당 region을 제외한 나머지 region의 content는 원본 이미지의 content를 유지해야하 합니다. 두번째로, Handling point 의 content가 Target point에서 유지되도록 이미지를 수정해야합니다.
DragDiffusion
DragDiffusion은 Point-based image editing을 위해 image latent를 직접적을 optimize하며 생성된 이미지의 spatial layout을 결정하는 방법론입니다. DragDiffusion은 아래와 같이 3가지의 과정을 거쳐 Point-based image editing을 수행합니다.
- Identity-preserving Fine-tuning
첫번째로, 이미지를 수정하기 전, original image의 content를 유지하면서 원하는 region에서의 수정을 가능하게 하기 위해, Diffusion model의 UNet (denoiser)을 fine-tuning 합니다. 해당 프로세스의 목표는 UNet이 입력 이미지의 특징을 더 정확하게 인코딩하여 편집 과정 전반에 걸쳐 이미지의 동일성을 일관되게 유지하는 것입니다. Cost-efficient한 fine-tuning을 위해서 DragDiffusion은 LoRA 기법을 활용하며, 목적함수로는 input image와 생성된 이미지의 noise reconstruction loss를 최소화하는 방향으로 fine-tuning 됩니다.
논문의 저자들은 ablation study에서 찾아볼수 있듯이, 실험적으로 최적의 LoRA Finetuning epoch을 찾았으며, 80 epoch동안 UNet을 fine-tuning 합니다.
- Diffusion latent optimization
두번째로, Fine-tuned UNet을 활용하여, point-based image editing을 수행합니다. 저자들은 pixel space에서의 이미지 수정을 제어하기 위해 직접적으로 image latent를 optimization합니다. 이 때 latent optimization은 모든 denoising time step에 해당하는 latent가 아닌 특정 시점 $t$에 해당하는 time step의 latent 만을 optimize한다는 특징이 있습니다. (저자들은 실험을 통해 적절한 time step $t$를 선택하고있으며 $t=35$, 이는 ablation study에서 확인하실 수 있습니다. ) Diffusion latent optimization 과정은 크게 1) Motion Supervision과 2) Point Tracking 과정으로 구성되어있습니다.
Motion Tracking은 사용자가 지정한 이미지 내에서의 특정 지점의 이동을 감독하여 정확한 편집을 보장하게 하는 방법입니다.
Motion tracking의 objective function은 아래와 같이 두가지의 term으로 구성되어있습니다.
1) 첫번 째 term은 handle point $(h_i)$와 점차 target point $(g_i)$ 를 향해 이동하고 있는 점 $q+d_i (d_i=(g_i-h^k_i) / ||g_i-h^k_i||$ 에 해당하는 content를 handle point의 content로 유지시키는 역할을 수행합니다. 여기에 $sg(F_q(\hat{z}^k_t))$는 $k$ iteration 상에서의 handle point $q$에 해당하는 feature에 대해 "stop gradient" 연산을 취하여, 해당 handle point의 반경 r1 region의 content를 ground truth로 지정하겠다 라는 의미를 가집니다. 따라서 점차 target point를 향해 이동하고 있는 $q+d_i$에 해당하는 반경 r1 region에서의 content가 원래 handle point에서의 content와 같도록 유지하도록 규제하는 term임을 알 수 있습니다. 따라서 에폭이 진행될수록, $q+d_i$ 는 점진적으로 $g_i$로 움직이게 될텐데, 이렇게 point가 이동하는 동안 original content를 유지하도록 supervision해주게 됩니다.
2) 두번째 term은 masking 되지 않은 부분의 content를 orignal content 와 일치시켜주는 역할을 수행합니다. $(1-M)$ 는 mask를 씌우지 않은 부분 (배경이나 글로벌한 region을 의미) 에 대해서는 orignal image $\hat{z}^0_{t-1}$ 의 content 와 일치시켜주게 됩니다.
따라서 motion supervision은 handle point에서 점차 target point로 이동하는 부분에 대한 content를 원래의 handle point에서의 content와 일치하도록 감독하며, masking을 하지 않은 부분에 대해서는 input image의 전체적인 content를 유지하도록 latent optimization을 수행합니다.
Motion supervision 이 한 스텝 이루어지면 그다음에는 point tracking 과정이 한스텝 이루어집니다.
Point tracking은 각 motion supervision 단계 이후에 포인트 추적을 수행하여 핸들 포인트를 업데이트 하는 과정입니다. 각 핸들 포인트 $ℎ_𝑡^𝑘$을 각 $Ω(ℎ_𝑡^𝑘,r_2)$ 내에서 가장 가까운 이웃 검색으로 업데이트합니다.
Point-based image editing 의 목표 중 하나는 handle point가 지속적으로 target point 방향으로 이동하여 target point와 handle point가 중첩되도록 하는 것입니다. 따라서 Motion supervision 후에 handle point가 target point로 향할 수 있도록 지속적으로 tracking을 해주어야합니다.
point tracking은 input image의 latent $z_t$를 UNet에 흘렸을때 얻은 feature map $F$에서의 초기 handle point $F_{h^0_i}(z_t)$ 와 가장 $L1$ distance가 가장 가까운 포인트로 handle point 를 update해주게 됩니다. 이런식으로 handle point는 점차적으로 target point와 중첩되는 방향으로 이동하게 됩니다.
따라서 Diffusion latent optimization은 Motion tracking 한스텝, Point tracking 한스텝 을 반복적으로 진행하며 이루어지게 됩니다.
- Reference-latent control
마지막으로는, original image와 edited image와의 consistency를 개선하기 위해서, self-attention 모듈의 속성을 활용하여 denoising process를 제어하여 원본 이미지와 수정된 결과 간의 일관성을 높입니다. 사실 첫번째 단계에서 LoRA 기반의 UNet fine-tuning을 통해 original image와의 consistency를 유지하는 노력을 했으나, 저자들은 한차례 더 튜닝을 해주는 단계를 거칩니다. 노이즈 제거 프로세스에서 UNet의 self-attention 모듈을 순방향으로 전파하는 동안 $\hat{z}^t$에서 생성된 Key 벡터와 Value 벡터를 $z_t$에서 생성된 벡터로 대체합니다. 해당 프로세스는 original image의 content 보존에 매우 효과적임을 ablaton study에서 확인하실 수 있습니다.
저자들은 다양한 예시를 통해 DragDiffusion의 우수성을 입증하고 있습니다. 아래의 실험결과들은 마스킹 영역에서의 point based image editing이 매우 효과적으로 동작하고 있음을 보입니다. 저자들은 baseline으로 DragGAN를 선택하여 수정된 이미지 성능을 비교하고 있으며, DragDiffusion은 DragGAN에서 나타나는 제한된 capacity 문제를 해결하며, original content를 유지하며 원하는 부분에 대한 point based image editing이 잘 수행됨을 증명하고 있습니다.
Ablation study에서는 앞서 언급한것과 같이 a) 어떤 time step에서의 latent optimization이 효과적인지 b) LoRA finetuining을 몇 에폭 진행하는것이 효과적인지, 마지막으로 c) UNet의 어떤 블록 feature map에서의 point-based image editing이 효과적인지 에 대한 실험을 진행합니다.
첫번 째로, 저자들은 time step 선정을 위해 정성적, 정량적 평가를 진행했습니다.
저자들은 (a) 그래프와 같이 Mean Distance가 제일 낮고, Image Fidelity score가 comparale 하게 높은 35 time step을 선정하였으며, 정성적인 결과는 아래와 같습니다. time step이 앞쪽에 있을 수록 (denoising이 많이 되었을수록), original data를 보존하려는 경향이 세므로, editing이 쉽지 않으며, time step이 50에 가까울 수록 (denoising이 안될수록) original data와는 상이한 이미지를 생성해내는 결과를 얻었습니다.
두번째로, (b) 그래프에 보이는 것과 같이 LoRA 기반의 UNet fine-tuning을 수행 할 때, 80 epoch이후로는 Mean distance나 Image fidelity의 성능이 거의 변화가 없으므로, 저자들은 대략적으로 80 epoch정도를 할당하여 UNet을 fine-tuning합니다.
세번째로, (c) 그래프는 UNet의 어떤 block의 feature map을 활용하여 diffusion latent optimization을 수행하면 효과적인지에 대한 실험 결과를 나타냅니다. UNet의 decoder에 해당하는 block의 갯수는 총 4개인데, 그 중 두번째 block의 output feature map을 선택하여 motion supervision이나 point tracking을 수행했을 때, 이미지 editing이 가장 정량적으로 뛰어남을 보였습니다. 따라서 저자들은 2번 째 block의 output feature map을 활용하여 point-based image editing을 수행합니다.
마지막으로, 저자들이 제안하는 componenet들의 영향력을 보여주기위해, 1) LoRA 기반의 Fine-tuning 과정이 없을 때, 2) Reference latent control을 수행하지 않았을 때, 그리고 3) DragDiffusion을 활용하였을 때의 성능을 평가합니다. original image와의 consistency를 개선하기 위해서는 fine-tuning stage와 reference latent control stage가 모두 수행되어야 함을 보였습니다.
자세한 내용은 DragDiffusion 논문을 통해 확인해주세요:)