본문 바로가기

Hello MLop/DL

Stable Diffusion

230221

 


Stable Diffusion

2022년 8월 Stability AI에서 오픈소스 라이선스로 배포한

text-to-image 인공지능 모델이다.

 

text2img에 주로 사용되지만

inpainting, outpainting과 같은

다른 작업에도 적용 가능 하다.

 

 가장 큰 강점은

Open AIDall-e구글Imagen과 같은기존 text-to-image와 다르게

 

컴퓨터 사용 리소스를 대폭 줄여8GB 이상의 VRAM을 가진 컴퓨터에서도 돌릴 수 있고

 

오픈소스. 즉, 무료다.

 


 

🔥 Model Architecture

 

Stable Diffusion은 

LDM(Latent Diffusion Model)이라고 하는

확산 모델(DM)의 일종을 사용한다.

 


💡 Latent Diffusion

 

이미지에 노이즈를 주고

이를 다시 역산하여

 

신경망에 노이즈 이미지에서

일반 이미지를 복원시키도록 학습 시킨 후

 

신경망에 노이즈만 들어있는 이미지와

적절한 힌트를 주면 맞는 이미지를 출력하는것.

 


구조는 크게 3가지 인공신경망로 구성되어있다.

 

1️⃣ Latent Diffusion - CLIP

유저가 텍스트를 입력하면

텍스트 인코더(CLIP)가

유저의 텍스트를 토큰(Token)이라는

UNet이 알아 들을 수 있는 언어(latent vector)로 변환

 

"text" ▶ Tokeniz latent vector = text embedding

 

2️⃣ UNet

토큰을 기반으로

무작위로 생성된 노이즈디노이징하는 방식이다.

디노이징반복하다 보면

제대로 된 이미지가 생성


💡 디노이징

💡 Scheduler 

 

denoise를 반복하기 전에

어떤 방식(노이즈 세기, 종류, 확률 편미분 방정식 이용)으로

처리하고 반복하느냐를 결정하는 것

 

✔ DDPM, DDIM, PNDM,

Euler, Euler a, DPM++ 등이 있다.


3️⃣ VAE(Variational Auto Encoder)

VAE픽셀 공간에서

더 작은 차원의 잠재 공간으로 이미지를 압축하여 

이미지의 근본적인 의미론적 의미를 캡처한다.

 

# 위 방식으로 효율적인 고해상도의 이미지를 얻는다.

 

💡 VAE의 역할

 

Encoder : 어떤 값을 수학적 원리를 통해 특징을 추출하여 학습

Decoder : 임의의 값 z(특징에 대한 latent vector)가 주어지면

그 값을 바탕으로 원래 데이터로 복원

 

Stable diffusion의 이 부분에서

Latent Diffusion Model

Diffusion Model 이냐의 차이 발생

 

Stable diffusion의 경우

 

VAE를 통해 만든

latent vector를 사용해서 

 

U-Net을 거쳐 

encode-decode 과정을 거치고

이를 통해 해상도를 높인다.

 

'Hello MLop > DL' 카테고리의 다른 글

NLP_Transfomer  (0) 2023.02.11
NLP_어텐션 메커니즘(Attention Mechanism)  (0) 2023.01.23
NLP_RNN을 이용한 Encoder-Decoder  (0) 2023.01.23
MLop_DL_LSTM 실습  (0) 2022.12.18
MLop_DL_RNN 실습  (0) 2022.12.17