2023 CVPR. [ArXiv] [GitHub] [WebSite]
이번 글에서는 Google Research에서 발표한 DreamBooth 논문을 리뷰하겠습니다 :)
✅ Key Idea
1. text-to-image diffusion 모델의 subject-driven generation(personalization) task 제시
2. 특정 피사체에 대한 이미지 몇 장이 주어졌을 때 텍스트 프롬프트로 가이드한 부분을 높은 디테일 fidelity로 생성 (by. fine-tuning)
3. subject를 unique identifier에 바인딩해서 text-to-image 모델의 출력 도메인에 주어진 subject의 instance를 임베딩
4. class-specific prior presevation loss를 사용해서 오버피팅과 language drift 완화
Introduction
- 대규모 text-to-image 모델들은 주어진 텍스트 프롬프트로부터 다양한 고품질 이미지를 합성하는 능력을 보여주었습니다.
- 하지만 기존 text-to-image 모델은 주어진 reference 세트에서 피사체의 외관을 모방해서 다른 맥락으로 합성하는 능력이 부족하다는 한계를 가지고 있습니다.
- 즉, 주어진 텍스트 프롬프트 또는 레퍼런스에 제한된 범위에서만 이미지를 생성하며, 피사체의 다양한 모습이나 새로운 컨텍스트에서의 해석을 제한적으로 다루고 있다는 것이 한계가 있습니다.
- 아래의 그림을 보더라도 가장 왼쪽의 Input Images에 있는 시계에 대해서 Image-guided, DALL-E2는 본래의 시계 subject의 개념을 잃어버림(Fidelity X)과 동시에 기존 Input Image와 매우 비슷한 배경(맥락)에서 이미지를 생성(New context X)했습니다.
- 또한 Text-guided, Imagen의 경우는 숲 배경에서의 시계 이미지를 생성(New context O)했지만 기존 Input Images의 시계 subject의 모습은 잃어버린 것(Fidelity X)을 확인할 수 있습니다.
- DALL-E2, Imagen에 단순히 텍스트 프롬프트를 넣어주는 것만으로는 설령 이미지를 기반으로 가이드된 생성이지만 실제 Input images와는 다른 객체를 생성하는 것을 확인할 수 있습니다.
- 아래의 그림에서도 입력 이미지에 들어있는 노란색 시계와는 다른 시계를 생성하고 배경이 완전히 동일한 수준으로 생성되었습니다.
- 이러한 한계가 있는 이유는 large text-to-image 모델들은 대규모 이미지-캡션 데이터셋에서 학습되었기 때문에 strong semantic prior를 가지고 있기 때문입니다.
- 따라서 본 논문에서는 text-to-image diffusion model의 personalization(개인화) 접근방식을 제시합니다.
- 사전학습된 text-to-image 모델에 subject 이미지 몇 개를 입력하여 fine-tuning하여 다른 장면에서 맥락화된(contextualized) subject를 생성하는 것인데요.
- 모델은 fine-tuning 과정에서 사용자가 생성하고자 하는 특정 subject와 "새로운 단어"(unique identifier)를 함께 학습을 하게되는데요.위의 그림과 같이 입력이미지와 "A [V] dog" 처럼 unique identifier와 클래스 이름이 합쳐진 텍스트 프롬프트를 사용해서 파인튜닝하게 됩니다.
- 하지만 이렇게만 학습을 진행하면 모델이 클래스 이름과 클래스에 해당하는 특정 인스턴스를 연관시키는 language drift 현상이 발생하였고
- 따라서 논문의 저자들은 이를 방지하기 위해서 클래스에 대한 semantic prior를 활용하는 autogenous, class-specific prior preservation loss도 제안하였습니다.
- 추가로 새로 학습하는 이미지를 Super Resolution에도 학습하였습니다. 이 때는 신규 이미지를 Downsampling해서 생긴 저해상도(64x64)를 고해상도(1024x1024)로 학습시키고 Reconstruction loss를 사용하였습니다.
- 참고로 super resolution에 관한 부분은 논문에는 따로 나와있지 않고 웹사이트에 나와있는 내용입니다. :)
- 결과적으로 이러한 방식으로 다른 장면에서 맥락화된(contextualized) subject를 생성할 수 있게 되었습니다.
- 아래의 그림의 Ours처럼 Input Image subject는 보존하면서 (Fidelity O) 기존 Input Images의 맥락이었던 흰색 쿠션?배경이 아닌 자연배경에서 (New context O)이미지지를 생성하는 것을 확인할 수 있습니다.
- 또한 본 논문에서는 대상중심 생성(subject-driven generation)이라는 새로운 task를 등장시키면서 새로운 데이터세트와 평가 프로토콜도 제시하고 있습니다.
Method
- 본 논문의 목표는 특정 피사체에 대해 캐주얼하게 캡쳐된 이미지 몇 개(3~5개)가 주어졌을 때, 텍스트 프롬프트에로 guide된 피사체의 새로운 이미지를 높은 디테일 fidelity로 생성하는 것입니다.
- 예를들면 피사체가 있는 장소가 바뀐다거나, 색상, 종 또는 모양과 같은 피사체의 속성이 변경되거나, 피사체의 포즈, 표정, 재료 및 기타 의미적으로 수정되는 것이 모두 포함되는데요.
- 이를 위해 저자들이 Imagen과 같은 이미지 생성모델을 fine-tuning 하는 단계에 대해서 자세하게 알아보도록 하겠습니다.
- subject instance(생성하고자 하는 목표 피사체)를 모델의 출력 도메인에 삽입해서 subject의 다양한 새로운 이미지를 생성하는 것과 연결되기 때문에 저자들은 subject의 촬영된 몇 장의 데이터셋을 이용해서(few-shot) 모델을 파인튜닝하는 방법을 생각했습니다.
- 하지만 GAN과 같은 생성모델을 few-shot 방식으로 파인튜닝 했을 때 오버피팅과 mode-collapse가 발생하고 타겟의 분포를 충분하게 캡쳐하지 못하는 현상이 발생했습니다.
- 위의 사진의 중간 그림을 보면 왼쪽의 Input images로 Fine-tuning 한 후에 "A dog"라는 프롬프트에 대해서 target subject에 오버피팅된 것을 확인할 수 있습니다.
- 이에 따라 저자들은 few-shot 이미지에 오버피팅 되지 않으면서 subject instance에 관한 새로운 정보를 도메인에 통합하기 위해서는 신중한 파인튜닝이 필요하다고 판단했습니다.
Designing Prompts for Few-Shot Personalization & Rare-token Identifier
- 위와 같은 문제를 해결하기 위해서 프롬프트에 unique identifier를 삽입하는 방법을 사용했습니다.
- 위 그림과 같이 subject 이미지 몇 장과 subject의 class name과을 unique identifier(논문에서는 [V]라고 표현)와 함께 넣어 fine-tuning을 진행는 것입니다.
- subject instance 정보를 모델 출력 도메인에 삽입한다는 것은 결국 새로운 (unique identifier, subject) 쌍을 DM의 사전(dictionary)에 삽입한다는 것인데 “a [identifier] [class noun]” 형태의 프롬프트를 사용해서 모든 입력 이미지에 레이블을 부여하는 것이라고 이해할 수 있습니다.
- 여기서 [class noun]는 주제의 대략적인 class descriptor(예: 개, 고양이, 시계.. 등)을 의미합니다. class descriptor는 사용자가 제공하거나 아니면 classifier를 사용해서 얻을 수도 있습니다.
- [clss noun]은 unique subject를 prior의 클래스와 연결해주는 역할을 하게 됩니다.
- 그래서 만약 잘못된 class descriptor를 사용하거나 class descriptor 없는 프롬프트를 사용하면 훈련시간이 증가하거나 language drift가 발생했고 성능도 떨어졌다고 합니다.
- [identifier]는 subject에 연결된 고유 식별자로 LM, DM에서 모두 weak prior를 가지고 있는 단어를 identifier로 선택해야 합니다.
- 왜냐하면 기존에 이미 존재하는 단어를 사용할 경우에는 모델이 해당 단어를 기존에 학습한 의미에서 분리하고 나서 우리의 subject를 참고해서 다시 re-entangle해야 하기 때문에 저자들은 좋은 방법이 아니라고 판단했습니다.
- 따라서 LM, DM에서 모두 약한 prior를 가지고 있는 단어를 찾기 위해서 vocabulary에서 rare token lookup으로 rare token 시퀀스를 얻고 이를 concate하는 방법을 사용하였고 xxy5syt00을 그 예시로 제공하고 있습니다.
- 그리고 시퀀스 길이가 비교적 짧을수록 더 잘 작동한다고 합니다.
- 즉, unique identifier는 사전에 충분히 사용되지 않아서 타 LM과 임베딩에 영향을 미치지 않는 수준의 단어를 사용하는 것이 핵심이라고 할 수 있겠네요/
- 결국 저자들은 “a [identifier] [class noun]” 형태의 프롬프트를 사용함으로써 모델의 prior specific class 정보와 우리의 subject의 Unique identifier를 entangle하였고 다양한 맥락에서 피사체의 새로운 포즈와 표현을 생성하기 전에 subject의 시각적인 요소를 활용할 수 있도록 했습니다.
Class-specific Prior Preservation Loss
- 지금까지 설명했던 것처럼 target subject 이미지 몇 장과 target subject를 묘사하는 텍스트 프롬프트(“a [identifier] [class noun]”)를 이용해서 DM의 denoising loss로 모델을 파인튜닝했더니 두 가지 문제가 발생했습니다.
- 첫번째는 Language Drift 현상입니다.
- Language Drift는 큰 text corpus에서 사전학습되고 특정 Task를 위해서 파인튜닝한 모델이 기존에 학습한 언어의 구조적 지식과 의미론적 지식을 점진적으로 잃어가는 현상입니다.
- subject에 대한 fidelity를 최대로 만들기 위해서는 모델의 모든 레이어를 파인튜닝하는게 좋은데 이렇게 하면 텍스트 임베딩 계층도 파인튜닝 대상 레이어에 포함되기 때문에 DM에서 subject 클래스와 같은 클래스에 속하는 다른 인스턴스를 생성하는 방법을 천천히 잃어버리게 되는 것입니다.
- 또 다른 문제는 출력 diversity가 감소했다는 것입니다.
- text-to-image DM은 높은 출력 diversity를 가지고 있는데 작은 이미지 세트에서 파인튜닝하면서 출력 포즈나 view가 감소하였다고합니다.
- 특히 모델이 너무 오랫동안 훈련된 경우에 이런 현상이 나타났다고 하는데요.
- 위의 사진에서도 w/o prior-preservation loss 결과를 보면 input image와 비슷한 자세와 구도의 강아지 사진을 생성하는 것을 확인할 수 있습니다.
- 위에서 언급한 두 가지의 문제를 완화하기 위해서 출력 diversity를 유지하고 Language drift를 방지할 수 있는 class-specific prior preservation loss를 제안합니다.
- 이 loss의 역할은 few-shot 파인튜닝이 시작된 후에 Prior를 유지하도록 하는 역할을 합니다.
- 이를 위해서 기존 사전훈련된 모델의 텍스트 프롬프트와 Latent vec.으로 생성되는 이미지를 손실항에 추가하였습니다.
- Imagen 모델의 경우에는 λ 값이 1이고 학습률이 10^-5인 설정에서 1000회 정도의 반복, Stable DM의 경우에는 5 × 10^-6의 학습률로 약 1000회의 반복이 적절하다고 합니다.
- Imagen의 경우 학습 프로세스는 하나의 TPUv4에서 약 5분, Stable Diffusion NVIDIA A100에서 약 5분이 소요되었다고 하네요 !
Personalized Instance-Specifie Super-Resolution
- Text -> 64x64로 생성하는 모델도 중요하지만, 이후에 이 생성된 이미지를 활용하여 1024x1024로 upscale하는 모델은 신규 오브젝트/이미지에 대한 정보가 없기 때문에 사전학습된 모델을 그대로 사용하면 뿌연 이미지 혹은 Halllucination을 생성하는 문제가 발생했습니다.
- 아래 이미지에서처럼 Nornal Noise를 쓴 경우에는 최종 이미지에서 뿌연 이미지가 생성되었고,
- Fine-tuning 없이 진행한 경우에는 주요 feature가 완전히 달라지거나 기존에 없던 부분이 생성되는 이슈가 발생했습니다.
Experiments
Dataset and Evaluation
Dataset
- 아래의 그림과 같은 30개의 subject에 대한 이미지를 저자가 직접 수집하거나 unsplash를 통해서 수집
- 프롬프트
- Objects (25)
- 20 prompts: recontextualization
- 5 prompts: property modification
- live subjects/pets (25)
- 10 recontextualization
- 10 accessorization
- 5 property modification prompts
- Objects (25)
- 평가를 위해서 subject, prompt마다 네 개의 이미지를 생성해서 총 3,000장의 이미지를 생성해서 평가함 (30254)
Evaluation
- Subject Fidelity: 생성된 이미지와 real 이미지 사이의 CLIP(or DINO) 임베딩의 코사인 유사도로 계산
- 생성된 이미지와 real 이미지가 비슷하다고 하면 CLIP(or DINO) 관점에서 비슷하다
- Prompt Fidelity(프롬프트와 얼마나 맥락을 같이 하는가): 프롬프트와 이미지 CLIP 임베딩 간의 평균 코사인 유사성(CLIP-T)
Comparison
- Textual Inversion
- GAN에서 inversion을 해서 임베딩을 찾아가게 되는데 이것과 비슷한 맥락으로 Input sample을 inversion해서 pseudo word를 찾고 이 pseudo word는 inversion한 subject를 가르킨다고 가정
- generation할 때는 임의의 프롬프트에 찾아낸 pseudo word를 더해서 generation
- 이렇게 하면 subject를 보존한채로 generation을 할 수 있다.
- Best: DreamBooth(Imagen)
- Fidelity
- 더 높은 Fidelity를 보임
- user study
- Q. Which of the two images best reproduces the identity (e.g. item type and details) of the reference item?
- A. DreamBooth / Textual Inversion / Cannot Determine / Both Equally
- 정성적 평가
- Textual Inversion이 DreamBooth에 비해서 subject의 identity를 많이 잃어버린 것을 확인할 수 있음
Ablation
Prior Preservation Loss Ablation
- prior-preservation loss 없이 학습했을 때도 개 Identity는 잘 유지하는 것을 확인할 수 있지만 오버피팅 되었음 (Input 이미지로 들어간 강아지가 다 앉아있는 사진인데 생성된 사진들의 포즈가 비슷함)
- prior-preservation loss를 가지고 학습했을 때는 다양한 자세와 다양한 구도의 사진을 생성해냄
- 원래의 StableDiffusion이나 Imagen의 경우에는 다양한 개들을 생성
- Prior-preservation loss 없이 학습하면 Input 이미지에 있는 강아지 모습만 생성
- Prior-preservation loss 같이 학습을 하면 다양한 개들을 생성해낼 수 있음
Class-Prior Ablation
- 학습을 할 때 “a [V] [class noun]” 으로 학습을 했는데 [class noun]을 없애고 [V]로만 학습
- No class의 경우에는 텍스트가 가지고 있는 prior를 leverage하지 못해서 converging하는데 문제가 있다.
- 정성적 결과 제공 X
- Wrong class의 경우에는 No class의 경우보다 Fidelity는 높지만 잘못된 class의 prior를 가져다 썼기 때문에 문제가 있었다.
- 백팩을 생성할 때 캔을 class noun으로 넣으면 실린더 모양과 비슷한 백팩 생성
Applications
Recontextualization
- “a [V] [class noun] [context description]
Art Renditions, Novel View Synthesis, Property Modifications
- Style Transfer vs. Art Rendition: Style Transfer는 거의 비슷한 이미지에 타입만 바꾸는 경향이 있는데 Art Renditions는 context를 바꿔버린다.
Limitations
- (a) 학습 데이터셋에서 같이 발생하는 경우(co-occurrence)가 적었던 경우
- (b) 텍스트와 subject의 entanglement
- (c) 오버피팅
🤗 Review
text-to-image generation 모델을 personalization의 관점에서 접근한게 신선했던 거 같습니다.
논문을 읽기 전에 페이퍼를 넘기면서 사진만 볼 때는 "어? 뭐야 다 잘 생성하는데?" 라고 생각했는데
개인화의 관점에서 잘 생성한다는 것은 이미지 자체의 생성뿐만 아니라 subject의 fidelity와 diversity가 중요하다는 것을 배웠습니다!
긴 글 읽어주셔서 감사합니다.
잘못된 부분에 대한 피드백과 조언은 언제나 환영입니다 :)
추가로 저의 리뷰(?에 대한 토론은 댓글로 남겨주세요 💛