Stable Diffusion 학습 (Training) 설명
Stable Diffusion 학습은 텍스트 프롬프트를 기반으로 이미지를 생성하는 모델을 훈련하는 과정입니다. 이 과정은 여러 단계로 이루어지며, 다양한 옵션을 통해 세밀하게 조정할 수 있습니다.
**1. 학습 단계**
Stable Diffusion 학습은 크게 다음 세 단계로 구성됩니다.
**1.1 임베딩 생성 (Create embedding)**
이 단계에서는 텍스트 프롬프트를 숫자 벡터 (embedding)로 변환하는 모델을 훈련합니다. 이 벡터는 이미지 생성 과정에서 이미지의 내용을 결정하는 중요한 역할을 합니다.
**옵션:**
* **Name:** 임베딩 모델의 이름입니다.
* **Initialization text:** 텍스트 임베딩 모델을 초기화하는 데 사용되는 텍스트입니다.
* **Number of vectors per token:** 각 토큰(단어)을 나타내는 벡터의 개수입니다.
* **Overwrite Old Embedding:** 기존 임베딩 모델을 덮어쓸지 여부를 선택합니다.
**1.2 하이퍼네트워크 생성 (Create hypernetwork)**
이 단계에서는 실제 이미지를 생성하는 하이퍼네트워크를 훈련합니다. 하이퍼네트워크는 임베딩 벡터를 입력받아 단계적으로 잡음(noise)을 제거하면서 이미지를 생성합니다.
**옵션:**
* **Modules:** 하이퍼네트워크의 레이어 수입니다.
* **Input:** 하이퍼네트워크의 입력 크기입니다.
* **Output:** 하이퍼네트워크의 출력 크기입니다.
* **Enter hypernetwork layer structure:** 하이퍼네트워크의 레이어 구조를 직접 입력합니다.
* **Select activation function of hypernetwork:** 하이퍼네트워크의 활성화 함수를 선택합니다. (Swish/Linear(none) 권장)
* **Select Layer weights initialization:** 레이어 가중치 초기화 방법을 선택합니다. (relu 계열: Kaiming, sigmoid 계열: Xavier, 기타: Normal 권장)
* **Add layer normalization:** 레이어 정규화 사용 여부를 선택합니다.
* **Use dropout:** 드롭아웃 사용 여부를 선택합니다.
* **Enter hypernetwork Dropout structure:** 하이퍼네트워크의 드롭아웃 구조를 입력합니다. (0~0.35 사이 증가 시퀀스: 0, 0.05, 0.15 권장)
* **Overwrite Old Hypernetwork:** 기존 하이퍼네트워크를 덮어쓸지 여부를 선택합니다.
**1.3 학습 (Train)**
모델 전체를 학습 데이터셋으로 훈련합니다. 학습 데이터셋은 텍스트 프롬프트와 해당 이미지로 구성되어 있으며, 모델은 이 데이터를 기반으로 텍스트 프롬프트에서 이미지를 생성하는 능력을 향상시킵니다.
**옵션:**
* **Train an embedding or Hypernetwork:** 임베딩 모델 또는 하이퍼네트워크 중 어떤 것을 훈련할지 선택합니다.
* **Learning rate:** 학습 속도를 조절하는 하이퍼파라미터입니다.
* **Gradient Clipping:** 그래디언트 클리핑 값을 설정합니다.
* **Batch size:** 한 번에 학습하는 데이터 샘플 수입니다.
* **Gradient accumulation steps:** 그래디언트 누적 단계 수입니다.
* **Dataset directory:** 학습 데이터가 있는 디렉토리 경로입니다. 1:1 비율의 이미지와 텍스트 프롬프트 페어로 구성되어야 합니다.
* **Log directory:** 학습 로그를 저장할 디렉토리 경로입니다.
* **Prompt template:** 텍스트 프롬프트 템플릿입니다.
* **Width, Height:** 생성할 이미지의 너비와 높이입니다.
* **Do not resize images:** 이미지 크기를 조정하지 않을지 여부를 선택합니다.
* **Max steps:** 최대 학습 단계 수입니다.
* **Save options:** 학습 과정 중에 이미지와 임베딩 모델을 저장하는 옵션입니다.
* **Use PNG alpha channel as loss weight:** PNG 이미지의 알파 채널을 손실 함수의 가중치로 사용 여부를 선택합니다.
* **