본문 바로가기
Paper Review/Diffusion Model

[Weekly paper review] 10월 1주차 논문 리뷰 (ImageBrush: Learning Visual In-Context Instructions for Exemplar-Based Image Manipulation)

by climba 2023. 10. 7.

이번주에 읽은 논문은 아래 1편의 논문이다.

[읽음]

ImageBrush: Learning Visual In-Context Instructions for Exemplar-Based Image Manipulation

 

이번주에는 주로 현재 생각중인 아이디어를 MNIST dataset으로 구현하는데 시간을 많이 할애했다.

unet에 image condition을 어떻게 주어야할지가 조금 고민인데, 우선 IP-Adapter, Visii 등의 방식과 비슷하게 구현중이다. 

원래는 논문을 안 읽으려했는데, unet에 image condition을 주는 reference paper들을 찾아보다가 이 논문을 발견하였다.

논문에서 하고자 하는 것이 내가 생각한 아이디어와 비슷한 것 같아서 바로 읽어보았다. (코드가 공개되어있지 않아서 많이 아쉽다)

1. Introduction

논문에서 하고자하는 task는 아래 그림처럼 Instruction image 2장, Query image 1장이 주어졌을때 Instruction image의 관계가 적용된 Output image를 예측하는 것이다. (a:b = c:??? 에서 ???예측)

기존의 natural language 기반의 instruction은 사람의 의도를 정확하게 반영하지 못할뿐만 아니라, 부정확한 경우가 많다.

 

따라서 본 논문에서는 visual instruction을 학습하여 real world의 다양한 dataset 및 task에 대한 image editing을 수행할 수 있는 ImageBrush를 제시한다.

 

2. Method

우선 문제 정의 및 ImageBrush의 아키텍쳐는 아래와 같다.

input image(E,E',I,I')로는 256x256 image 4장이 합쳐진 512x512 image가 들어간다.

예측하고자 하는 output은 I'(x_t의 우측 하단)이고 학습해야할 visual instruction은 E->E'이다.

context-learning과 image synthesis를 둘 다 해결하기 위해 이를 diffusion-based inpainting stategy를 활용했다.

 

이때, 단순히 I'를 예측하는것 뿐만 아니라 사용자로 하여금 object의 bounding box를 제공할 수 있는 툴을 제시하였는데, 만약 사용자가 bounding box를 입력하지않으면 이미지 전체가 bounding box가 되도록 설정하였다. (E와 E'만 bounding box를 제공)

또한 bounding box를 일일이 그려줘야하는게 cost가 많이 들기때문에 Grounding DINO를 이용해 텍스트로 전달받은 instruction은 자동으로 bounding box로 그려주었다.

 

bounding box는 B = [a,b,c,d] 형태로, a와 b는 좌측 상단의 좌표를, c와 d는 우측 하단의 좌표를 나타내어 사각형 형태의 box를 좌표로만 표시하였다.

 

모델의 주요 특징은 아래와 같다.

  • Latent Diffusion Model 사용(pixel space x)
  • Stable Diffusion의 Encoder, Decoder 사용 (32 blocks 중 30 blocks cross attention을 self attention으로 교체)
    • 2 middle block에는 그대로 cross attention 적용(visual prompt module 합치려고) -> Fig 2. 보라색 네모 부분
  • Visual Encoder(e_v) : ViT backbone(EVA-02 참고) 통과해서 f_img 생성
  • Bbox Encoder(e_b) : MLP layer(GLIGEN 참고) 통과해서 f_b 생성(f_img와 합쳐져서 e_p로 보내짐)
    • f_b = e_b(Fourier(B))
  • Prompt Encoder(e_p) : bi-directional transformer(dim=768) 통과해서 f_c 생성
    • f_c가 high-level semantic changes 및 examples간의 correlation 정보를 갖고있음
  • Classifier-free guidance (scale 7.5), dropout ratio 0.05
  • V100-32G GPU 24개 with 14K iter, optim : AdamW, lr : 1e-6, batch : 288

 

3. Dataset & Metric

Dataset은 Scannet, LRW, UBC-Fashinon, DAVIS, LAION Improved Aesthetics 6.5+ 이렇게 5개를 사용하였고,

Metric은 CLIP Direction Similarity, CLIP Image Similarity, FID score를 사용하였고, 추가적인 evaluation metric도 제시하였다.

(추가적이라기보단 FID score를 새로운 task에 적용한 것이다)

💡CLIP Image Similarity? CLIP Direction Similarity?
CLIP Image Similarity
주어진 instruction(E->E')과 수정된 Image I'(I->I')의 direction의 각도 측정 (instruction의 의도가 정확히 I에 적용되었나?)
CLIP Direction Similarity
original image I와 edited image I'가 얼마나 유사한가? (image I와 전혀 다른 새로운 사진이 나오면 안됨) 

 

 

추가적인 Metric은 아래 두개의 FID score인데(Prompt Fidelity, Image Fidelity), 이때 \Phi(Φ)는 model을 의미한다.

Prompt Fidelity는 Instruction(I->I')이 주어졌을때 E를 통해 만든 E'가 기존의 Instruction과 얼마나 유사한지이고,

Image Fidelity는 examples(E'->E)가 주어졌을때 I'를 되돌려서 I를 얼마나 잘 만드냐를 측정하는 것이다.

 

Image Fidelity를 측정하는 이유는 이 score가 높을수록 model이 I의 content를 잘 보존하고있는지를 측정하기 위해서이다.

그림을 통해 보면 아래와 같다.

4. Conclusion

논문에서 제시하는 한계 및 추구 연구 방향은 다음과 같다.

1. given instruction과 query image간의 차이가 클 경우 잘 수행하지 못함

2. 미세한 디테일이나, 작은 object 등은 잘 다루지 못함 

3. 더 다양한 dataset과 tasks로의 확장 필요

 

이제 진짜 시험기간(1주전)이라 아마 10월 2주차에는 논문을 아예 읽을 시간이 없을듯하다. 3주차에 시험이 마무리되면 3주차 혹은 4주차부터 다시 리뷰를 해보겠다.

댓글