아이공의 AI 공부 도전기

[논문 Summary] ControlNet (2023.02 arxiv) "Adding Conditional Control to Text-to-Image Diffusion Models"

 

     

 

논문 정보

Citation : 2023.05.14 토요일 기준 56회

저자

Lvmin Zhang, Maneesh Agrawala

Stanford University

 

논문 링크

Official

 

 

Arxiv

https://arxiv.org/abs/2302.05543

 

 

논문 Summary

Abstract

 

 

0. 정리

 

 

ControlNet은 Stable Diffusion과 같은 pretrained large diffusion model에서 추가적인 input condition에 대한 추가 학습을 시키는 것이 작은 데이터 세트 (< 50k)에서도 강건하게 작동하며 빠르게 학습시킴을 보인다. 더불어 다양한 방식의 Control Condition 예를 들어 edge map, segmentation map, keypoint, open pose, scribble과 같은 방법에 대한 조건 작동이 원활이 움직이게 한다.

 

ControlNet의 작동방법은 Zero Convolution이라는 방법을 활용하여 추가적인 모듈들을 설계하고 이에 대한 학습을 통해 효과적인 방법을 할 수 있음을 보인다. 자세한 Notation 기반한 Equation 효과 설명은 아래 Figure에 있다.

 

Figure 2에서 볼 수 있듯 ControlNet은 기존 모델의 parameter는 freeze시킨 상태에서 c라는 condition input이 주어졌을 때 zero convolution과 trainable copy라 불리는 parameter의 조합을 모듈을 활용한다.

Zero Convolution은 단순히 1x1 convolution layer에 weight와 bias가 0으로 초기화된 것을 말한다. (이전에는 Zero module이라는 용어도 생성 모델에서 사용되었고 이 방법은 다른 많은 Deep learning에서도 사용되어 왔다.)

 

초기 training step에 대한 수식적 표현을 하면 아래와 같다.

 

  

그리고 forward pass에 따른 Zero Convolution의 통과 후의 식을 아래와 같이 표현한다.

 

핵심은 이에 대한 Gradient를 진행할 때  식 (6)의 3번째 행에서 0이 되지 않음에 있다. 해당 부분이 0이 되지 않음에 따라 Optimization이 진행될 수 있고 이에 따라 ControlNet의 Weight 변화가 이뤄짐을 알 수 있다.

 

 

Gradient descent에 따른 update가 됨을 위 식에서 보여준다.

 

 

Figure 3는  Stable Diffusion에서 ControlNet의 모델 구성을 보여준다. ControlNet은 Figure 2에서 다룬 Zero Convolution에 해당하는 부분이 원본 모델에 Skip-connection이 중간중간 이뤄지고 있음을 보여준다.

 

Decoder에 해당하는 12개 block과 middle block이 skip-connection되어진다.

 

 훈련은 기존 Stable Diffusion과 마찬가지로 noise에 대한 predict를 위한 objective function을 구성한다.

경우에 따라 Small-scale training도 가능하지만 overfitting의 위험성이 존재한다.

이에 반해 Large-Scale training은 최소 8개의 Nvidia A100 80G가 사용되고 많은 iteration 및 parameter가 사용된다.

 

실제로 3.5에서는 많은 실험의 Dataset, iteration, GPU Time, GPU가 나와있다. (다만 GPU 개수는 안 나옴)

 

아래는 많은 논문 결과들을 볼 수 있다. 자세한 결과는 위에 참조한 논문 링크 직접 참고.

 

한계점이 존재하는데 Figure 28과 같이 semantic recognition에 대한 어려움이 존재한다. 

 

 

Reference

공식 Github

https://github.com/lllyasviel/ControlNet

 

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

 

도움이 되는 YouTube 1.

 

 

 

 

 

 

0000 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading