DAY 2 · 12교시 · 60분

이미지 생성: 확산모델(FLUX.1-schnell)과 모델 비교

📚1단계: 주요 개념 설명

이번 단원의 목표

확산(디퓨전) 원리를 이해하고 FLUX.1-schnell로 세로형 장면 이미지를 생성하며, SDXL·FLUX.2 klein과 스텝·화질·VRAM을 비교해 16GB에 맞는 이미지 모델을 고른다.

🗂️강의 슬라이드
슬라이드 1 / 10

이미지 생성 — 장면에 그림을 입히다

이미지 생성 — 그림을 입히다텍스트오디오이미지그림비디오
  • 4대 생성기술의 세 번째는 '이미지'입니다. 대본의 각 장면에 어울리는 비주얼을 만듭니다.
  • 7교시의 클라우드 이미지를 이번엔 오프라인 확산모델로 대체합니다.
  • 대본의 image_prompt(또는 caption)가 이 단계의 입력이 됩니다.

🛠️2단계: 따라하기 실습

🛠 따라 만들기 · AI 바이브 코딩
로컬 FLUX로 이미지 만들고 웹앱에 연동하기

로컬 FLUX.1-schnell로 이미지를 만든 뒤, OpenAI 호환 API(/v1/images/generations)로 감싸 웹앱의 이미지 기능을 '주소만' 로컬로 바꿔 실제로 확인합니다. 무거운 단계이니 강사 시연을 보며 따라 하고, 완성 코드는 아래에서 확인하세요.

🎯 완성 결과: 웹앱 이미지 화면을 '온프렘(로컬 FLUX)'으로 전환하면 로컬 모델이 만든 이미지가 실제로 표시되는 상태
1이미지·서버 패키지 설치

로컬 이미지 모델 + 로컬 API 서버 도구를 준비합니다.

▶ 터미널에서 실행
pip install diffusers torch fastapi uvicorn
💡 핵심 코드 설명
  • diffusers 라이브러리로 FLUX.1-schnell 모델을 불러옵니다.
  • 처음 실행 시 모델 가중치를 내려받아 시간이 걸립니다.
2이미지 생성 함수 만들기

프롬프트 한 줄로 세로형 이미지를 만듭니다.

🤖 AI에게 이렇게 시켜보세요

파이썬 diffusers로 FLUX.1-schnell을 로드해서, 이미지 프롬프트를 받아 4스텝으로 세로형 이미지를 생성하고 scene_번호.jpg로 저장하는 함수를 만들어줘. VRAM 절약을 위해 enable_model_cpu_offload도 켜줘.

💡 핵심 코드 설명
  • num_inference_steps=4가 schnell 모델의 최적점입니다 — 적은 스텝으로 빠르게 좋은 이미지를 냅니다.
  • enable_model_cpu_offload를 켜면 16GB VRAM 환경에서도 OOM 없이 구동됩니다.
3OpenAI 호환 API로 감싸기 (/v1/images/generations)

웹앱이 클라우드처럼 호출할 수 있도록 로컬 이미지 서버를 만듭니다.

🤖 AI에게 이렇게 시켜보세요

11교시에서 만든 FastAPI server.py에 POST /v1/images/generations 엔드포인트를 추가해줘. OpenAI 이미지 API와 같은 형식으로 prompt·size를 받아 위 make_image로 이미지를 만들고, {"data":[{"b64_json": ...}]} 형태(base64)로 반환하게 해줘. CORS는 모두 허용.

💡 핵심 코드 설명
  • 응답을 OpenAI 규격({data:[{b64_json}]})에 맞추면 웹앱의 이미지 코드를 안 고치고 주소만 바꿉니다.
  • 이제 http://localhost:8000 하나가 음성(/v1/audio/speech)과 이미지(/v1/images/generations)를 모두 제공합니다.
4⭐ 웹앱에 연동해 '실제로' 확인하기

웹앱 이미지 기능을 클라우드 → 로컬 FLUX로 갈아끼워 로컬 이미지를 표시합니다.

💡 핵심 코드 설명
  • 이 강의의 '이미지 생성 체험'에서 상단 토글을 ☁️클라우드 → 💻온프렘(로컬 FLUX)으로 바꾸고 주소에 http://localhost:8000 을 넣어 생성해 보세요.
  • 키 없이도 로컬 서버가 응답하고, 내 컴퓨터(FLUX)가 만든 이미지가 화면에 뜹니다.
  • 4스텝이라 몇 초 안에 나옵니다. OOM이 나면 양자화(NF4/FP8)나 오프로드로 대응합니다.
🎯 스스로 해볼 미션
0 / 2 완료
스텝을 바꿔 '가성비 지점' 찾기

스텝을 올리면 무조건 좋아질까? 직접 바꿔 보며 schnell의 최적점을 확인합니다.

출발점(강사와 함께 만든 것): 강사와 함께 FLUX.1-schnell로 4스텝 세로형 이미지를 생성했다.
✅ 완료 기준: schnell은 스텝을 더 줘도 크게 좋아지지 않음을 확인하면 성공.
실습 미션 체크리스트
1개념 직관

4대 생성기술의 세 번째, '이미지 생성'입니다. 7교시 클라우드 이미지를 로컬 확산모델로 대체합니다. 단 4스텝이면 되는 FLUX.1-schnell을 기준으로, SDXL(제어 폭)·FLUX.2 klein(신형·경량)과 화질·속도·메모리를 비교하며 '16GB에서 뭘 고를까'를 판단합니다.

2실습 미션

우측 시뮬레이터에서 디노이징 스텝과 양자화 비트를 조절해 소요 시간·예상 화질·VRAM 경고를 확인하고, FLUX.1-schnell / SDXL / FLUX.2 klein이 16GB에서 각각 어떤 상황에 맞는지 비교해 보세요.

FLUX.1-schnell 로컬 추론 스크립트
from diffusers import FluxPipeline
import torch

# 로컬 16GB 가속을 위해 bfloat16 및 cpu_offload 활용
pipe = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-schnell", 
    torch_dtype=torch.bfloat16
)
pipe.enable_model_cpu_offload()

💡 코딩 중 막히나요? 모범 솔루션 코드

🧩3단계: 개념 검증 퀴즈

검증 챌린지 미션

4스텝 부근에서 FLUX.1-schnell이 빠르게 생성됨을 이해하고, SDXL·klein과 비교해 이 작업(빠른 세로형 쇼츠 컷)에 어느 모델이 맞는지 근거를 들어 설명할 수 있는지 점검합니다.

📝 객관식 개념 확인 (2문항)

Q1. FLUX.1-schnell이 일반 이미지 모델과 다른 핵심 특징은?

Q2. 16GB에서 이미지 모델을 고를 때, 다음 비교로 가장 적절한 것은?

🔬 인터랙티브 체험 (선택)— 개념을 직접 조작하며 확인해 보세요
예상 생성 시간:8
예상 VRAM 점유량:9.5 GB / 16.0 GB Limit
이미지 최종 화질 지수:96 %
🟢 16GB VRAM 적재 합격: 풀 GPU 가속을 통해 10초 이내에 쇼츠 비주얼이 자동 렌더링됩니다.
다음 교시로 이동하기 (13교시: 비디오 생성: 로컬 영상 모델(LTX-Video) 이해와 비교) ➡️