[23′ ICCV] ControlNet : Adding Conditional Control to Text-to-Image Diffusion Models

This entry is part 15 of 15 in the series Image Generative Model

1. 들어가며

최근 인공지능 분야에서 텍스트-이미지 변환 모델의 발전은 매우 놀라운 수준에 이르렀습니다. 특히 Stable Diffusion과 같은 모델들은 사용자가 입력한 텍스트를 기반으로 고품질의 이미지를 생성하는 데 큰 성공을 거두었습니다. 이러한 모델들은 예술, 디자인, 마케팅 등 다양한 분야에서 창의적인 작업을 지원하며 많은 주목을 받고 있습니다. 하지만 이러한 모델들에도 한계가 존재합니다. 텍스트만으로 복잡한 레이아웃이나 특정 포즈와 같은 세부적인 이미지를 정확히 표현하는 데에는 어려움이 있습니다.

예를 들어, “기우뚱하게 서 있는 남자”라는 텍스트 프롬프트를 입력한다고 상상해봅시다. “기우뚱하게 서 있는”이라는 표현은 매우 추상적이며, 다양한 방식으로 해석될 수 있습니다. 이를 통해 생성된 이미지는 사용자가 의도한 정확한 모습을 담지 못할 수 있습니다. 이처럼 텍스트로만 이미지를 제어하는 것은 세밀한 이미지 표현에 한계를 가질 수밖에 없습니다.

이러한 문제를 해결하기 위해 제안된 것이 바로 ControlNet입니다. 이번 포스팅에서는 ControlNet의 핵심 내용을 살펴보고자 합니다. ControlNet은 텍스트뿐만 아니라 이미지 형태의 조건부 입력도 함께 사용하여 더욱 구체적이고 정확한 이미지를 생성할 수 있도록 합니다. 이를 통해 기존 텍스트-이미지 변환 모델의 한계를 극복하고, 다양한 응용 분야에서 더욱 정밀한 이미지 생성이 가능해집니다.

먼저 ControlNet의 기본 개념과 필요성을 설명하고, 제안된 방법에 대해 자세히 알아보겠습니다. ControlNet은 기존의 대형 텍스트-이미지 디퓨전 모델을 그대로 활용하면서, 추가적인 학습 가능한 복사본을 통해 새로운 조건부 제어 기능을 제공합니다. 이때 안정적인 학습을 위해 Zero Convolution이라는 기법을 도입하여 학습 초기 단계의 불안정을 해결합니다.

이후 Stable Diffusion 모델에 ControlNet을 적용한 사례를 통해 구체적인 아키텍처와 학습 방법을 살펴볼 것입니다. Stable Diffusion은 이미지를 생성하는 데 있어 높은 성능을 자랑하는 모델로, ControlNet을 통해 더 정교한 제어가 가능해집니다. ControlNet을 통해 경계선 맵, 포즈 맵, 깊이 맵 등 다양한 조건부 입력을 사용하여 원하는 이미지를 생성할 수 있습니다.

마지막으로 ControlNet의 장단점을 종합적으로 분석하여, 이 기술이 실제로 어떤 장점을 가지며, 어떤 부분에서 주의가 필요한지 알아보겠습니다. ControlNet의 장점으로는 향상된 제어력, 기존 모델 활용, 안정적인 학습, 효율적인 파라미터 사용, 다양한 조건부 입력 지원 등이 있으며, 단점으로는 복잡한 아키텍처, 추가적인 학습 비용, 한정된 데이터셋, 디코더 부분의 제어 부족 등이 있습니다.

이 포스팅을 통해 ControlNet의 혁신적인 접근 방식과 이를 통해 얻을 수 있는 가능성에 대해 이해할 수 있을 것입니다. ControlNet은 텍스트-이미지 변환 모델의 새로운 가능성을 열어주며, 다양한 응용 분야에서 창의적인 작업을 지원할 수 있습니다. 함께 알아보시죠.

2. ControlNet

이번 챕터에서는 ControlNet 논문의 핵심 부분인 제안 방법에 대해 구체적으로 알아보도록 하겠습니다. 먼저 ControlNet이 하고자 하는게 무엇인지 살펴보겠습니다. 이어서 이를 구현하기 위한 제안 방법을 살펴볼거구요. 구체적으로 대표적인 Text To Image Diffusion Model인 Stable Diffusion에 적용된 ControlNet의 모습을 살펴보겠습니다. 마지막으로는 ControlNet의 학습과 추론 방법에 대해 간단하게 살펴보겠습니다.

2-1. 전체 그림

먼저 본격적으로 ControlNet의 Method를 살펴보기 전에, 그래서 ControlNet이 하고자 하는게 무엇인지를 정리해보겠습니다.

기존에도 Text To Image Diffusion Model들은 많이 존재했는데요. 대표적으로 Stable Diffusion을 들 수 있습니다. 이들 모델은 공통적으로 생성하고자 하는 이미지를 묘사하는 Text를 Condition으로 입력 받아 Image를 생성하는 형태를 취하고 있습니다. 그림으로 표현하면 아래와 같은데요.

그림1. Text To Image Diffusion Model
그림1. Text To Image Diffusion Model

Noise로 부터 Image를 생성하는 가장 기초적인 Diffusion Model에 Time Step t 뿐만 아니라, 생성하고자 하는 이미지를 묘사하는 Text를 Condition으로 입력받아 학습하는 모습을 볼 수 있습니다.

이렇게 제안된 다양한 Text To Image Diffusion Model들은 실제로 잘 동작했고, 이미지 생성 모델의 수준을 한 차원 끌어올렸다고 해도 과언이 아니죠. 하지만 문제는 그 응용에 있습니다. 실제 어플리케이션 관점에서 생각해보면, 단순히 생성하고자 하는 이미지를 Text로 묘사하는 방식에는 한계가 있습니다. 이는 Text 표현 방식의 태생적인 한계라고 할 수 있는데요. 예를 들어 볼게요. “기우뚱하게 서있는 남자 모습을 만들어줘” 라는 Text Prompt를 입력했다고 상상해보겠습니다. 이때 “기우뚱하게 서있는” 이라는 표현은 아주 많은 경우의 이미지를 포함하는 개념입니다. 따라서 내가 원하는 이미지를 정확하게 생성하기 위해서는 Text Prompt를 더욱 다듬어줘야 하죠. 하지만 이렇게 Text로 표현하는 문장에 “어설픈 이미지”를 Condition으로 추가해줄 수 있다면, 표현력이 훨씬 정확해집니다. 아래 예시를 볼게요.

그림2. Condition과 생성된 Image Output
그림2. Condition과 생성된 Image Output

위 그림은 실제 ControlNet의 예시로 들어간 Condition Prompt입니다. 가장 왼쪽은 입력으로 들어간 Condition인데요. 이미지 형태로 들어간 모습을 볼 수 있습니다. 위쪽은 사슴 그림을 edge 형태로 표현했고요. 아래 그림은 사람의 Key Point를 표현한 이미지입니다. 오른쪽은 이렇게 입력으로 들어간 Condition Image에 대해 생성된 이미지를 보여주고 있습니다. Image Condition과 Text Condition을 같이 사용해주니 훨씬 구체적이고 정확한 이미지가 생성되는 모습을 볼 수 있습니다.

2-2. 제안 방법

결국 ControlNet이 제안하고자 하는 방법은 Image 형태의 Condition을 받아서 Image를 생성하는 모델인데요. 그림으로 표현하면 다음과 같습니다.

그림3. ControlNet 구성
그림3. ControlNet 구성

위에서 살펴본 Text To Image Diffusion Model과 비교해보면 입력 형태가 Condition Image로 들어간다는 차이점이 있음을 확인할 수 있습니다.

그럼 이렇게 Image 형태의 Condition이 입력으로 들어간 Diffusion Model을 어떻게 구성하면 좋을까요? ControlNet 제안 방법을 살펴보기 전에 먼저 상상해보죠. 다양한 방법이 있을텐데요. 가장 쉽게 생각해볼 수 있는 방법은 일단 기존 Pretrained Model은 그대로 가져가는겁니다. 그리고 이 Pretrained Model에게 Image Condition 내용을 잘 전달하는 별도의 Model을 구성해주는거죠. 이왕이면 이 추가되는 Model은 크기가 작을수록 좋을겁니다. 마치 최근 LLM에서 Parameter Efficient FineTuning이 각광받는것 처럼요. Adapter, LoRA 등 처럼 별도의 Trainable Parameter를 Pretrained Model에 병렬로 구성해주어 FineTuning 해준다고 생각하면 될 것 같습니다.

이때 이 추가되는 모델을 어떻게 구성해야 할까요? 마찬가지로 가장 쉽게 생각할 수 있는 방법은, 일단 기존 Diffusion Model 구성을 그대로 사용하는거겠죠. 기존 Diffusion Model이 이미지를 잘 생성한다는 점은 검증이 되었으니까요. 이렇게 기존 모델 Architecture를 그대로 가져올때는, 학습 파라미터까지 그대로 복사해와야 할겁니다. 왜냐하면 이 부분을 처음부터 학습하려면 Pretrained Model을 학습한 만큼의 학습 이미지 데이터가 필요할테니까요.

추가로 한가지 고려해야 할 사항이 더 있습니다. 이렇게 Trainable Copy만 병렬로 연결해주면 문제가 있는데요. 학습 초창기 불안한 모습을 보인다는 점입니다. 아무래도 학습이 완료된 모델에, 병렬로 추가 파라미터를 붙여놓고 새로운 데이터로 학습을 해주면 Loss 그래프가 크게 흔들리겠죠. 이를 안정화해줄 트릭이 필요할겁니다.

그림4. ControlNet Architecture
그림4. ControlNet Architecture

지금까지 설명한 내용이 위 그림에 모두 표현되어 있는데요. 왼쪽 그림은 기존 Diffusion Model을 표현하고 있고요. 오른쪽 그림은 여기에 ControlNet을 추가한 모습을 표현해주고 있습니다. 우선 기존 Pretrained Parameter는 모두 고정해준 모습을 볼 수 있고요. Trainable Copy라고 표현된 부분은 기존 Architecture와 파라미터를 그대로 복사해온 부분을 의미합니다. 그리고 위아래로 Zero Convolution이 붙어 있는 모습을 볼 수 있는데요. 이 Zero Convolution이 앞서 설명했던, 초창기 학습 안정화를 위해 추가된 부분이라고 보면 됩니다. 이 Zero Convolution은 1×1 Convolution 파라미터를 모두 0으로 초기화하여 구성해줍니다. 따라서 학습이 시작되는 순간에는 아무런 영향을 주지 않죠. 이후 Gradient를 받으며 조금씩 파라미터를 조정해가며 안정적으로 ControlNet을 학습하는데에 기여해줍니다.

2-3. ControlNet For Text To Image Diffusion

그렇다면 이렇게 제안된 방법의 ControlNet을 기존 Text To Image Diffusion Model에 적용하려면 어떻게 하면 될까요? 결국 ControlNet의 핵심 내용은 Trainable Copy와 위 아래의 Zero Convolution인데요. 예를 들어 Stable Diffusion에 ControlNet을 적용하여 FineTuning 하려면, 구체적으로 Architecture를 어떻게 구성해줘야 하는지 궁금해집니다.

그림5. Stable Diffusion에 적용된 ControlNet
그림5. Stable Diffusion에 적용된 ControlNet

위 그림은 Stable Diffusion에 ControlNet을 적용한 모습을 보여주는 그림입니다.

크게 세 가지 포인트를 찾을 수 있습니다.
첫 번째 포인트는 Trainable Copy입니다. 기존 Encoder 부분에서 동일한 Architecture와 Parameter를 복사해서 병렬로 구성해준 모습을 볼 수 있습니다. 이 부분은 입력으로 들어온 Image Condition에 대해 특징을 추출하는 역할을 수행해 줄겁니다.
두 번째 포인트는 Zero Convolution입니다. Trainable Copy 위 아래로 Zero Convolution이 연결되어 있는 모습을 볼 수 있는데요. 이는 앞서 설명한 대로 초창기 학습 안정화에 기여합니다.
세 번째 포인트는 Decoder 부분입니다. Decoder 부분에는 추가되는 Trainable Copy가 없는데요. 이건 이렇게 생각해볼 수 있습니다. 우선 추가되는 학습 파라미터는 적을수록 좋습니다. 따라서 저자들은 가능한 추가되는 학습 파라미터를 최소화하려고 고민했을텐데요. 그럼에도 Encoder 부분에는 반드시 추가를 해줘야 했을겁니다. 입력으로 들어온 Image Condition의 특징을 추출해야 하니까요. 하지만 Decoder 부분에도 추가 파라미터가 필요할까요? 저자들은 실험을 통해 검증해봤겠지만, 필요하지 않을겁니다. Decoder는 추출된 특징을 사용하여 이미지를 생성하는 역할을 하는데요. 이미 이 부분은 잘 학습이 되었기 때문이죠. Encoder 부분에서 Condition 특징만 잘 추출해준다면 이미지 생성에는 문제가 없었을겁니다.

2-4. Train & Inference

이렇게 기존 Diffusion Model에 병렬로 연결된 추가 학습 파라미터는 기존 Diffusion Model과 동일한 방식으로 학습됩니다. FineTuning을 위한 데이터셋을 구성해주고, 각 시점별 Noise를 예측하도록 학습해주는 것이죠.

그림6. ControlNet Loss Function
그림6. ControlNet Loss Function

이렇게 학습해주면 어느 순간 학습 퀄리티가 퀀텀 점프를 한다고 하는데요.

그림7. 학습 Step에 따른 생성 이미지
그림7. 학습 Step에 따른 생성 이미지

위 그림을 보면, Edge 형태의 사과를 주고 이미지를 생성하도록 시키고 있는데요. 6100 Step까지는 전혀 엉뚱한 이미지를 생성하는 모습을 볼 수 있습니다. Text를 같이 학습했기 때문인지 Apple 제품과 혼동하는 모습을 보이네요. 그러다가 6133 Step에서부터 갑자기 입력된 Condition에 해당하는 이미지를 잘 생성하는 모습을 보여주고 있습니다.

그림8. 다양한 Condition에 대한 생성 이미지
그림8. 다양한 Condition에 대한 생성 이미지

심지어 입력 Condition을 여러개 동시에 구성해주는것도 가능한데요. 위 그림을 보면 Pose와 Depth 정보를 동시에 Condition으로 주었을때의 ControlNet이 생성해낸 이미지를 볼 수 있습니다. 두 가지 Condition과 Text Prompt를 모두 만족하며 이미지를 생성해낸 모습을 볼 수 있습니다.

3. 실험 결과

지금까지 ControlNet의 제안 방법을 모두 살펴봤는데요. 이번 챕터에서는 이렇게 구성된 ControlNet의 실험 결과 부분을 살펴보겠습니다.

먼저 입력된 조건을 만족하여 얼마나 이미지를 잘 생성했는지, 다양한 형태의 Condition에 대해 생성된 이미지들을 살펴보겠습니다.

그림9. 다양한 Condition에 대한 생성 이미지
그림9. 다양한 Condition에 대한 생성 이미지

위 그림은 그 결과들을 보여주고 있는데요. Sketch, Normal Map 등 다양한 Condition에 대해 생성한 이미지를 보여주고 있습니다. 생성된 결과들 하나 하나가 전부 Condition을 잘 만족하고 있으면서 고퀄리티의 이미지를 잘 생성한 모습을 볼 수 있습니다.

4. 장단점

이번 챕터에서는 ControlNet의 장단점에 대해 살펴보겠습니다.

첫 번째 장점은 향상된 제어력입니다. ControlNet은 텍스트 기반의 조건부 입력뿐만 아니라 이미지 기반의 조건부 입력도 함께 사용하여 더 구체적이고 정확한 이미지 생성을 가능하게 합니다. 예를 들어, 경계선 맵이나 포즈 맵과 같은 이미지를 조건부 입력으로 사용함으로써 텍스트만으로 표현하기 어려운 세밀한 이미지 생성을 할 수 있습니다.

두 번째 장점은 기존 모델을 그대로 활용할 수 있다는 점입니다. ControlNet은 기존에 잘 훈련된 대형 텍스트-이미지 디퓨전 모델을 그대로 사용하면서, 추가적인 학습 가능한 복사본을 통해 새로운 조건을 학습합니다. 이를 통해 대규모 데이터셋으로 훈련된 모델의 강력한 성능을 그대로 유지하면서 조건부 제어 기능을 추가할 수 있습니다.

세 번째 장점은 안정적인 학습을 보장한다는 것입니다. Zero Convolution 레이어를 사용하여 초기 학습 단계에서 모델의 출력이 불안정해지는 것을 방지합니다. Zero Convolution은 초기 가중치가 모두 0으로 설정되어 학습 초기에 모델의 성능이 저하되지 않고, 점진적으로 조건부 입력에 맞게 학습할 수 있도록 도와줍니다.

네 번째 장점은 효율적인 파라미터 사용입니다. ControlNet은 학습 가능한 파라미터의 수를 최소화하여 모델의 복잡성을 줄이고, 메모리 사용량과 훈련 시간을 절약합니다. 이는 특히 GPU 자원이 제한된 환경에서 큰 장점이 될 수 있습니다.

다섯 번째 장점은 다양한 조건부 입력을 지원한다는 것입니다. ControlNet은 경계선, 깊이 맵, 포즈 맵, 스케치 등 다양한 조건부 입력을 지원하여 더 다양한 형태의 이미지 생성을 가능하게 합니다. 이는 여러 응용 분야에서 ControlNet의 활용 범위를 넓혀줍니다.

첫 번째 단점은 복잡한 아키텍처입니다. ControlNet의 구조는 기존 모델에 비해 다소 복잡합니다. 인코더 부분에 학습 가능한 복사본을 추가하고 Zero Convolution을 사용하는 등의 추가적인 구성 요소가 필요합니다. 이는 구현과 유지보수의 복잡성을 증가시킬 수 있습니다.

두 번째 단점은 추가적인 학습 비용입니다. 학습 가능한 복사본을 추가함으로써 학습 시 추가적인 계산 비용이 발생합니다. 이는 특히 대규모 데이터셋을 사용하는 경우 훈련 시간이 늘어나고, 더 많은 하드웨어 자원이 필요할 수 있습니다.

세 번째 단점은 한정된 데이터셋입니다. 특정 조건부 입력(예: 포즈 맵, 깊이 맵 등)에 대한 데이터셋이 제한적일 수 있습니다. 이러한 경우, 충분한 양질의 데이터를 확보하지 못하면 모델의 성능이 저하될 수 있습니다.

네 번째 단점은 디코더 부분의 제어 부족입니다. ControlNet은 인코더 부분에만 학습 가능한 복사본을 적용하고 디코더 부분에는 적용하지 않습니다. 이는 디코더에서 조건부 제어가 충분히 반영되지 않을 가능성을 내포하고 있습니다. 다만, 이는 실험을 통해 보완된 부분일 수 있습니다.

ControlNet은 다양한 조건부 입력을 활용하여 텍스트-이미지 디퓨전 모델의 제어력을 크게 향상시키는 동시에, 안정적인 학습과 효율적인 파라미터 사용을 가능하게 합니다. 그러나 복잡한 아키텍처와 추가적인 학습 비용 등의 단점도 존재합니다. 이러한 장단점을 고려하여 다양한 응용 분야에서 ControlNet을 효과적으로 활용할 수 있을 것입니다.

5. 마치며

이번 포스팅에서는 텍스트-이미지 변환 모델의 한계를 극복하고자 제안된 ControlNet에 대해 알아보았습니다. ControlNet은 기존의 텍스트 기반 이미지 생성 모델에 이미지 형태의 조건부 입력을 추가하여 더 정밀하고 구체적인 이미지를 생성할 수 있도록 설계되었습니다. 이를 통해 사용자들은 더욱 다양하고 구체적인 요구를 반영한 이미지를 얻을 수 있게 되었습니다.

ControlNet의 핵심 아이디어는 기존에 잘 훈련된 대형 모델을 그대로 유지하면서, 학습 가능한 복사본과 Zero Convolution 레이어를 통해 안정적인 학습을 보장하는 것입니다. 이러한 접근 방식은 모델의 성능을 유지하면서도 새로운 조건부 제어 기능을 효과적으로 추가할 수 있게 합니다. 특히 Zero Convolution 레이어는 초기 학습 단계에서 모델의 성능이 저하되지 않도록 안정성을 제공하며, 점진적으로 학습을 진행할 수 있게 도와줍니다.

ControlNet의 장점은 다양합니다. 향상된 제어력을 통해 사용자는 더 구체적이고 정밀한 이미지를 생성할 수 있으며, 기존 모델을 그대로 활용함으로써 학습 시간을 절약하고 효율적인 파라미터 사용이 가능합니다. 또한 다양한 조건부 입력을 지원함으로써 여러 응용 분야에서 활용될 수 있는 가능성을 열어줍니다.

하지만 ControlNet에도 몇 가지 단점이 존재합니다. 복잡한 아키텍처와 추가적인 학습 비용은 구현과 유지보수의 어려움을 증가시킬 수 있으며, 특정 조건부 입력에 대한 데이터셋이 제한적일 경우 모델의 성능이 저하될 수 있습니다. 또한 디코더 부분에는 학습 가능한 복사본이 적용되지 않아 조건부 제어가 충분히 반영되지 않을 가능성도 존재합니다.

그럼에도 불구하고 ControlNet은 텍스트-이미지 변환 모델의 새로운 가능성을 제시하며, 다양한 응용 분야에서 창의적인 작업을 지원할 수 있는 강력한 도구입니다. 앞으로 더 많은 연구와 발전이 이루어진다면, ControlNet은 더욱 발전된 형태로 다양한 산업 분야에서 활용될 수 있을 것입니다.

이 포스팅을 통해 ControlNet의 혁신적인 접근 방식과 이를 통해 얻을 수 있는 가능성에 대해 이해할 수 있기를 바랍니다. ControlNet은 텍스트-이미지 변환 모델의 한계를 극복하고, 더 나은 이미지를 생성할 수 있는 새로운 길을 제시합니다. 앞으로도 이 분야의 발전을 기대해봅니다.

6. 참고자료

  1. ControlNet Paper
  2. Stable Diffusion
  3. LoRA
Series Navigation<< [22′ ICLR] SDEDIT: GUIDED IMAGE SYNTHESIS AND EDITING WITH STOCHASTIC DIFFERENTIAL EQUATIONS
0 0 votes
Article Rating
Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
ㅇㅅㅇ
ㅇㅅㅇ
1 month ago

잘보고 갑니다 덕분에 이해가 늘었습니다 ^^

2
0
Would love your thoughts, please comment.x
()
x
Scroll to Top