본문 바로가기
논문 리뷰/Diffusion Model

DreamBooth: FineTuning Text-to-Image Diffusion Models for Subject-Driven Generation

by 박사개구리 2024. 9. 21.

 

DreamBooth

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation Nataniel Ruiz Yuanzhen Li Varun Jampani Yael Pritch Michael Rubinstein Kfir Aberman Google Research It’s like a photo booth, but once the subject is captured, it can be

dreambooth.github.io

0. Abstract

  • 대형 text-to-image 모델은 텍스트 프롬프트를 기반으로 고품질의 다양한 이미지를 제공할 수 있음
  • 하지만 해당 모델들은 특정 레퍼런스에서 대상의 외형을 모방하고 이를 다른 컨텍스트에 새롭게 시각화하는 능력은 부족함
  • 본 논문에서는 text-to-image 확산 모델 (diffusion model)의 “개인화 (personalization)”라는 새로운 접근을 제안
    • 특정 대상에 대한 몇장의 이미지만을 통해 사전학습된 text-to-image 모델을 파인튜닝하고 이때 특정 대상에 대한 고유 식별자 (unique identifier)를 같이 학습 → 이를 해당 대상이 다른 장면에 컨텍스트화 된 이미지를 생성할 때 사용
    • 본 논문에서는 autogenous class-specific prior preservation loss를 사용 → 원하는 대상의 외양을 보존한채로 다양한 장면, 포즈, 각도, 조명 조건에서 생성할 수 있음
    • 또한 본 논문의 기법을 이전에는 불가능했던 문제들에 적용 → 대상 재컨택스트화 (subject recontextualization), 텍스트 기반 장면 합성, 예술적 랜더링을 하면서도 대상의 주요 특징은 보존
  • 또한 대상 기반 생성이라는 새로운 문제를 위한 새로운 데이터셋과 평가 프로토콜을 제공

1. Introduction

  • 나의 강아지가 세상을 여행하거나 내가 가장 좋아하는 가방이 파리의 쇼룸에 전시되도록 할 수 있을까??
    • 이렇게 특정 대상 (e.g. 물체, 동물)을 새로운 컨텍스트에 자연스럽게 합성하는 것은 어려운 문제
  • 최근 대형 text-to-image 모델들이 발전하면서 텍스트 프롬프트를 기반으로 고품질의 다양한 이미지들을 합성할 수 있게 되었음
    • 해당 모델들의 주요한 장점은 많은 이미지-캡션 쌍으로부터 강력한 semantic prior를 학습하는 것
    • 이 덕분에 “개”라는 단어를 통해 개가 이미지 내에서 다양한 포즈나 맥락에서 생성될 수 있도록 함
    • 하지만 이런 모델들의 합성 능력은 주어진 참조 이미지들에서 특정 대상의 외형을 모방하고 이를 다른 맥락에서 동일한 피사체를 새롭게 합성할 수 있는 능력이 부족
  • 이에 대한 이유는 출력에 대한 표현이 제한적이기 때문 → 아무리 대상에 대한 텍스트 표현을 자세하게 해도 이에 대한 외양이 달라짐
  • 또한 텍스트 임베딩이 공유된 언어-비전 공간에 있더라도 이미지 내용의 변형을 생성할 뿐 정확하게 주어진 대상의 외형을 재현하지는 못함 → 그림 2 참고
  • 본 논문에서는 text-to-image 확산 모델의 “개인화 (personalization)”라는 새로운 접근을 제시
    • 본 논문의 목표는 모델의 언어-비전 딕셔너리 (dictionary)를 확장하여 사용자가 생성하고자하는 특정 대상과 새로운 단어를 결합
    • 새로운 딕셔너리가 모델에 임베딩 되면 해당 단어들로 대상에 대한 새로운 이미지를 합성할 수 있음 → 대상에 대한 몇장 (3~5장)의 이미지와 단순한 텍스트 프롬프트를 통해 통해 대상의 주요 특징들은 보존하면서도 다른 장면이나 조건에서 대상에 대한 이미지 생성 가능 → 그림 1 참고
  • 본 논문의 기법은 고유 식별자 (unique identifier)를 사용 → 주어진 대상을 희귀한 토큰 식별자 (rare token identifier)로 나타내어 사전학습된 확산 기반 text-to-image 프레임워크를 파인튜닝
    • 해당 고유 식별자는 대상의 클래스 이름을 뒤에 포함 → e.g. “A [V] dog”
    • 후자 (클래스 이름)은 모델이 해당 클래스에 대한 사전 지식을 사용할 수 있게 하며 클래스별 인스턴스가 고유 식별자로 결합됨
  • 모델이 클래스 이름 (e.g. “dog”)을 특정 인스턴스와 연관시키는 문제인 “language drift”를 방지하기 위해 본 논문은 “autogeneous, class-specific prior preservation loss”를 사용
    • 이는 모델에 임베딩 된 클래스에 대한 의미적인 사전지식을 통해 우리의 대상과 동일한 클래스에 대한 다양한 인스턴스를 생성하도록 함
  • 또한 본 논문의 기법을 텍스크 기반 이미지 생성 응용에 적용 → 대상의 재맥락화 (recontextualization), 특성 변경, 아트 랜더링 등
  • 본 논문의 기법은 특정 대상을 기반으로 생성하는 문제를 해결한 첫번째 기법 → 대상의 특성은 유지한 채로 새로운 맥락에서 대상을 랜더링
    • 새로운 맥락 = 대상의 위치 변경, 색이나 모양과 같은 특성 변경, 자세나 시선 등 변경
  • 또한 본 문제의 평가를 위해 다양한 대상을 다른 맥락에서 캡쳐한 새로운 데이터셋을 제공
  • 생성 결과에서 대상과 프롬프트에 대한 생성 성능을 평가하기 위한 새로운 평가 프로토콜도 제공

 

 

2. Method

2.1. Text-to-Image Diffusion Models

  • 확산 모델은 확률적인 생성 모델 → 가우시안 확률 분포로부터 샘플링 된 변수에 대한 점진적인 디노이징을 통해 데이터 분포를 학습
  • 특히 본 논문에서는 사전학습 된 text-to-image 확산 모델 $\hat{x}_{\theta}$에 관심이 있음
    • 최초의 노이즈 맵 $\epsilon \sim \mathcal{N} (0,I)$과 조건 벡터 $c = \Gamma (P)$가 주어졌을 때 이미지 $x_{gen} = \hat{x}_{\theta}(\epsilon, c)$를 생성
      • $\Gamma$: 텍스트 인코더, $P$: 텍스트 프롬프트
  • 제곱 에러 손실함수를 사용하여 잠재 코드 (latent code) $z_t :=\alpha_t x + \sigma_t \epsilon$에 대한 디노이징을 학습
    •  
    • $x$: 실제 이미지
    • $c$: 조건 벡터 (e.g. 텍스트 프롬프트로부터 얻은 벡터)
    • $\alpha_t, \sigma_t$: 노이즈 스케줄, 샘플 퀄리티를 조절
    • $w_t$: 시간 $t \sim u([0,1])$에서 확산의 과정에 대한 함수

 

2.2. Personalization of Text-to-Image Models

  • 대상을 모델의 출력에 포함하기 위한 첫번째 작업 → 대상에 대한 다양한 새로운 이미지들에 대해 모델에 질의할 수 있어야 함
    • 이에 대한 간단한 방법은 대상에 대한 퓨-샷 (few shot) 데이터를 통한 파인튜닝을 수행하는 것
    • 일반적으로 오버피팅(overfitting)이나 mode-collapse와 같은 문제가 발생할 수도 있으며 타겟 분포를 충분히 표현하지 못할 수 있기 때문에 GAN과 같은 생성 모델을 파인튜닝 할때는 많은 주의가 필요
    • 이런 문제를 피하기 위해 많은 연구들이 타겟 분포와 유사한 이미지를 생성하도록 했지만 이는 대상을 보존한다는 요구 조건은 고려하지 않음

Designing Prompts for Few-Shot Personalization

  • 논문의 목표는 새로운 (고유식별자, 대상)의 쌍을 확산 모델의 “딕셔너리”에 이식하는 것
  • 이를 위해 대상에 대한 모든 입력 이미지에 [식별자][클래스 명사]를 라벨링 하는 간단한 방법을 사용
    • [식별자 (identifier)]는 대상을 나타내는 고유한 식별자
    • [클래스 명사 (class noun)]은 대상의 클래스에 대한 큰 범위의 설명 (e.g. 고양이, 강아지, 시계 등…)

Rare-token Identifiers

  • 기존의 영어 단어 (e.g. unique, special)의 사용은 성능을 저하시킴 → 이를 실제 의미와 분리하고 대상을 참조하도록 재결합시켜야함
  • 이는 언어 모델이나 확산 모델 모두에 대해 약한 사전지식을 가지는 식별자를 필요로 하는 이유가 됨
  • 위험한 방법! → 영어의 랜덤한 글자를 선택하고 이것들을 연결하여 희귀 식별자를 생성하는 것 (e.g. xxx5syt00)
    • 실제로는 토크나이저가 각 글자를 분리하고 확산 모델이 이런 글자들에 강한 사전시직을 가짐
    • 이에 따라 이런 토큰들은 흔한 영단어를 사용한 것과 유사한 약점을 보임
  • 본 논문의 접근은 단어에서 희귀한 토큰을 찾고 이 토큰을 텍스트 공간으로 변환하는 것
    • 식별자가 강한 사전지식을 가질 확률을 최소화
    • 단어들에서 희귀한 토큰 표를 만들고 해당 희귀 토큰 식별자들의 시퀀스를 취득 → $f(\hat{V})$
      • $f$: 토크나이저 → 글자의 시퀀스를 토큰으로 맵핑하는 함수
      • $\hat{V}$: 토큰으로부터 디코딩 된 텍스트
  • 시퀀스는 $k$ 길이를 가지며 상대적으로 짧은 시퀀스를 사용해야 좋은 결과를 보임 → $k= \{1, ..., 3\}$

2.3. Class-specific Prior Preservation Loss

  • 대상의 외형을 나타내는 최선의 결과를 얻기 위해서는 모델의 모든 레이어를 파인튜닝해야함
  • 이는 텍스트 임베딩 조건과 관련된 레이어들도 파인튜닝 하는 것을 포함 → language drift 문제 발생 가능
    • Language drift는 언어 모델의 문제로 관측되며 모델이 큰 텍스트 말뭉치 (corpus)에 의해 학습되고 특정 문제를 위해 파인튜닝 되었을 때 발생 → 점진적으로 언어의 구문적, 의미적 지식을 잃음
  • 다른 문제는 출력의 다양성에 대한 감소
    • text-to-image 확산 모델은 자연적으로 많은 양의 출력 다양성을 가짐
    • 본 논문은 작은 세트의 이미지에 대해 파인튜닝 되었을 때도 새로운 시선, 포즈 등으로 대상을 생성하고 싶음
    • 하지만 이는 대상의 포즈나 시선에 대한 다양성의 정도가 줄어들 위험을 가지고 있음 → 특히 모델이 오랫동안 학습되었을 때
  • 앞에서 말한 두 문제를 피하기 위해 본 논문에서는 autogeneous class-specific prior preservation 손실함수를 제안
    • 해당 기법은 자체적으로 생성된 샘플들을 통해 모델을 지도 (supervise) → 퓨샷 파인튜닝이 시작되었을 떄 사전 지식을 유지하기 위해서
    • 이는 클래스에 대한 다양한 이미지를 생성하도록 하며 해당 클래스에 대한 사전 지식을 유지 → 대상 인스턴스에 대한 지식에도 사용될 수 있음
  • 이에 따라 고정된 사전학습 확산 모델의 샘플러를 사용하여 랜덤 초기 노이즈 $z_{t_1} \sim \mathcal{N}(0,I)$와 조건 벡터 $c_{pr} := \Gamma(f("a\ [class \ noun]"))$을 통해 데이터를 생성 → $x_{pr} = \hat{x} (z_{t_1}, c_{pr})$
    • 손실 함수는 다음과 같이 정의
    • 두번째 항이 prior-preservation 항으로 자체적으로 생성된 이미지로 모델을 감독
    • $\lambda$는 해당 항을 조절하는 상대적인 계수
  • 그림 3은 생성된 클래스 샘플과 prior-preservation loss를 사용한 모델 파인튜닝을 그림으로 나타낸 것
  • 해당 prior-preservation 손실함수는 출력의 다양성 향상과 language-drift의 극복에 효과적
  • 또한 많은 스텝동안 학습해도 오버피팅에 강인한 결과를 보임
  • 학습 관련 파라미터
    • Imagen에 대해서는 $\lambda=1$, 학습률 $10^{-5}$으로 1000 스텝동안 학습
    • Stable Diffusion에 대해서는 $5 \times 10^{-6}$의 학습률로 학습
    • 대상 이미지는 3-5장 정도면 충분히 좋은 성능을 보임
    • 학습 동안 1000개의 “a [class noun]” 샘플들을 생성
  • Imagen의 경우 하나의 TPUv4로 약 5분 정도 학습했으며 Stable Diffusion의 경우 하나의 NVIDIA A100으로 약 5분 동안 학습 수행

3. Experiments

  • 본 논문의 기법을 다음 사항들을 기반으로 평가
    • 텍스트를 기반으로 특정 대상에 대한 맥락 변경
    • 재질, 종류, 예술적 시각화, 시점과 같은 대상의 특성 변경
    • 위 사항들을 수행하면서도 대상의 특수한 시각적 특징을 보존
  • 대상의 고유 식별자는 [V]로 표기

3.1. Dataset and Evaluation

Dataset

  • 30개의 대상에 대한 데이터셋 수집
  • 각 대상을 두개의 카테고리로 나눔 → 21개의 물체, 9개의 생물
  • 그림 5를 보면 각 대상에 대해 하나씩 이미지를 샘플링 한 것을 확인할 수 있음
  • 25개의 프롬프트 수집
    • 물체: 20개의 재맥락화 프롬프트, 5개의 특성 변경 (property modification) 프롬프트
    • 생물: 10개의 재맥락화 프롬프트, 10개의 accessorization, 5개의 특성 변경 프롬프트
  • 평가를 위해 프롬프트 별로 4개씩 이미지를 생성하여 총 3000개의 이미지를 생성
  • 데이터셋과 평가 프로토콜은 프로젝트 웹페이지에 공개

 

Evaluation Metrics

  • 평가 요소
    • 대상의 일치도 (subject fidelity): 생성된 이미지들에서 대상이 얼마나 잘 보존되는지 평가
      • 두가지 평가 지표 사용 → CLIP-I, DINO
        • CLIP-I
          • 생성된 이미지들과 실제 이미지들의 CLIP 임베딩 사이의 코사인 유사도 (cosine similarity) 쌍의 평균
          • 하지만 CLIP-I의 경우 텍스트 설명이 매우 유사한 두개의 다른 대상에 대해 유사도가 높게 나올 수 있어서 대상의 일치도 평가에는 좋지 않은 면이 있음 (예시: 두개의 완전 다르게 생긴 노란 시계가 있어도 텍스트에 대한 설명이 유사할 수 있으므로 유사도가 높게 도출)
        • DINO
          • 생성된 이미지들과 실제 이미지들의 ViT-S/16 DINO 임베딩 코사인 유사도 쌍의 평균을 사용
          • DINO의 self-supervised 학습이 대상이나 이미지의 특징 피쳐에 대한 구분을 잘 할 것으로 예상할 수 있음
    • 프롬프트 일치도 (prompt fidelity): 생성된 이미지가 프롬프트를 얼마나 충실하게 반영하여 생성되었는가
      • 평가지표 → CLIP-T: 프롬프트와 이미지에 대한 CLIP 임베딩의 평균 코사인 유사도

3.2. Comparisons

  • 본 논문의 기법은 Textual Inversion과 비교
  • DreamBooth는 Imagen과 Stable Diffusion에 적용하였으며 Textual Inversion은 Stable Diffusion에 적용하여 결과 비교
  • 표 1을 통해 해당 모델과 기법에 대한 DINO, CLIP-I, CLIP-T의 결과를 비교할 수 있음
    •  
    • 대상의 일치도나 프롬프트 일치도 모두에 있어 DreamBooth가 Textual Inversion의 성능을 크게 능가
    • 또한 DreamBooth (Imagen)이 모든 부분에 있어 DreamBooth (Stable Diffusion) 보다 좋은 성능을 보임
  • 또한 사람의 비교를 통해 Textual Inversion (Stable Diffusion)과 DreamBooth (Stable Diffusion)의 성능을 평가 → 표2 참고
    •  
    • 72명의 사용자가 비교를 위한 25개의 질문에 응답하도록 함 → 총 1,800개의 응답 수집
    • 데이터 수집 과정
      • 대상에 대한 실제 이미지를 제공하고 각 기법으로 대상에 대한 이미지를 하나씩 생성
      • 대상의 일치도
        • 사용자가 다음의 질문에 대답하도록 함 → 두 이미지 중 어떤 것이 참조한 대상의 특징을 더 잘 재구성 하였는가?
        • 응답에는 “결정할 수 없음” 이나 “둘다 동일”과 같은 옵션을 추가 (Undecided)
      • 프롬프트 일치도
        • 사용자가 다음의 질문에 대답하도록 함 → 두 이미지 중 어떤 것이 참조한 텍스트에 의해 잘 설명되는가?
    • 위 결과를 통해 DreamBooth가 Textual Inversion에 비해 훨씬 선호도가 높은 것을 확인할 수 있음
    • 정량적인 결과는 그림 4를 참고 → 대상의 특징 보존이나 프롬프트의 일치도에서 더 나은 성능을 보임

3.3. Ablation Studies

Prior Preservation Loss Ablation

  • Imagen은 15개의 대상으로 파인튜닝 → Prior Preservation Loss (PPL) 적용에 대한 비교 수행
  • 표 3 참고
  • 평가 지표
    • Prior Preservation Metric (PRES)
      • 랜덤한 대상에 대해 생성된 이미지와 특정 대상에 대한 실제 이미지 사이의 DINO 임베딩 쌍의 평균을 계산
      • 해당 값이 높을 수록 랜덤 대상에 대한 이미지가 특정 대상과 유사하다는 것을 의미 → collapse
      • 표 3을 참고하면 PPL을 적용하는 경우 language drift에 대응할 수 있으며 다양한 이미지를 생성하는 능력을 유지
    • Diversity Metric (DIV)
      • 동일한 프롬프트로 생성한 동일한 대상의 이미지들 사이의 LPIPS 코사인 유사도를 계산
      • PPL을 적용한 경우 이미지의 다양성이 향상되는 것을 확인할 수 있음
  • 정성적인 결과는 그림 6 참고 → PPL을 적용하는 경우 참조 이미지에 덜 오버피팅 되어 강아지를 더욱 다양한 포즈로 생성

Class-Prior Ablation

  • 이미지들 대상들의 데이터셋의 일부를 사용하여 다음 조건에 따라 파인튜닝 (5개 대상 사용)
    • 클래스 명사 (class noun) 사용하지 않음
    • 랜덤하게 샘플링 된 틀린 클래스 명사 사용
    • 정답 클래스 명사 사용
  • 결과는 표 4 참고
    •  
    • 정답 클래스 명사를 사용한 경우는 신뢰도 있게 대상에 잘 맞는 것을 확인할 수 있음
    • 틀린 클래스 명사를 사용한 경우 (예시: 가방인데 “캔”으로 적용) 대상과 클래스 사전지식 간 분쟁이 발생 → 둥그런 가방이 생성되는 등 잘못 생성되는 경우 발생
    • 클래스 명사를 사용하지 않는 경우 모델이 클래스 사전 지식을 사용하지 않음 → 대상에 대한 학습과 수렴이 어려워지며 잘못된 결과를 생성

3.4. Applications

Recontexualization

  • 특정 대상을 다른 맥락으로 하여 새로운 이미지 생성 → 그림 7 참고
    •  
    • 프롬프트 형식 → a [V] [class noun] [context description]
    • 대상을 새로운 포즈, 장면으로 실제적인 이미지를 생성할 수 있음

Art Renditions

  • 프롬프트 형식 → “a painting of a [V] [class noun] in the style of [famous painter]” 혹은 “a statue of a [V] [class noun] in the style of [famous sculptor]
  • 위의 프롬프트를 통해 대상에 대한 예술적인 랜더링 수행
  • 그림 8 중간 행 참고

Novel View Synthesis

  • 새로운 시점에서 대상 (고양이)에 대한 이미지를 생성 → 그림 8 상단 행 참고
  • 학습에 사용한 이미지는 4장의 정면 이미지 뿐이지만 위쪽, 아래쪽, 뒤쪽에서 보는 고양이의 모습을 추론하여 생성

Property Modification

  • 대상의 특성을 변경 → 그림 8의 아랫줄 참고
    • 차우차우 강아지를 다른 동물 종으로 변환
  • 프롬프트 형식 → “a cross of a [V] dog and a [target species]”
  • 강아지의 얼굴 특징이 잘 보존되면서 다른 동물 종으로 변환된 것을 확인할 수 있음
  • 또한 그림 7의 “a transparent [V] teapot” 처럼 재질에 대한 변경도 가능

3.5. Limitations

  • 실패 사례들 → 그림 9 참고
  • 첫번째는 프롬프트의 맥락에 대해 정확한 이미지를 생성하지 못함
    • 이에 대한 이유로 생각할 수 있는 것 → 해당 텍스트에 대한 사전 지식 부족, 학습 셋에서 대상과 컨셉이 함께 등장할 확률이 적은 경우 생성이 어려움
  • 두번째는 프롬프트 맥락-외형의 엉킴 (entanglement)
    • 프롬프트의 맥락 때문에 대상의 외형이 변경됨 (예시: 가방의 색이 프롬프트에 따라 변경)
  • 세번째는 실제 이미지에 너무 오버피팅 되는 경우
    • 프롬프트가 입력 데이터의 상황과 유사한 경우 너무 해당 입력 이미지와 유사한 이미지만 생성하도록 오버피팅 될 수 있음
  • 다른 한계점 → 몇몇 대상은 쉽게 학습하지만 (예시: 강아지, 고양이) 흔하지 않은 대상에 대해서는 대상에 대한 다양한 변형을 지원하지 않음
  • 마지막으로 대상의 특징에 대해 환각 (hallucination)이 생기는 경우가 있음 → 모델의 강한 사전 지식이나 복잡한 변경 때문에 발생

4. Conclusions

  • 대상에 대한 몇장의 이미지만으로 프롬프트를 사용하여 대상에 대한 새로운 이미지를 합성하는 기법을 제안
  • 핵심 아이디어 → text-to-image 확산 모델의 출력 도메인에서 주어진 대상의 임베딩을 대상에 대한 고유 식별자와 결합
  • 파인튜닝 과정은 3-5개의 대상 이미지만으로 수행될 수 있음
  • 동물이나 사물을 기반으로 이미지 생성시 다양한 응용 사례들을 보임