제품 사진 한 장과 텍스트 입력만으로 상업용 광고 이미지를 자동 생성하는 End-to-End AI 파이프라인입니다.
배경 제거 → AI 배경 생성 → 고해상도 변환 → 색보정 → 텍스트/도형 합성까지, 5단계 파이프라인이 하나의 API 호출로 실행됩니다.
사용자 → Next.js (편집기 UI) → FastAPI (요청 검증·라우팅) → Director (오케스트레이션) → 5-Stage Pipeline → 결과 이미지
flowchart LR
subgraph Frontend
UI["Next.js 14 + Konva Canvas"]
end
subgraph API["API Server"]
FA["FastAPI + Pydantic v2"]
end
subgraph Core["AI Pipeline"]
D["Director"] --> SEG["1. Segmenter<br>(BiRefNet)"]
SEG --> FLUX["2. FluxEngine<br>(FLUX.1-Fill NF4)"]
FLUX --> UP["3. Upscaler<br>(Real-ESRGAN)"]
UP --> CM["4. ColorMaster"]
CM --> AD["5. AdDesigner<br>(Text/Shape)"]
end
UI --> FA --> D
| 계층 | 역할 | 주요 기술 |
|---|---|---|
| Frontend | 입력 수집, 캔버스 편집, 실시간 프리뷰 | Next.js 14, React 18, Konva.js, Zustand |
| API Server | 요청 검증, 라우팅, 정적 리소스 제공 | FastAPI, Pydantic v2, Uvicorn |
| Orchestrator | 파이프라인 생명주기 관리, LLM 기획 | Director, CreativeDirector, StateManager |
| AI Engine | 이미지 생성·변환·합성 실행 | FLUX.1-Fill-dev, Real-ESRGAN, BiRefNet |
| Infra | GPU 메모리 관리, 비동기 작업 큐 | VRAMHandler, Redis, Celery |
| 단계 | 엔진 | 설명 |
|---|---|---|
| 1 | Segmenter (BiRefNet/ISNet) | 제품 배경 제거 + BBox 기하학 분석 |
| 2 | FluxEngine (FLUX.1-Fill-dev NF4) | AI 배경 생성 및 제품 합성 |
| 3 | Upscaler (Real-ESRGAN x4) | 고해상도 변환 (선택) |
| 4 | ColorMaster | 밝기·대비·채도·선명도·색온도 보정 |
| 5 | AdDesigner | 텍스트·도형 레이어 렌더링 및 최종 합성 |
AI가 단순히 이미지를 생성하는 것이 아니라, 기획(Plan) → 설계(Design) 2단계로 나눠 작업합니다.
- Planner LLM — 전체 톤앤매너, 색상, 폰트, 페이지 구성 등 전략 수립
- Designer LLM — 페이지별 배경 프롬프트, 제품 배치, 텍스트 레이어 상세 설계
OpenAI를 Primary로, Gemini를 Failover로 사용하는 이중화 구조입니다.
| 장치 | 설명 |
|---|---|
| Safe Margin | 상하좌우 5% 안전 영역 — 제품이 캔버스 경계에 잘리지 않도록 보정 |
| Scale Guard | 너비 80% / 높이 65% 상한 — 제품이 비정상적으로 확대되는 것을 방지 |
| Layout Safety Cap | 최종 좌표 0.0~1.0 범위 클램핑 — LLM 환각 값 차단 |
- Python 3.10+, FastAPI, Pydantic v2, Uvicorn
- PyTorch (CUDA, bfloat16)
- Diffusers — FLUX.1-Fill-dev (NF4 양자화)
- Real-ESRGAN — 4x 업스케일
- Pillow — 이미지 처리 및 합성
- Redis + Celery — 비동기 작업 큐
- Next.js 14, React 18, TypeScript
- Konva.js + react-konva — 캔버스 기반 인터랙티브 편집
- Zustand — 전역 상태 관리
- FLUX.1-Fill-dev — Inpainting 기반 배경 생성 (NF4 양자화, 23GB GPU)
- BiRefNet / ISNet — 제품 세그멘테이션 (누끼)
- Real-ESRGAN x4 — 초해상도 업스케일
- OpenAI GPT + Google Gemini — 2단계 LLM 기획 (Failover 이중화)
- NVIDIA L4 24GB — 단일 GPU 환경
- systemd — 서비스 관리
- Redis — 캐싱 및 태스크 큐
project/
├── app/
│ ├── api_server/ # FastAPI 서버
│ │ ├── main.py # 앱 부트스트랩 및 Lifespan
│ │ ├── routers/ # API 엔드포인트
│ │ │ ├── project.py # 프로젝트 CRUD + 생성 실행
│ │ │ ├── editor.py # 실시간 레이어 편집
│ │ │ ├── presets.py # 프리셋 조회
│ │ │ └── users.py # 사용자 인증
│ │ └── schemas.py # API I/O 스키마
│ ├── frontend/ # Next.js 14 클라이언트
│ │ └── src/app/
│ │ ├── page.tsx # 로그인
│ │ ├── create/ # 생성 설정
│ │ └── editor/ # 캔버스 편집기
│ └── worker/ # Celery 비동기 워커
├── core/
│ ├── orchestrator/
│ │ └── director.py # 파이프라인 총괄 오케스트레이터
│ ├── generators/
│ │ ├── creative_dir.py # 2단계 LLM 기획 (Planner + Designer)
│ │ └── detail_page_gen.py # 5단계 제작 파이프라인 실행
│ ├── engines/
│ │ ├── vision/segmenter.py # 배경 제거 (BiRefNet/ISNet)
│ │ ├── generation/
│ │ │ ├── flux_runner.py # FLUX.1-Fill 배경 생성
│ │ │ └── ad_designer.py # 텍스트/도형 렌더링
│ │ └── composition/
│ │ └── color_master.py # 색보정 후처리
│ ├── resource_manager/
│ │ └── vram_handler.py # GPU 메모리 관리 (싱글턴)
│ ├── schemas/ # 내부 데이터 모델 (Manifest, UserRequest)
│ └── state_manager.py # 파일 기반 프로젝트 상태 관리
├── config/
│ └── settings.py # 전역 설정 (Pydantic BaseSettings)
├── data/
│ ├── static/ # 폰트, 도형, 프리셋 JSON
│ └── outputs/ # 사용자별 프로젝트 산출물
│ └── <user_id>/<project_id>/
│ ├── assets/ # 원본 이미지, 누끼
│ ├── renders/ # 중간 산출물
│ └── output/ # 최종 결과물
└── weights/ # 모델 가중치 (Real-ESRGAN 등)
- Python 3.10+
- Node.js 20+
- NVIDIA GPU (CUDA, VRAM 16GB 이상 권장)
- Redis
# 1. 저장소 클론
git clone <repository-url>
cd project
# 2. Python 가상환경
python -m venv venv
source venv/bin/activate
pip install -r requirements/requirements.txt
# 3. 환경 변수
cp .env.template .env
# .env 파일에 API 키 입력:
# OPENAI_API_KEY=...
# HF_TOKEN=...
# 4. 프론트엔드
cd app/frontend
npm install
cd ../..# Backend (Port 8000)
PYTHONPATH=$(pwd):$PYTHONPATH \
python -m uvicorn app.api_server.main:app --host 0.0.0.0 --port 8000
# Frontend (Port 3000)
cd app/frontend && npm run dev -- -p 3000또는 통합 재시작 스크립트:
bash restart_server.sh| Method | Endpoint | 설명 |
|---|---|---|
POST |
/api/v1/projects/init |
프로젝트 초기화 (이미지 업로드 + 설정) |
POST |
/api/v1/projects/{id}/generate |
AI 이미지 생성 실행 |
GET |
/api/v1/projects/{id} |
프로젝트 상태 및 매니페스트 조회 |
GET |
/api/v1/projects/ |
프로젝트 목록 조회 |
POST |
/api/v1/projects/{id}/pages |
페이지 추가 |
PUT |
/api/v1/editor/{id}/pages/{n}/layers/{l} |
레이어 실시간 편집 |
GET |
/api/v1/presets/{type} |
프리셋 조회 (tone, layout, content 등) |
POST |
/api/v1/users/login |
사용자 로그인 |
1. 사용자 입력 (이미지 + 설정 JSON)
↓
2. Pydantic v2 입력 검증 → UserRequest 생성
↓
3. Director: 프로젝트 구조 생성 + Segmenter로 기하학 분석
↓
4. CreativeDirector: Planner LLM → Designer LLM (페이지별 설계)
↓
5. DetailPageGenerator: 5단계 파이프라인 실행
├─ Step 1: 배경 제거 (BiRefNet) → assets/01_cutout.png
├─ Step 2: AI 배경 생성 (Flux-Fill) → renders/02_bg_gen.png
├─ Step 3: 고해상도 변환 (ESRGAN) → renders/03_upscale.png
├─ Step 4: 색보정 (ColorMaster) → renders/04_color.png
└─ Step 5: 텍스트·도형 합성 → output/05_final.png
↓
6. manifest.json 갱신 → Frontend 렌더링
- 시스템 아키텍처 발표 자료 (PPTX - GIF 포함)
- 이승완(팀장): https://www.notion.so/2fce0898abf480039328f76c58b3fe71?v=2fce0898abf481dc9aea000c67463f4c&pvs=25
- 박시찬: https://www.notion.so/313e0898abf48041a615d3dd5edbac63?v=313e0898abf481ce8fb5000c4bd8dccf&pvs=25
- 신아름: https://www.notion.so/306e0898abf480adbb26d25e443c6b39?v=306e0898abf481baa1a5000c7fb92bb7&pvs=25
이 프로젝트는 교육 및 포트폴리오 목적으로 제작되었습니다.