lmellory commited on
Commit
6a33628
·
verified ·
1 Parent(s): fe927a4
Files changed (1) hide show
  1. app.py +47 -15
app.py CHANGED
@@ -2,41 +2,73 @@ import gradio as gr
2
  from diffusers import StableDiffusionPipeline
3
  import torch
4
 
5
- # Публичная модель без gated (работает без token)
6
  pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16, safety_checker=None)
 
 
7
  pipe.enable_model_cpu_offload()
8
  pipe.enable_vae_slicing()
9
  pipe.enable_attention_slicing()
10
  pipe = pipe.to("cuda" if torch.cuda.is_available() else "cpu")
11
 
12
- def generate(prompt, negative_prompt="", steps=30, seed=42):
 
 
 
 
 
 
 
 
 
 
 
 
13
  try:
14
- negative = negative_prompt or "blurry, low quality, ugly"
 
 
15
  generator = torch.Generator("cuda").manual_seed(seed) if torch.cuda.is_available() else None
16
- image = pipe(prompt, negative_prompt=negative, num_inference_steps=steps, generator=generator).images[0]
17
- return image
 
 
 
 
 
 
 
18
  except Exception as e:
19
- return f"Ошибка: {str(e)}. Попробуй проще prompt."
20
 
21
- with gr.Blocks(theme=gr.themes.Dark()) as demo:
22
  gr.Markdown("# Epic AI Art Generator 🔥")
23
- gr.Markdown("Сделано для моей девушки ❤️ Генерирует эпичные арты! Попробуй на русском или английском.")
 
24
 
25
  with gr.Row():
26
- prompt = gr.Textbox(label="Prompt (описание)", placeholder="рыжий кот в стиле Гарри Поттера, волшебная шляпа")
27
- negative = gr.Textbox(label="Negative prompt", placeholder="blurry, low quality")
28
- steps = gr.Slider(20, 50, value=30, step=5, label="Шаги (steps)")
29
- seed = gr.Slider(0, 999999, value=42, label="Seed")
 
 
 
 
30
 
31
- btn = gr.Button("Generate 🔥")
 
 
32
 
33
- output = gr.Image(label="Арт")
34
 
35
- btn.click(generate, inputs=[prompt, negative, steps, seed], outputs=output)
 
36
 
37
  gr.Markdown("### Примеры:")
38
  gr.Markdown("- 'рыжий кот космонавт'")
39
  gr.Markdown("- 'романтическая пара на закате'")
40
  gr.Markdown("- 'кот в мантии волшебника, стиль Гарри Поттера'")
 
41
 
42
  demo.launch()
 
2
  from diffusers import StableDiffusionPipeline
3
  import torch
4
 
5
+ # Публичная модель (работает без token)
6
  pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16, safety_checker=None)
7
+
8
+ # Оптимизации для бесплатного tier (скорость и память)
9
  pipe.enable_model_cpu_offload()
10
  pipe.enable_vae_slicing()
11
  pipe.enable_attention_slicing()
12
  pipe = pipe.to("cuda" if torch.cuda.is_available() else "cpu")
13
 
14
+ # Стили
15
+ styles = {
16
+ "Без стиля": "",
17
+ "Аниме": "anime style, highly detailed",
18
+ "Реализм": "photorealistic, ultra detailed",
19
+ "Киберпанк": "cyberpunk, neon lights",
20
+ "Дисней": "disney pixar style, cute",
21
+ "Фэнтези": "fantasy art, magical",
22
+ "Супергерой": "superhero style, dramatic",
23
+ "Гарри Поттер": "harry potter style, wizard hat, hogwarts, magic wand"
24
+ }
25
+
26
+ def generate(prompt, style, negative_prompt, steps, seed):
27
  try:
28
+ full_prompt = f"{prompt}, {styles[style]}"
29
+ negative = negative_prompt or "blurry, low quality, ugly, deformed"
30
+
31
  generator = torch.Generator("cuda").manual_seed(seed) if torch.cuda.is_available() else None
32
+
33
+ image = pipe(
34
+ full_prompt,
35
+ negative_prompt=negative,
36
+ num_inference_steps=steps,
37
+ generator=generator
38
+ ).images[0]
39
+
40
+ return image, None
41
  except Exception as e:
42
+ return None, f"Ошибка: {str(e)}. Попробуй проще prompt или меньше шагов."
43
 
44
+ with gr.Blocks() as demo:
45
  gr.Markdown("# Epic AI Art Generator 🔥")
46
+ gr.Markdown("Сделано с ❤️ для моей самой красивой девушки на свете")
47
+ gr.Markdown("Генерирует эпичные арты! Попробуй на русском или английском.")
48
 
49
  with gr.Row():
50
+ with gr.Column():
51
+ prompt = gr.Textbox(label="Prompt (описание)", placeholder="рыжий кот в стиле Гарри Поттера")
52
+ style = gr.Dropdown(choices=list(styles.keys()), value="Без стиля", label="Стиль")
53
+ negative = gr.Textbox(label="Negative prompt", placeholder="blurry, low quality")
54
+ steps = gr.Slider(20, 50, value=30, step=5, label="Шаги (steps)")
55
+ seed = gr.Slider(0, 999999, value=42, label="Seed")
56
+
57
+ btn = gr.Button("Generate Magic 🔥")
58
 
59
+ with gr.Column():
60
+ output = gr.Image(label="Арт")
61
+ error = gr.Textbox(label="Статус", interactive=False)
62
 
63
+ gallery = gr.Gallery(label="История", columns=3)
64
 
65
+ btn.click(generate, inputs=[prompt, style, negative, steps, seed], outputs=[output, error]) \
66
+ .then(lambda g, img: g + [img] if img else g, inputs=[gallery, output], outputs=gallery)
67
 
68
  gr.Markdown("### Примеры:")
69
  gr.Markdown("- 'рыжий кот космонавт'")
70
  gr.Markdown("- 'романтическая пара на закате'")
71
  gr.Markdown("- 'кот в мантии волшебника, стиль Гарри Поттера'")
72
+ gr.Markdown("- 'мы как супергерои'")
73
 
74
  demo.launch()