CryptoCreeper commited on
Commit
b3671f1
·
verified ·
1 Parent(s): b18cca1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -17
app.py CHANGED
@@ -1,5 +1,6 @@
1
  import gradio as gr
2
  import torch
 
3
  from diffusers import DiffusionPipeline
4
  from transformers import pipeline, GPT2Tokenizer, GPT2LMHeadModel
5
 
@@ -16,13 +17,25 @@ image_model_id = "SimianLuo/LCM_Dreamshaper_v7"
16
  image_pipe = DiffusionPipeline.from_pretrained(image_model_id)
17
  image_pipe.to(device)
18
 
 
 
 
 
 
 
 
19
  def generate_workflow(prompt, width, height, steps):
20
- yield "Thinking (analysing AI)...", None, ""
 
 
 
21
 
22
- enhanced_results = enhancer_pipe(prompt, max_length=75, num_return_sequences=1)
23
- refined_prompt = enhanced_results[0]['generated_text']
24
 
25
- yield "Generating (Image generator AI)...", None, refined_prompt
 
 
 
26
 
27
  image = image_pipe(
28
  prompt=refined_prompt,
@@ -34,36 +47,37 @@ def generate_workflow(prompt, width, height, steps):
34
  output_type="pil"
35
  ).images[0]
36
 
37
- yield "Ready", image, refined_prompt
38
 
39
- with gr.Blocks(theme=gr.themes.Soft()) as demo:
40
- gr.Markdown("# AI Image Lab")
41
 
42
  with gr.Row():
43
  with gr.Column(scale=1):
44
  prompt_input = gr.Textbox(
45
- label="Your Idea",
46
- placeholder="e.g., a lonely robot on mars",
47
  lines=3
48
  )
49
 
50
  with gr.Row():
51
- width_slider = gr.Slider(256, 768, 512, step=64, label="Width")
52
- height_slider = gr.Slider(256, 768, 512, step=64, label="Height")
53
 
54
- steps_slider = gr.Slider(1, 15, 4, step=1, label="Inference Steps")
55
 
56
- generate_btn = gr.Button("Generate", variant="primary")
57
 
58
  with gr.Column(scale=1):
59
  status_bar = gr.Markdown("### Status: **Ready**")
60
- image_output = gr.Image(label="Result")
61
- refined_prompt_display = gr.Textbox(label="Enhanced Prompt Used", interactive=False)
62
 
63
  generate_btn.click(
64
  fn=generate_workflow,
65
  inputs=[prompt_input, width_slider, height_slider, steps_slider],
66
- outputs=[status_bar, image_output, refined_prompt_display]
 
67
  )
68
 
69
- demo.launch()
 
1
  import gradio as gr
2
  import torch
3
+ import re
4
  from diffusers import DiffusionPipeline
5
  from transformers import pipeline, GPT2Tokenizer, GPT2LMHeadModel
6
 
 
17
  image_pipe = DiffusionPipeline.from_pretrained(image_model_id)
18
  image_pipe.to(device)
19
 
20
+ def clean_prompt(text):
21
+ forbidden_words = ["4k", "8k", "high res", "high resolution", "hd", "ultra detailed", "masterpiece"]
22
+ for word in forbidden_words:
23
+ text = re.sub(word, "", text, flags=re.IGNORECASE)
24
+ text = re.sub(r'\s+', ' ', text).strip()
25
+ return text
26
+
27
  def generate_workflow(prompt, width, height, steps):
28
+ yield "🔍 Thinking (analysing AI)...", None, ""
29
+
30
+ enhanced_results = enhancer_pipe(prompt, max_length=60, num_return_sequences=1)
31
+ raw_enhanced = enhanced_results[0]['generated_text']
32
 
33
+ refined_prompt = clean_prompt(raw_enhanced)
 
34
 
35
+ if "centered" not in refined_prompt.lower():
36
+ refined_prompt += ", centered in the image"
37
+
38
+ yield "🎨 Generating (Image generator AI)...", None, refined_prompt
39
 
40
  image = image_pipe(
41
  prompt=refined_prompt,
 
47
  output_type="pil"
48
  ).images[0]
49
 
50
+ yield "Ready", image, refined_prompt
51
 
52
+ with gr.Blocks(theme=gr.themes.Soft(), title="AI Image Lab") as demo:
53
+ gr.Markdown("# 🎨 AI Image Lab")
54
 
55
  with gr.Row():
56
  with gr.Column(scale=1):
57
  prompt_input = gr.Textbox(
58
+ label="💡 Your Idea",
59
+ placeholder="e.g., Apple fruit",
60
  lines=3
61
  )
62
 
63
  with gr.Row():
64
+ width_slider = gr.Slider(256, 768, 512, step=64, label="📏 Width")
65
+ height_slider = gr.Slider(256, 768, 512, step=64, label="📐 Height")
66
 
67
+ steps_slider = gr.Slider(1, 15, 4, step=1, label="🏃 Steps")
68
 
69
+ generate_btn = gr.Button("🚀 Generate", variant="primary")
70
 
71
  with gr.Column(scale=1):
72
  status_bar = gr.Markdown("### Status: **Ready**")
73
+ image_output = gr.Image(label="🖼️ Result")
74
+ refined_prompt_display = gr.Textbox(label="📝 Enhanced Prompt Used", interactive=False)
75
 
76
  generate_btn.click(
77
  fn=generate_workflow,
78
  inputs=[prompt_input, width_slider, height_slider, steps_slider],
79
+ outputs=[status_bar, image_output, refined_prompt_display],
80
+ api_name="predict"
81
  )
82
 
83
+ demo.launch(show_api=True)