Stable Diffusion 속성에 대해 알아보다보니 작동원리를 이해해야 겠다는 생각이 들었다.
아래는 스테이블 디퓨전을 포함한 이미지 생성형 AI의 종류 및 원리는 아래와 같다.
1. GANs (Generative Adversarial Networks)
. GAN은 생성기와 판별기라는 두 개의 신경망(생성기, 판별기)으로 이루어져 있음
. 생성기 : 무작위 노이즈를 입력받아 새로운 데이터를 만듦
. 판별기 : 실제 데이터와 생성기가 만든 가상 데이터를 구별
. 두 신경망(생성기, 판별기)은 하나가 이기는 게임처럼 상호 작용하는 경쟁 훈련을 하며 학습을 하며,
나중에는 실제와 같은 이미지를 생성하게 됨
=> 이미지 생성 모델 내 경쟁모델을 만들어 이미지를 만들고 판별하는 과정을 거치며
학습을 하며 진짜와 같은 이미지를 만듦
2. VAE(Variational AutoEncoder)
. 이미지와 같은 고차원 데이터를 저차원 잠재 공간(latent space)에 매핑하고,
이 잠재 공간에서 샘플링하여 새로운 데이터를 생성
. 인코더(Encoder): 입력 데이터를 잠재 공간의 특정 확률 분포에 매핑하고
각 입력 데이터에 대응하는 잠재 변수(latent variable)를 생성합니다
. 디코더(Decoder): 잠재 변수를 입력으로 받아 원본 데이터와 유사한 데이터를 생성
. 확률 분포를 가정하고 이 분포의 파라미터를 바꿔가며 이상적인 확률 분포를 근사하여
입력 데이터의 분포를 학습하고, 잠재 변수를 샘플링하여 새로운 데이터를 생성
=> 이미지 와 확률분포를 학습하여 이미지를 생성
3. Difussion model(확산모델)
. 노이즈를 추가하여 훈련 데이터를 손상시킨 후,
노이즈 추가 프로세스를 역전시켜 데이터를 복구하는 방법을 학습 함
. 데이터 세트의 확률 분포를 생성하는 확산 프로세스를 학습
. 데이터 포인트가 잠재 공간을 통해 확산되는 방식을 모델링하여 데이터 세트의 잠재 구조를 학습
=> 노이즈를 추가한 이미지와 이를 복구하는 과정들을 거치면서 노이즈로부터 이미지를 만듦
이중, stable 는 3. Difussion model(확산모델) 을 사용한다.
잠재확산 모델을 이용한 고해상도 이미지 합성 연구( High-Resolution Image Synthesis with Latent Diffusion Models) 논문에는 다음과 같이 설명이 되어있다.
주요 stable diffusion 의 샘플러별 설명 및 장단점
샘플러 이름 | 설명 | 장점 | 단점 |
k_LMS | 목표 분포를 향한 작고 분산 감소 단계의 시리즈 | 빠르고 효율적인 샘플링 | 일부 방법보다 덜 정확할 수 있음 |
DDIM | k_LMS의 확장으로, 더 많은 분포 정보를 통합 | 정확한 샘플링, 빠른 수렴 | 여전히 적당한 수의 단계가 필요함 |
k_euler_a / Heun | DDIM과 유사하며 속도와 변경된 스타일에 중점 | 우수한 결과를 빠르게 생성, 스타일적 다양성 제공 | 프롬프트에 따라 결과물이 덜 안정적일 수 있음 |
k_dpm_2_a | 고품질을 우선시하는 다단계 샘플러 | 뛰어난 결과를 생성, 정교한 프롬프트에 이상적 | 느림, 실험보다는 이미지 완성에 더 적합 |
요약
AI가 이미지를 생성하기 위해 학습을 하는 방법에는
1. AI내 두개의 경쟁자가 경쟁을 하며 학습을 하는 방법
2. 이미지를 확률분포로 학습하는 방법
3. 노이즈를 추가하고 지우며 학습하는 방법이 있으며,
스테이블 디퓨전은 3번의 방식을 사용한다.
노이즈를 지우는 과정을 반복하며 이미지를 만드는 방법(샘플러)은 여러가지가 있으며,
이 방법에 따라 속도, 이미지 품질이 좌우된다.
다음에는 샘플러별로 이미지를 생성하여 실제 차이를 비교해 보고자 한다.