File size: 5,198 Bytes
40462a0
97f8b8b
5ca375c
7aafe2f
 
40462a0
3acf08f
40462a0
7aafe2f
 
019708c
40462a0
644e663
40462a0
644e663
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
---
title: Realtime FLUX Image
emoji: ๐Ÿ’ฌโšก
colorFrom: yellow
colorTo: pink
sdk: gradio
sdk_version: 5.35.0
app_file: app.py
pinned: true
license: mit
short_description: mcp_server & High quality Images in Realtime
---
Looking at this code, it's a Gradio-based application for real-time image generation using the FLUX.1-schnell model. Here's a detailed explanation:

## English Explanation

### Overview
This application provides a real-time image generation interface using the FLUX.1-schnell diffusion model. It features instant preview capabilities where images are generated as you type, making it highly interactive and user-friendly.

### Key Features

1. **Real-time Generation**
   - Images are generated automatically as you type in the prompt
   - Uses GPU acceleration with `@spaces.GPU` decorator
   - Optimized for fast inference with only 1-4 steps

2. **User Interface Components**
   - **Prompt Input**: Text area for describing desired images
   - **Generated Image**: Real-time display of generated results
   - **Enhance Button**: Manual trigger for image generation
   - **Latency Display**: Shows processing time for each generation

3. **Advanced Options**
   - **Seed Control**: For reproducible results (0 to 2ยณยฒ-1)
   - **Randomize Seed**: Toggle for random seed generation
   - **Width/Height Sliders**: Image dimensions (256-2048 pixels)
   - **Inference Steps**: Control generation quality/speed (1-4 steps)

4. **Special Features**
   - **Snow Effect**: Animated snowflakes falling across the interface
   - **Korean Text Detection**: Warns when Korean text is detected in prompts
   - **Example Gallery**: Pre-defined creative prompts for inspiration
   - **Automatic CUDA Cache Clearing**: Prevents memory overflow

### Technical Implementation

1. **Model Configuration**
   - Uses FLUX.1-schnell with float16 precision for efficiency
   - Custom pipeline with intermediate outputs capability
   - GPU duration limited to 15 seconds per generation

2. **Input Validation**
   - Automatic size constraints (256-2048 pixels)
   - Seed validation and randomization
   - Error handling with graceful fallbacks

3. **Performance Optimizations**
   - Automatic Mixed Precision (AMP) for faster computation
   - CUDA cache clearing after each generation
   - Minimal inference steps for real-time performance

### Example Prompts Included
- Steampunk owl in Victorian clothing
- Floating island made of books
- Bioluminescent cyberpunk forest
- Ancient temple with robot archaeologists
- Cosmic coffee shop with constellation baristas

---

## ํ•œ๊ธ€ ์„ค๋ช…

### ๊ฐœ์š”
์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ FLUX.1-schnell ํ™•์‚ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ํƒ€์ดํ•‘ํ•˜๋Š” ๋™์•ˆ ์ฆ‰์‹œ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋งค์šฐ ์ƒํ˜ธ์ž‘์šฉ์ ์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์ž…๋‹ˆ๋‹ค.

### ์ฃผ์š” ๊ธฐ๋Šฅ

1. **์‹ค์‹œ๊ฐ„ ์ƒ์„ฑ**
   - ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋™์•ˆ ์ž๋™์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ
   - `@spaces.GPU` ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•œ GPU ๊ฐ€์†
   - 1-4 ๋‹จ๊ณ„๋งŒ์œผ๋กœ ๋น ๋ฅธ ์ถ”๋ก  ์ตœ์ ํ™”

2. **์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ์š”์†Œ**
   - **ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ**: ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํ…์ŠคํŠธ ์˜์—ญ
   - **์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€**: ์ƒ์„ฑ ๊ฒฐ๊ณผ์˜ ์‹ค์‹œ๊ฐ„ ํ‘œ์‹œ
   - **ํ–ฅ์ƒ ๋ฒ„ํŠผ**: ์ˆ˜๋™ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ํŠธ๋ฆฌ๊ฑฐ
   - **์ง€์—ฐ ์‹œ๊ฐ„ ํ‘œ์‹œ**: ๊ฐ ์ƒ์„ฑ์˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ํ‘œ์‹œ

3. **๊ณ ๊ธ‰ ์˜ต์…˜**
   - **์‹œ๋“œ ์ œ์–ด**: ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ ์„ค์ • (0 ~ 2ยณยฒ-1)
   - **์‹œ๋“œ ๋ฌด์ž‘์œ„ํ™”**: ๋ฌด์ž‘์œ„ ์‹œ๋“œ ์ƒ์„ฑ ํ† ๊ธ€
   - **๋„ˆ๋น„/๋†’์ด ์Šฌ๋ผ์ด๋”**: ์ด๋ฏธ์ง€ ํฌ๊ธฐ (256-2048 ํ”ฝ์…€)
   - **์ถ”๋ก  ๋‹จ๊ณ„**: ์ƒ์„ฑ ํ’ˆ์งˆ/์†๋„ ์ œ์–ด (1-4 ๋‹จ๊ณ„)

4. **ํŠน๋ณ„ ๊ธฐ๋Šฅ**
   - **๋ˆˆ ํšจ๊ณผ**: ์ธํ„ฐํŽ˜์ด์Šค ์ „์ฒด์— ๋–จ์–ด์ง€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ˆˆ์†ก์ด
   - **ํ•œ๊ธ€ ํ…์ŠคํŠธ ๊ฐ์ง€**: ํ”„๋กฌํ”„ํŠธ์— ํ•œ๊ธ€์ด ๊ฐ์ง€๋˜๋ฉด ๊ฒฝ๊ณ  ํ‘œ์‹œ
   - **์˜ˆ์ œ ๊ฐค๋Ÿฌ๋ฆฌ**: ์˜๊ฐ์„ ์œ„ํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์ฐฝ์˜์  ํ”„๋กฌํ”„ํŠธ
   - **์ž๋™ CUDA ์บ์‹œ ์ •๋ฆฌ**: ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐฉ์ง€

### ๊ธฐ์ˆ ์  ๊ตฌํ˜„

1. **๋ชจ๋ธ ๊ตฌ์„ฑ**
   - ํšจ์œจ์„ฑ์„ ์œ„ํ•œ float16 ์ •๋ฐ€๋„์˜ FLUX.1-schnell ์‚ฌ์šฉ
   - ์ค‘๊ฐ„ ์ถœ๋ ฅ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์ปค์Šคํ…€ ํŒŒ์ดํ”„๋ผ์ธ
   - ์ƒ์„ฑ๋‹น GPU ์‹œ๊ฐ„์„ 15์ดˆ๋กœ ์ œํ•œ

2. **์ž…๋ ฅ ๊ฒ€์ฆ**
   - ์ž๋™ ํฌ๊ธฐ ์ œ์•ฝ (256-2048 ํ”ฝ์…€)
   - ์‹œ๋“œ ๊ฒ€์ฆ ๋ฐ ๋ฌด์ž‘์œ„ํ™”
   - ์šฐ์•„ํ•œ ํด๋ฐฑ์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

3. **์„ฑ๋Šฅ ์ตœ์ ํ™”**
   - ๋น ๋ฅธ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ์ž๋™ ํ˜ผํ•ฉ ์ •๋ฐ€๋„(AMP)
   - ๊ฐ ์ƒ์„ฑ ํ›„ CUDA ์บ์‹œ ์ •๋ฆฌ
   - ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ์ตœ์†Œ ์ถ”๋ก  ๋‹จ๊ณ„

### ํฌํ•จ๋œ ์˜ˆ์ œ ํ”„๋กฌํ”„ํŠธ
- ๋น…ํ† ๋ฆฌ์•„ ์‹œ๋Œ€ ์˜์ƒ์„ ์ž…์€ ์ŠคํŒ€ํŽ‘ํฌ ์˜ฌ๋นผ๋ฏธ
- ์ฑ…์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋– ๋‹ค๋‹ˆ๋Š” ์„ฌ
- ์ƒ๋ฌผ๋ฐœ๊ด‘ ์‚ฌ์ด๋ฒ„ํŽ‘ํฌ ์ˆฒ
- ๋กœ๋ด‡ ๊ณ ๊ณ ํ•™์ž๊ฐ€ ์žˆ๋Š” ๊ณ ๋Œ€ ์‚ฌ์›
- ๋ณ„์ž๋ฆฌ ๋ฐ”๋ฆฌ์Šคํƒ€๊ฐ€ ์žˆ๋Š” ์šฐ์ฃผ ์ปคํ”ผ์ˆ

### ์‚ฌ์šฉ ํŒ
- ํ•œ๊ธ€ ํ”„๋กฌํ”„ํŠธ๋Š” ์ง€์›๋˜์ง€๋งŒ ์˜์–ด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
- ๋น ๋ฅธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์œ„ํ•ด ์ถ”๋ก  ๋‹จ๊ณ„๋ฅผ ๋‚ฎ๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”
- ๊ณ ํ’ˆ์งˆ ์ด๋ฏธ์ง€๋ฅผ ์œ„ํ•ด์„œ๋Š” "ํ–ฅ์ƒ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์„ธ์š”
- ์‹œ๋“œ ๊ฐ’์„ ๊ณ ์ •ํ•˜๋ฉด ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ์žฌ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค