ginipick commited on
Commit
cb7718b
·
verified ·
1 Parent(s): 494ca26

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +151 -386
app.py CHANGED
@@ -1,421 +1,186 @@
1
  import gradio as gr
2
- import numpy as np
3
- import random
4
  import torch
5
- from diffusers import DiffusionPipeline
6
- import spaces
7
- # 기본 설정
8
- dtype = torch.bfloat16
9
- device = "cuda" if torch.cuda.is_available() else "cpu"
10
-
11
- # 모델 로드
12
- pipe = DiffusionPipeline.from_pretrained(
13
- "black-forest-labs/FLUX.1-schnell",
14
- torch_dtype=dtype
15
- ).to(device)
16
-
17
- MAX_SEED = np.iinfo(np.int32).max
18
- MAX_IMAGE_SIZE = 2048
19
-
20
- # Enhanced examples with more detailed prompts and specific styling
21
- EXAMPLES = [
22
- {
23
- "title": "Knowledge Tree",
24
- "prompt": """A handrawn colorful mind map diagram, educational style, vibrant colors, clear hierarchy, golden ratio layout.
25
- KNOWLEDGE
26
- ├── ACQUISITION [Brain with Lightning ~60px]
27
- │ ├── READING [Open Book with Glow]
28
- │ ├── PRACTICE [Hands-on Tools]
29
- │ └── OBSERVATION [Eye with Magnifier]
30
- ├── PROCESSING [Gear Network ~50px]
31
- │ ├── ANALYSIS [Graph Trending Up]
32
- │ └── SYNTHESIS [Puzzle Pieces]
33
- ├── RETENTION [Memory Chip ~45px]
34
- │ ├── SHORT-TERM [Quick Flash]
35
- │ └── LONG-TERM [Solid Archive]
36
- └── APPLICATION
37
- ├── CREATION [Artist Palette]
38
- └── INNOVATION [Lightbulb Constellation]""",
39
- "width": 1024,
40
- "height": 1024
41
- },
42
- {
43
- "title": "Digital Transformation",
44
- "prompt": """A handrawn colorful mind map diagram, tech-focused style, neon accents, circuit board patterns.
45
- DIGITAL TRANSFORM
46
- ├── CLOUD [Cloud with Data Rain ~55px]
47
- │ ├── STORAGE [Database Cluster]
48
- │ └── COMPUTING [Server Array]
49
- ├── AUTOMATION [Robot Arm ~50px]
50
- │ ├── WORKFLOWS [Flowchart]
51
- │ └── AI/ML [Neural Network]
52
- ├── SECURITY [Shield Matrix ~45px]
53
- │ ├── ENCRYPTION [Lock Code]
54
- │ └── MONITORING [Radar Screen]
55
- └── INTEGRATION
56
- ├── APIS [Puzzle Connect]
57
- └── MICROSERVICES [Building Blocks]""",
58
- "width": 1024,
59
- "height": 1024
60
- },
61
- {
62
- "title": "Creative Process",
63
- "prompt": """A handrawn colorful mind map diagram, artistic style, watercolor effects, flowing connections.
64
- CREATIVITY
65
- ├── INSPIRATION [Constellation Stars ~60px]
66
- │ ├── NATURE [Organic Patterns]
67
- │ └── CULTURE [Global Icons]
68
- ├── IDEATION [Floating Bubbles ~50px]
69
- │ ├── BRAINSTORM [Thunder Cloud]
70
- │ └── REFINEMENT [Diamond Polish]
71
- ├── EXECUTION [Artist Tools ~45px]
72
- │ ├── TECHNIQUE [Skilled Hands]
73
- │ └── MEDIUM [Palette Mix]
74
- └── PRESENTATION
75
- ├── GALLERY [Frame Display]
76
- └── FEEDBACK [Echo Ripples]""",
77
- "width": 1024,
78
- "height": 1024
79
- },
80
- {
81
- "title": "Future Cities",
82
- "prompt": """A handrawn colorful mind map diagram, futuristic style, holographic elements, sustainable themes.
83
- SMART CITY
84
- ├── MOBILITY [Hover Transport ~60px]
85
- │ ├── AUTONOMOUS [Self-Driving]
86
- │ └── CONNECTED [Network Grid]
87
- ├── ENERGY [Solar Crystal ~55px]
88
- │ ├── RENEWABLE [Green Power]
89
- │ └── STORAGE [Battery Hub]
90
- ├── LIVING [Eco Building ~50px]
91
- │ ├── VERTICAL [Sky Gardens]
92
- │ └── COMMUNITY [People Connect]
93
- └── INFRASTRUCTURE
94
- ├── AI GRID [Neural City]
95
- └── ECO SYSTEM [Nature Tech]""",
96
- "width": 1024,
97
- "height": 1024
98
- },
99
- {
100
- "title": "Health Evolution",
101
- "prompt": """A handrawn colorful mind map diagram, medical style, DNA helix patterns, wellness focus.
102
- HEALTH 3.0
103
- ├── PREVENTION [Shield DNA ~60px]
104
- │ ├── LIFESTYLE [Activity Pulse]
105
- │ └── MONITORING [Health Watch]
106
- ├── TREATMENT [Caduceus Tech ~55px]
107
- │ ├── PERSONALIZED [DNA Code]
108
- │ └── REGENERATIVE [Cell Renew]
109
- ├── ENHANCEMENT [Upgrade Spiral ~50px]
110
- │ ├── COGNITIVE [Brain Boost]
111
- │ └── PHYSICAL [Body Optimize]
112
- └── INTEGRATION
113
- ├── AI HEALTH [Smart Doctor]
114
- └── COMMUNITY [Global Care]""",
115
- "width": 1024,
116
- "height": 1024
117
- },
118
- {
119
- "title": "Space Exploration",
120
- "prompt": """A handrawn colorful mind map diagram, cosmic style, star field background, planetary elements.
121
- SPACE FRONTIER
122
- ├── DISCOVERY [Telescope Array ~60px]
123
- │ ├── MAPPING [Star Charts]
124
- │ └── ANALYSIS [Data Stream]
125
- ├── TRAVEL [Rocket Launch ~55px]
126
- │ ├── PROPULSION [Energy Core]
127
- │ └── NAVIGATION [Space Map]
128
- ├── COLONIZATION [Dome City ~50px]
129
- │ ├── HABITATS [Life Sphere]
130
- │ └── RESOURCES [Mine Extract]
131
- └── RESEARCH
132
- ├── ASTROBIOLOGY [Life Search]
133
- └── PHYSICS [Space Time]""",
134
- "width": 1024,
135
- "height": 1024
136
- },
137
- {
138
- "title": "Ocean Innovation",
139
- "prompt": """A handrawn colorful mind map diagram, marine style, wave patterns, aqua themes.
140
- OCEAN TECH
141
- ├── EXPLORATION [Deep Submersible ~60px]
142
- │ ├── MAPPING [Sonar Wave]
143
- │ └── RESEARCH [Lab Bubble]
144
- ├── CONSERVATION [Marine Life ~55px]
145
- │ ├── PROTECTION [Reef Shield]
146
- │ └── RESTORATION [Growth Core]
147
- ├── HARVESTING [Sustainable Net ~50px]
148
- │ ├── ENERGY [Wave Power]
149
- │ └── RESOURCES [Bio Extract]
150
- └── MONITORING
151
- ├── AI SYSTEMS [Smart Sensors]
152
- └── ECOLOGY [Life Web]""",
153
- "width": 1024,
154
- "height": 1024
155
- },
156
- {
157
- "title": "Quantum Computing",
158
- "prompt": """A handrawn colorful mind map diagram, quantum style, wave-particle duality, matrix patterns.
159
- QUANTUM TECH
160
- ├── COMPUTATION [Qubit Matrix ~60px]
161
- │ ├── PROCESSING [Wave Function]
162
- │ └── ALGORITHMS [Code Quantum]
163
- ├── APPLICATIONS [Use Cases ~55px]
164
- │ ├── SIMULATION [Model World]
165
- │ └── OPTIMIZATION [Peak Find]
166
- ├── INFRASTRUCTURE [Q-Hardware ~50px]
167
- │ ├── CONTROL [Pulse Shape]
168
- │ └── COOLING [Zero Point]
169
- └── DEVELOPMENT
170
- ├── SOFTWARE [Q-Code Web]
171
- └── INTEGRATION [Classical Bridge]""",
172
- "width": 1024,
173
- "height": 1024
174
- },
175
- {
176
- "title": "Bio Engineering",
177
- "prompt": """A handrawn colorful mind map diagram, biological style, DNA patterns, organic flow.
178
- BIOTECH
179
- ├── GENETICS [DNA Helix ~60px]
180
- │ ├── EDITING [CRISPR Tool]
181
- │ └── SYNTHESIS [Gene Build]
182
- ├── APPLICATIONS [Lab Array ~55px]
183
- │ ├── MEDICINE [Heal Cell]
184
- │ └── AGRICULTURE [Grow Plus]
185
- ├── PLATFORMS [Bio Factory ~50px]
186
- │ ├── SENSORS [Live Detect]
187
- │ └── PROCESSORS [Cell Compute]
188
- └── INTEGRATION
189
- ├── AI BIOLOGY [Smart Life]
190
- └── ECOSYSTEM [Nature Net]""",
191
- "width": 1024,
192
- "height": 1024
193
- },
194
- {
195
- "title": "AI Evolution",
196
- "prompt": """A handrawn colorful mind map diagram, neural network style, digital patterns, intelligence flow.
197
- AI FUTURE
198
- ├── COGNITION [Brain Network ~60px]
199
- │ ├── LEARNING [Growth Path]
200
- │ └── REASONING [Logic Tree]
201
- ├── PERCEPTION [Sensor Array ~55px]
202
- │ ├── VISION [Eye Matrix]
203
- │ └── LANGUAGE [Word Web]
204
- ├── INTERACTION [Connect Hub ~50px]
205
- │ ├── HUMAN [Bridge Link]
206
- │ └── MACHINE [Code Path]
207
- └── EVOLUTION
208
- ├── CONSCIOUSNESS [Mind Spark]
209
- └── CREATIVITY [Art Core]""",
210
- "width": 1024,
211
- "height": 1024
212
- }
213
- ]
214
 
215
- # Convert examples to Gradio format
216
- GRADIO_EXAMPLES = [
217
- [example["prompt"], example["width"], example["height"]]
218
- for example in EXAMPLES
219
- ]
220
 
221
- @spaces.GPU() # 데코레이터를 다시 추가
222
- def infer(prompt, seed=42, randomize_seed=False, width=1024, height=1024, num_inference_steps=4, progress=gr.Progress(track_tqdm=True)):
223
- if randomize_seed:
224
- seed = random.randint(0, MAX_SEED)
225
- generator = torch.Generator().manual_seed(seed)
226
- image = pipe(
227
- prompt=prompt,
228
- width=width,
229
- height=height,
230
- num_inference_steps=num_inference_steps,
231
- generator=generator,
232
- guidance_scale=0.0
233
- ).images[0]
234
- return image, seed
235
-
236
- # CSS 스타일 수정
237
- css = """
238
- .container {
239
- display: flex;
240
- flex-direction: row;
241
- height: 100%;
242
- }
243
-
244
- .input-column {
245
- flex: 1;
246
- padding: 20px;
247
- border-right: 2px solid #eee;
248
- max-width: 800px; /* 증가된 최대 너비 */
249
- }
250
 
251
- .examples-column {
252
- flex: 1;
253
- padding: 20px;
254
- overflow-y: auto;
255
- background: #f7f7f7;
256
- }
257
 
258
- .title {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  text-align: center;
260
- color: #2a2a2a;
261
- padding: 20px;
262
- font-size: 2.5em;
263
  font-weight: bold;
264
- background: linear-gradient(90deg, #f0f0f0 0%, #ffffff 100%);
265
- border-bottom: 3px solid #ddd;
266
- margin-bottom: 30px;
267
  }
268
-
269
- .subtitle {
270
  text-align: center;
271
  color: #666;
272
  margin-bottom: 30px;
 
273
  }
274
-
275
- .input-box {
 
 
276
  background: white;
 
277
  padding: 20px;
278
- border-radius: 10px;
279
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
280
- margin-bottom: 20px;
281
- width: 100%; /* 전체 너비 사용 */
282
  }
283
-
284
- /* 텍스트 입력 박스 스타일 */
285
- .input-box textarea {
286
- width: 100% !important; /* 강제 너비 100% */
287
- min-width: 600px !important; /* 최소 너비 설정 */
288
  font-size: 14px !important;
289
- line-height: 1.5 !important;
290
- padding: 12px !important;
291
  }
292
-
293
- .example-card {
294
- background: white;
295
- padding: 15px;
296
- margin: 10px 0;
297
- border-radius: 8px;
298
- box-shadow: 0 2px 5px rgba(0,0,0,0.05);
299
- }
300
-
301
- .example-title {
302
- font-weight: bold;
303
- color: #2a2a2a;
304
- margin-bottom: 10px;
305
- }
306
-
307
- /* 레이아웃 조정 */
308
- .contain {
309
- max-width: 1400px !important; /* 전체 컨테이너 너비 증가 */
310
- margin: 0 auto !important;
311
- }
312
-
313
- /* 입력 영역 조정 */
314
- .input-area {
315
- flex: 2 !important; /* 입력 영역 비율 증가 */
316
  }
317
-
318
- /* 예제 영역 조정 */
319
- .examples-area {
320
- flex: 1 !important;
 
321
  }
322
  """
323
 
324
-
325
- # Gradio 인터페이스 수정
326
- with gr.Blocks(css=css) as demo:
327
- gr.Markdown(
328
- """
329
- <div class="title">FLUX Mindmap Generator</div>
330
- <div class="subtitle">Create beautiful hand-drawn style diagrams using FLUX AI</div>
331
- """)
332
-
333
-
334
-
335
- with gr.Row(equal_height=True) as main_row:
336
- # 왼쪽 입력 컬럼
337
- with gr.Column(elem_id="input-column", scale=2): # scale 값 증가
338
- with gr.Group(elem_classes="input-box"):
339
- prompt = gr.Text(
340
- label="Diagram Prompt",
341
- placeholder="Enter your diagram structure...",
342
- lines=10, # 줄 수 증가
343
- elem_classes="prompt-input" # CSS 클래스 추가
 
 
 
 
 
 
 
344
  )
345
-
346
- run_button = gr.Button("Generate Diagram", variant="primary")
347
- result = gr.Image(label="Generated Diagram")
348
-
349
- with gr.Accordion("Advanced Settings", open=False):
350
- seed = gr.Slider(
351
- label="Seed",
352
- minimum=0,
353
- maximum=MAX_SEED,
354
- step=1,
355
- value=0,
356
  )
357
- randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
358
-
359
- with gr.Row():
360
- width = gr.Slider(
361
- label="Width",
362
- minimum=256,
363
- maximum=MAX_IMAGE_SIZE,
364
- step=32,
365
- value=1024,
366
- )
367
- height = gr.Slider(
368
- label="Height",
369
- minimum=256,
370
- maximum=MAX_IMAGE_SIZE,
371
- step=32,
372
- value=1024,
373
- )
374
-
375
  num_inference_steps = gr.Slider(
376
  label="Number of inference steps",
 
377
  minimum=1,
378
  maximum=50,
379
- step=1,
380
- value=4,
 
 
 
 
 
 
381
  )
382
-
383
- # 오른쪽 예제 컬럼
384
- with gr.Column(elem_id="examples-column", scale=1):
385
- gr.Markdown("### Example Diagrams")
386
- for example in EXAMPLES:
387
- with gr.Group(elem_classes="example-card"):
388
- gr.Markdown(f"#### {example['title']}")
389
- gr.Markdown(f"```\n{example['prompt']}\n```")
390
-
391
- def create_example_handler(ex):
392
- def handler():
393
- return {
394
- prompt: ex["prompt"],
395
- width: ex["width"],
396
- height: ex["height"]
397
- }
398
- return handler
399
-
400
- gr.Button("Use This Example", size="sm").click(
401
- fn=create_example_handler(example),
402
- outputs=[prompt, width, height]
403
- )
 
 
 
 
 
 
 
404
 
405
- gr.on(
406
- triggers=[run_button.click, prompt.submit],
407
- fn=infer,
408
- inputs=[prompt, seed, randomize_seed, width, height, num_inference_steps],
409
- outputs=[result, seed]
410
  )
411
 
412
- # 실행
413
  if __name__ == "__main__":
414
  demo.queue()
415
- demo.launch(
416
- server_name="0.0.0.0",
417
- server_port=7860,
418
- share=False,
419
- show_error=True,
420
- debug=True
421
- )
 
1
  import gradio as gr
 
 
2
  import torch
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ # Transformers의 파이프라인을 이용해 번역용 파이프라인 로드
5
+ from transformers import pipeline as translation_pipeline
6
+ translator = translation_pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en", device="cpu")
 
 
7
 
8
+ # Diffusers 모델 로드
9
+ from diffusers import DiffusionPipeline
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
+ # -- Stable Diffusion 계열 파이프라인 설정 --
12
+ # (모델 예시: black-forest-labs/FLUX.1-schnell -> 마인드맵용으로 커스텀된 모델이지만,
13
+ # 여기서는 "스토리보드" 스타일 프롬프트도 시도 가능)
14
+ model_id = "black-forest-labs/FLUX.1-schnell"
 
 
15
 
16
+ pipe = DiffusionPipeline.from_pretrained(
17
+ model_id,
18
+ torch_dtype=torch.float32
19
+ ).to("cpu") # CPU 사용
20
+
21
+ # 한글 프롬프트를 영어로 변환하기 위한 헬퍼 함수
22
+ def translate_prompt_if_korean(prompt_text: str) -> str:
23
+ # 간단히, 문자열 내에 한글이 포함되어 있는지 확인 후 번역
24
+ # (영어 입력일 경우 번역을 스킵)
25
+ if any("가" <= ch <= "힣" for ch in prompt_text):
26
+ result = translator(prompt_text)
27
+ return result[0]['translation_text']
28
+ return prompt_text
29
+
30
+ def generate_storyboard(
31
+ prompt,
32
+ width=768,
33
+ height=512,
34
+ num_inference_steps=10,
35
+ guidance_scale=7.5,
36
+ seed=42
37
+ ):
38
+ # 번역 처리 (한글 -> 영어)
39
+ prompt_en = translate_prompt_if_korean(prompt)
40
+
41
+ # 시드 생성
42
+ generator = torch.Generator(device="cpu").manual_seed(seed)
43
+
44
+ # 이미지 생성
45
+ with torch.autocast("cpu"):
46
+ result = pipe(
47
+ prompt=prompt_en,
48
+ width=width,
49
+ height=height,
50
+ num_inference_steps=num_inference_steps,
51
+ guidance_scale=guidance_scale,
52
+ generator=generator
53
+ ).images[0]
54
+ return result
55
+
56
+
57
+ # --- 비주얼 & 세련된 UI를 위한 CSS ---
58
+ custom_css = """
59
+ #title {
60
  text-align: center;
61
+ font-size: 3em;
 
 
62
  font-weight: bold;
63
+ margin: 20px 0;
64
+ color: #333;
 
65
  }
66
+ #subtitle {
 
67
  text-align: center;
68
  color: #666;
69
  margin-bottom: 30px;
70
+ font-size: 1.2em;
71
  }
72
+ .gradio-container {
73
+ background: linear-gradient(120deg, #f8f8f8 0%, #ffffff 100%);
74
+ }
75
+ .input-panel, .output-panel {
76
  background: white;
77
+ border-radius: 12px;
78
  padding: 20px;
 
79
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
 
 
80
  }
81
+ #prompt-input {
 
 
 
 
82
  font-size: 14px !important;
83
+ min-height: 140px !important;
 
84
  }
85
+ .advanced-settings {
86
+ font-size: 0.9em;
87
+ color: #444;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
89
+ .example-box {
90
+ background: #f9f9f9;
91
+ padding: 10px;
92
+ margin-top: 10px;
93
+ border-radius: 8px;
94
  }
95
  """
96
 
97
+ # --- Gradio 인터페이스 구성 ---
98
+ with gr.Blocks(css=custom_css) as demo:
99
+ gr.Markdown("<div id='title'>Gini Storyboard</div>")
100
+ gr.Markdown("<div id='subtitle'>Generate a hand-drawn style storyboard in black & white film noir or any style you wish!</div>")
101
+
102
+ with gr.Row():
103
+ with gr.Column(elem_classes="input-panel", scale=1):
104
+ prompt = gr.Textbox(
105
+ label="Storyboard Prompt",
106
+ placeholder="Enter your scene descriptions here (in English or Korean)",
107
+ lines=8,
108
+ elem_id="prompt-input"
109
+ )
110
+ seed = gr.Slider(
111
+ label="Seed",
112
+ value=42,
113
+ minimum=0,
114
+ maximum=999999,
115
+ step=1
116
+ )
117
+ with gr.Row():
118
+ width = gr.Slider(
119
+ label="Width",
120
+ minimum=256,
121
+ maximum=1280,
122
+ value=768,
123
+ step=64
124
  )
125
+ height = gr.Slider(
126
+ label="Height",
127
+ minimum=256,
128
+ maximum=1280,
129
+ value=512,
130
+ step=64
 
 
 
 
 
131
  )
132
+ with gr.Accordion("Advanced Settings", open=False, elem_classes="advanced-settings"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  num_inference_steps = gr.Slider(
134
  label="Number of inference steps",
135
+ value=10,
136
  minimum=1,
137
  maximum=50,
138
+ step=1
139
+ )
140
+ guidance_scale = gr.Slider(
141
+ label="Guidance Scale",
142
+ value=7.5,
143
+ minimum=0.0,
144
+ maximum=20.0,
145
+ step=0.5
146
  )
147
+
148
+ run_button = gr.Button("Generate Storyboard", variant="primary")
149
+
150
+ with gr.Column(elem_classes="output-panel", scale=1):
151
+ result = gr.Image(label="Storyboard Result")
152
+
153
+ # 예제 프롬프트
154
+ gr.Markdown("### Example Prompt")
155
+ with gr.Box(elem_classes="example-box"):
156
+ example_text = (
157
+ "A hand-drawn storyboard style, film noir theme, black and white.\n"
158
+ "SCENE 1: A detective enters a dark alley [Frame 1]\n"
159
+ "SCENE 2: He notices a shadow [Frame 2]\n"
160
+ "SCENE 3: A sudden flash of light reveals a clue [Frame 3]"
161
+ )
162
+ gr.Markdown(f"```\n{example_text}\n```")
163
+ example_button = gr.Button("Use Example")
164
+
165
+ # 예제 버튼 클릭 시 프롬프트에 반영
166
+ def load_example():
167
+ return example_text
168
+ example_button.click(fn=load_example, outputs=[prompt])
169
+
170
+ # 버튼 클릭 & 프롬프트 Enter 이벤트 처리
171
+ run_button.click(
172
+ fn=generate_storyboard,
173
+ inputs=[prompt, width, height, num_inference_steps, guidance_scale, seed],
174
+ outputs=[result]
175
+ )
176
 
177
+ prompt.submit(
178
+ fn=generate_storyboard,
179
+ inputs=[prompt, width, height, num_inference_steps, guidance_scale, seed],
180
+ outputs=[result]
 
181
  )
182
 
183
+ # 실행
184
  if __name__ == "__main__":
185
  demo.queue()
186
+ demo.launch(server_name="0.0.0.0", server_port=7860, share=False)