mooni
[생성형 AI] Stable Diffusion 모델로 이미지 생성하기 본문
* 생성형 AI란 무엇인가?
생성형 AI는 기존 데이터의 분포를 학습하여 새로운 데이터를 생성하는 기술
인공지능 모델은 크게 판별형(Discriminative)과 생성형(Generative)으로 구분할 수 있다.
판별형 모델은 주어진 입력 데이터를 분류하거나 예측하는 데 중점을 두는 반면, 생성형 모델은 새로운 데이터를 생성하는 데 목적이 있다.

* 판별형 AI의 예
판별형 모델은 입력이 어떤 클래스에 속하는지를 판단한다. 예를 들어, 고양이와 강아지의 사진을 학습한 모델에 새로운 사진을 입력하면, 이 사진이 고양이인지 강아지인지를 판별해준다. 대표적인 알고리즘으로는 로지스틱 회귀, 서포트 벡터 머신(SVM), 분류형 신경망 등이 있다.
* 생성형 AI의 예
생성형 모델은 “고양이가 우주복을 입고 있는 장면”이라는 문장을 입력하면, 실제 존재하지 않던 그 이미지를 만들어낼 수 있다. 이처럼 생성형 AI는 기존 데이터를 학습하여 그 분포를 이해하고, 그와 유사한 새로운 데이터를 생성할 수 있는 능력을 갖추고 있다.
* Stable Diffusion의 작동 원리
Stable Diffusion은 대표적인 텍스트 기반 이미지 생성 모델로, 사용자가 입력한 문장(프롬프트)을 바탕으로 해당하는 이미지를 생성한다.
* Diffusion 과정
- 랜덤한 노이즈 이미지 생성 : 모델은 무작위로 생성한 노이즈 이미지를 출발점으로 삼는다.
- 텍스트 인코딩 : 입력된 문장을 텍스트 인코더(CLIP 모델 등)를 통해 임베딩 벡터로 변환한다.
- 조건부 노이즈 제거 (U-Net) : 텍스트 임베딩을 조건으로 활용하여, 여러 단계에 걸쳐 노이즈를 점차 제거하며 이미지 형태로 복원한다. 이 과정에는 U-Net 기반 신경망이 사용된다.
- 이미지 디코딩 (VAE Decoder) : 노이즈 제거가 완료된 latent 이미지를 VAE(Variational Autoencoder) 디코더를 통해 실제 이미지로 변환한다.
0. 환경

* Colab에서 진행
* 런타임 유형 GPU로 변경 필수!
1. pip 라이브러리 설치
!pip install --quiet diffusers transformers accelerate safetensors deep-translator
2. 모델 불러와서 설정하기
# 모델 불러오기 및 설정
from diffusers import StableDiffusionPipeline
import torch
# GPU 사용 가능 여부 확인
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"현재 디바이스: {device}")
# 사전학습된 Stable Diffusion 모델 로드
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16 if device == "cuda" else torch.float32,
)
pipe = pipe.to(device)
3. 텍스트 프롬프트로 이미지 생성하기
# 텍스트로 이미지 생성
from deep_translator import GoogleTranslator
from IPython.display import display
# 한국어 프롬프트 입력
kr_prompt = "바다와 모래사장, 실사화 스타일"
en_prompt = GoogleTranslator(source='ko', target='en').translate(kr_prompt)
print(f"번역된 프롬프트: {en_prompt}")
# 영어 프롬프트로 이미지 생성
image = pipe(en_prompt).images[0]
# 결과 이미지 출력
display(image)
4. 결과

5. 추가로
# 시드 고정
generator = torch.manual_seed(42)
# 영어 프롬프트로 이미지 생성
image = pipe(en_prompt, generator=generator).images[0]
# 결과 이미지 출력
display(image)
- seed를 고정해준다면 같은 프롬프트에 매번 같은 결과값을 받을 수 있다.
'AI.ML' 카테고리의 다른 글
[Real-ESRGAN] Colab으로 이미지 업스케일링 실습 with MacOS, M4 (0) | 2025.05.17 |
---|---|
[Cursor] 개발자용 AI IDE, Cursor 설치 및 사용 후기 (0) | 2025.04.11 |