Stable Diffusion 모델과 Fine-Tuning 방법
Stable Diffusion (SD) 모델은 텍스트 프롬프트를 기반으로 고품질 이미지를 생성하는 딥러닝 기반 확산 모델입니다. 주로 Latent Diffusion이라는 기술을 바탕으로 하며, 텍스트에서 이미지로의 매핑을 학습한 후 Latent Space(잠재 공간)에서 이미지 생성 작업을 수행합니다. 이를 통해 높은 해상도와 디테일을 유지하면서도 효율적인 이미지 생성을 가능하게 합니다.
Stable Diffusion은 미술, 일러스트, 사진 생성과 같은 다양한 분야에서 사용되며, 이를 보다 맞춤화된 방식으로 활용하기 위해 Fine-Tuning (파인 튜닝)이 종종 필요합니다.

Stable Diffusion 파인 튜닝이란?
Fine-Tuning은 기존에 훈련된 Stable Diffusion 모델에 새로운 데이터나 원하는 특성을 추가로 학습시키는 과정입니다. 이를 통해 특정 스타일, 인물, 객체를 모델이 더 잘 이해하고 생성할 수 있도록 개선합니다.
파인 튜닝의 주요 방법들
- DreamBooth
- 특정 객체나 인물을 모델이 기억하고 생성할 수 있도록 훈련합니다.
- 소량의 이미지만으로 특정 객체를 모델에 주입할 수 있어 편리합니다.
- LoRA (Low-Rank Adaptation)
- 모델의 일부 파라미터만 조정하여 훈련 속도를 높이고 메모리 사용량을 줄입니다.
- 원본 모델의 성능을 유지하면서도 다양한 스타일을 적용할 수 있습니다.
- Textual Inversion
- 모델의 가중치를 직접 조정하지 않고 새로운 임베딩(embedding) 토큰을 학습합니다.
- 모델이 새로운 개념이나 스타일을 이해할 수 있도록 텍스트 프롬프트를 확장합니다.
2024.12.08 - [AI] - Stable Diffusion 모델 파인 튜닝 가이드
Stable Diffusion 모델 파인 튜닝 가이드
최근 이미지 생성 AI 모델 중 가장 주목받는 것 중 하나는 Stable Diffusion입니다. Stable Diffusion은 텍스트 프롬프트를 통해 고품질 이미지를 생성할 수 있는 강력한 모델이지만, 이를 더 특정한 스타
neyait.tistory.com
이번 블로그에서는 Textual Inversion을 사용한 파인 튜닝 방법에 대해 알아보겠습니다.
Textual Inversion을 이용한 파인 튜닝
Textual Inversion이란?
Textual Inversion은 Stable Diffusion 모델에서 새로운 단어 토큰에 대해 학습된 임베딩을 생성하는 기법입니다. 이 새로운 토큰은 특정 스타일이나 객체를 표현하며, 학습 후 텍스트 프롬프트에 삽입하여 해당 개념을 생성할 수 있게 합니다.
예시:
- 원래 프롬프트: "a painting of a castle"
- Textual Inversion을 통해 학습된 새로운 토큰 "<my_style>"
- 적용된 프롬프트: "a painting of a castle in the style of <my_style>"
이처럼 모델을 다시 훈련할 필요 없이, 새로운 스타일이나 개념을 간단히 프롬프트에 추가할 수 있습니다.
준비 작업
textual_inversion.py 스크립트를 통해 이 기법을 익히고, 이를 어떻게 적용할 수 있는지 살펴보겠습니다.
1. 라이브러리 설치
먼저 소스에서 라이브러리를 설치하세요:
git clone https://github.com/huggingface/diffusers
cd diffusers
pip install .
훈련 스크립트가 포함된 예제 폴더로 이동한 후, 필요한 의존성을 설치합니다:
cd examples/textual_inversion
pip install -r requirements.txt
🤗 Accelerate는 다중 GPU/TPU 또는 혼합 정밀도에서 훈련을 지원하는 라이브러리로, 하드웨어와 환경에 따라 훈련 설정을 자동으로 구성합니다.
🤗 Accelerate Quick tour 에서 더 자세히 알아보세요.
2. Accelerate 환경 초기화
accelerate config
기본 설정을 선택하려면:
accelerate config default
인터랙티브 셸을 지원하지 않는 환경에서는 다음 코드를 사용하세요:
from accelerate.utils import write_basic_config
write_basic_config()
훈련 스크립트 주요 부분
훈련 스크립트에는 훈련을 맞춤화할 수 있는 다양한 매개변수가 포함되어 있습니다. 모든 매개변수와 설명은 parse_args() 함수에 나와 있으며, 필요에 따라 기본값(예: 훈련 배치 크기, 학습률)을 조정할 수 있습니다.
중요한 매개변수
다음은 중요한 몇 가지 매개변수입니다:
- --pretrained_model_name_or_path: 허브에서 모델 이름 또는 로컬 모델 경로
- --train_data_dir: 훈련 데이터셋(예제 이미지) 폴더 경로
- --output_dir: 훈련된 모델 저장 경로
- --push_to_hub: 훈련된 모델을 허브에 업로드 여부
- --num_vectors: 학습할 벡터 수(값이 높을수록 학습 품질이 좋아지지만 비용 증가)
- --placeholder_token: 학습된 임베딩과 연결할 특별한 단어(추론 시 사용해야 함)
- --initializer_token: 학습 대상이나 스타일을 대략적으로 설명하는 단일 단어
- --learnable_property: 학습하려는 대상이 "스타일"(예: 반 고흐의 화풍)인지, "객체"(예: 강아지)인지 여부
데이터셋 클래스 및 훈련 루프
textual_inversion.py는 사용자 정의 데이터셋 클래스인 TextualInversionDataset을 사용하여 데이터셋을 생성합니다. 이 클래스는 이미지 크기, 토큰, 보간 방법, 이미지 자르기 여부 등 다양한 설정을 지원합니다.
훈련 루프는 노이즈 예측, 가중치 업데이트 등 훈련의 모든 단계를 처리합니다. 훈련 루프 작동 방식에 대한 자세한 내용은 파이프라인, 모델, 스케줄러 이해하기 튜토리얼에서 확인하세요.
3. 스크립트 실행
다음은 예제 실행 명령입니다:
accelerate launch textual_inversion.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--train_data_dir=$DATA_DIR \
--learnable_property="object" \
--placeholder_token="<cat-toy>" \
--initializer_token="toy" \
--resolution=512 \
--train_batch_size=1 \
--gradient_accumulation_steps=4 \
--max_train_steps=3000 \
--learning_rate=5.0e-04 \
--scale_lr \
--lr_scheduler="constant" \
--lr_warmup_steps=0 \
--output_dir="textual_inversion_cat" \
--push_to_hub
훈련이 끝나면 다음과 같이 파인 튜닝한 모델로 이미지를 생성할 수 있습니다.
from diffusers import StableDiffusionPipeline
import torch
pipeline = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16).to("cuda")
pipeline.load_textual_inversion("sd-concepts-library/cat-toy")
image = pipeline("A <cat-toy> train", num_inference_steps=50).images[0]
image.save("cat-train.png")
훈련 팁
- 이미지 다양성: 여러 각도와 조명에서 촬영된 이미지를 사용하면 모델이 더 정확하게 개념을 학습합니다.
- 학습률: 너무 높으면 학습이 불안정해질 수 있으니 적절한 학습률을 설정합니다 (예: 1e-4).
- 훈련 시간: 보통 1000~2000 스텝 정도로 충분히 학습할 수 있습니다.
Stable Diffusion 모델을 Textual Inversion으로 파인 튜닝하면, 모델의 가중치를 변경하지 않고도 새로운 개념을 간단히 학습시킬 수 있습니다. 이를 통해 원하는 스타일이나 객체를 효율적으로 생성할 수 있으니, 자신의 창의적인 프로젝트에 활용해 보세요!
2024.12.08 - [AI] - Stable Diffusion 모델 파인 튜닝 가이드
Stable Diffusion 모델 파인 튜닝 가이드
최근 이미지 생성 AI 모델 중 가장 주목받는 것 중 하나는 Stable Diffusion입니다. Stable Diffusion은 텍스트 프롬프트를 통해 고품질 이미지를 생성할 수 있는 강력한 모델이지만, 이를 더 특정한 스타
neyait.tistory.com
'AI' 카테고리의 다른 글
| OpenAI, 차세대 시뮬레이션 추론 모델 o3와 o3-mini 발표 (2) | 2024.12.28 |
|---|---|
| Stable Diffusion 모델과 Fine-Tuning 방법 - LoRA (3) | 2024.12.24 |
| Stable Diffusion 모델 파인 튜닝 가이드 (1) | 2024.12.08 |
| Databricks의 MLflow: 데이터 사이언스와 머신러닝 워크플로의 혁신 (0) | 2024.12.03 |
| Databricks Auto ML로 회귀(Regression) 분석의 잠재력을 극대화하기 (2) | 2024.11.30 |