본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Computer Vision

[2025-1] 주서영 - Adding Conditional Control to Text-to-Image Diffusion Models

by 영써 2025. 2. 15.

ControlNet

GitHub

 

GitHub - lllyasviel/ControlNet: Let us control diffusion models!

Let us control diffusion models! Contribute to lllyasviel/ControlNet development by creating an account on GitHub.

github.com

  • ICCV 2023
  • 3626회 인용

1. Introduction

  • 기존 Text-Image 모델(Stable Diffusion, DALL·E 2, MidJourney, etc.)은 이미지 생성은 뛰어났지만 프롬프트를 수정하며 원하는 결과를 얻기까지 반복 작업이 필요하고 Fine-tuning에서는 데이터셋과 훈련 비용 등에 문제가 있었음
  • ControlNet은 기존의 diffusion model을 사용하여 모델의 성능을 유지하면서도 텍스트 프롬프트 없이도 다양한 조건(Edge, Depth, Segmentation, Human Pose) 등을 학습하고 반영하는데 성공하였음

입력으로 들어간 Condition과 생성된 Image Output

  • ControlNet에서의 Image와 Text를 Condition으로 입력한 결과로 구체적이고 정확한 이미지가 생성되는 것을 볼 수 있음

2. Related Work

(1) Text-Image Diffusion Model

  • Stable Diffusion, DALL·E 2, MidJourney 등
  • 높은 품질의 이미지 생성을 가능하게 하지만 공간적 구성 제어가 어려운 문제를 가지고 있음

(2) Fine-tuning

  • LoRA, Adapter Methods 등
  • 원본 네트워크와 병렬로 새로운 네트워크를 학습하여 기능을 확장

(3) Image-to-Image Translation

  • GAN의 CycleGAN, Pix2Pix와 Diffusion의 PITI, Palette
  • 텍스트-이미지 모델과 달리 이미지-이미지 변환 모델은 특정 입력 조건을 반영하여 결과를 생성하는 데 강점이 있음

⇒ ControlNet은 기존 Diffusion Model이 이미지를 잘 생성한다는 점에서 모델 구조와 학습 파라미터를 그대로 가져오고 Condition Image가 입력으로 들어간 Diffusion Model을 구성하였음

3. Method

(1) Block Architecture

(a) Diffusion Model Arichitecture와 (b) ContorlNet Architecture

  • ControlNet은 Diffusion Model의 신경망 블록을 고정(locked)한 상태에서 Trainable copy를 추가하여 학습 방식으로 동작함
    • Trainable copy는 기존 Architecture와 파라미터를 복사하여 사용하고 zero convolution layer를 통해 연결됨
    • LoRA, Adapter처럼 별도의 Trainable Parameter를 Pretrained Model에 병렬로 구성하였는데 학습 시 Loss를 안정화 해줄 방법이 필요 → zero convolution

Zero convolution layer

  • 모든 wegiht와 bias가 0으로 초기화된 1 x 1 convolution layer ⇒ feature map의 크기 유지

$$
y = \mathcal{F}(x; \Theta)
$$

  1. input feature map $x$와 파라미터 $\Theta$가 있고 이를 함수 $F$로 표현하여 output feature $y$ 출력됨
  2. Trainable copy는 함수 $F$에 해당하는 구조와 파라미터 $\Theta$를 그대로 복제한 layer

$$
y_c = \mathcal{F}(x; \Theta) + \mathcal{Z} \left( \mathcal{F} \left( x + \mathcal{Z}(c; \Theta_{z1}); \Theta_c \right); \Theta_{z2} \right)
$$

  1. $x$에 zero convolution으로 인코딩된 condition feature $Z(c;\Theta{}_{z_1})$를 합산
    ($\mathcal{Z}$ : zero convolution)
  2. trainable copy layer를 통과하여 $y$와 동일한 크기의 condition feature를 추출
  3. 두번째 zero convolution을 통과하여 원래 layer의 출력값 $y$에 합산
  • zero convolution을 활용하면 trainable copy에 있는 hidden layer가 backpropagation에서 생기는 noise에 영향을 받는 문제를 해결할 수 있음

zero convolution에 대한 효과

  • zero convolution 적용과 prompt의 따른 이미지 생성 결과로 zero convolution을 적용했을 때 성능이 좋은 것을 확인할 수 있음

(2) Overall Architecture

Stable Diffusion(SD) + ControlNet

  • ControlNet은 Stable Diffusion의 U-net 구조 사용
  • SD의 Encoder Block 12개와 Middle Block 1개 ⇒ 총 13개의 블럭 복제하여 Trainable copy 생성
  • SD와 동일한 크기의 feature를 추출하기 위해 512 x 512 이미지를 컨디션 입력 $c$로 받아 64 x 64의 latent image를 추출하도록 별도의 인코딩 레이어를 구성

(3) Training

① Loss function
$$
\mathbf{c}_f = \mathcal{E}(\mathbf{c}_i)\\\mathcal{L} = \mathbb{E}_{z_0, t, c_t, c_f, \epsilon \sim \mathcal{N}(0,1)}\left[ \left\| \epsilon - \epsilon_{\theta} (z_t, \mathbf{t}, c_t, c_f) \right\|_2^2 \right]
$$

  • Loss function은 nosie를 예측하는 형태 [Stable Diffusion Loss 계산방식]
    • $t$ 시점 실제로 추가된 노이즈 - 예측된 노이즈
  • $z_t$ : input latent
  • $t$ : time step
  • $c_t$ : input text prompt
  • $c_f$ : input condition

② Randomly replace 50% text prompts $c_t$

  • 학습 데이터의 절반은 $c_t$를 빈문자열로 변환하여 프롬프트에 의존하지 않고 모델이 condition에 맞는 이미지 결과를 생성할 수 있도록 함

③ Sudden convergence phenomenon

condition image를 따르지 않다가 sudden convergence phenomenon이 일어나는 현상

  • 모델이 점진적으로 학습하지 않고 어느 순간 입력 condition을 정확히 따라가는 것을 관찰

(4) Inference

① Classifier-free guidance resolution weighting

  • 최종 output인 $\epsilon_{pred}$와 조건 정보를 반영한 output인 $\epsilon_{c}$와 그렇지 않은 $\epsilon_{uc}$
    $$
    \epsilon_{pred} = \epsilon_{uc} + \beta_{cfg} (\epsilon_{c} - \epsilon_{uc})
    $$
  • $\beta_{cfg}$에 따라 예측 노이즈에 input prompt가 얼마나 영향을 끼칠 것인지 결정
    CFG guidance에 따른 영향
  • (b) CFG를 사용하지 않은 경우
    • 조건 정보 모두 사용 $\epsilon_c=\epsilon_{uc},\epsilon_{pred}=\epsilon_{uc}$
  • (c) $\epsilon_c$에만 조건 정보를 사용하는 경우
    • 조건 정보 강하게 나타남 ⇒ CFG guidance strength을 줄이는 방법을 제안함
  • $w_i = \frac{64}{h_i}, \text{ where } h_i \text{ is the size of the } i^\text{th} \text{ block, e.g., } h_1 = 8, h_2 = 16, \dots, h_{13}=64.$

② Composing multiple ControlNets

여러 condition에 대한 생성 이미지

  • 여러 컨디션(etc. Pose, Depth )은 여러 ControlNet을 두어 이미지를 생성할 수 있음

다양한 condition에 대한 뛰어난 확장성을 보이는 ControlNet

4. Conclusion

(1) Influence of training dataset sizes

데이터 세트 크기에 따른 영향

  • 학습 데이터셋이 많을수록 이미지 Condition을 더 잘 반영하고 1k만을 사용하더라도 잘 반영하는 것을 확인할 수 있음

(2) Capability to interpret contents

입력이 모호하고 프롬프트에서 객체 내용을 언급하지 않았을 때의 결과

  • 모호한 입력 이미지를 사용하고 사용자가 프롬프트에서 객체에 대한 내용을 언급하지 않아도 모델이 해석하려는 시도를 보임

(3) Transferring to community models

다양한 Diffusion Model에 ControlNet을 적용한 결과

  • 기존 모델을 수정하지 않고 다양한 모델에 적용할 수 있음

QnA

1. Decoder 부분에는 추가되는 Trainable copy가 없는지?

  • Decoder에는 추출된 특징을 사용하여 이미지를 생성하기 때문에 학습 과정에서 Trainable copy를 두지 않아도 이미지 생성에 문제가 없었을 것이다.

2. 기존 모델인 Stable Diffusion과 비교하여 메모리 사용량 변화는 어떨 것인지?

  • 병렬로 model을 구성해주었기 때문에 메모리 사용량 증가할 것이다.
  • 논문 저자도 SD를 그냥 최적화하는 것 보다 23% GPU 메모리와 34%의 시간의 더 소요되었다고 하였다.