u / app.py
njavidfar's picture
Update app.py
a841949 verified
import gradio as gr
import threading
import os
import torch
os.environ["OMP_NUM_THREADS"] = str(os.cpu_count())
torch.set_num_threads(os.cpu_count())
model1 = gr.load("models/prithivMLmods/SD3.5-Turbo-Realism-2.0-LoRA")
model2 = gr.load("models/Purz/face-projection")
stop_event = threading.Event()
def generate_images(text, selected_model):
stop_event.clear()
if selected_model == "Turbo Realism":
model = model1
elif selected_model == "Face Projection":
model = model2
else:
return ["Invalid model selection."] * 3
results = []
for i in range(3):
if stop_event.is_set():
return ["Image generation stopped by user."] * 3
modified_text = f"{text} variation {i+1}"
result = model(modified_text)
results.append(result)
return results
def stop_generation():
"""Stops the ongoing image generation by setting the stop_event flag."""
stop_event.set()
return ["Generation stopped."] * 3
css = """
.container {
max-width: 1200px;
margin: auto;
padding: 20px;
}
.main-title {
text-align: center;
color: #1a73e8;
font-size: 2.5em;
margin-bottom: 1em;
font-weight: 700;
}
.notice {
background-color: #fef3c7;
border-left: 4px solid #f59e0b;
padding: 1em;
margin: 1em 0;
border-radius: 4px;
}
.input-group {
background-color: #f8fafc;
padding: 2em;
border-radius: 12px;
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
margin: 1em 0;
}
.button-primary {
background-color: #1a73e8 !important;
}
.button-secondary {
background-color: #dc2626 !important;
}
.output-images {
gap: 1em;
margin-top: 2em;
}
.output-image {
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
}
"""
with gr.Blocks(css=css, theme=gr.themes.Soft()) as interface:
with gr.Column(elem_classes="container"):
gr.Markdown("# AI Image Generator 🎨", elem_classes="main-title")
gr.Markdown(
"⚠️ Note: Currently running on CPU mode which may affect performance.",
elem_classes="notice"
)
with gr.Group(elem_classes="input-group"):
text_input = gr.Textbox(
label="Describe your imagination",
placeholder="Enter a detailed description of the image you want to generate...",
lines=3
)
model_selector = gr.Radio(
["Turbo Realism", "Face Projection"],
label="Select Model",
value="Turbo Realism",
container=False
)
with gr.Row():
generate_button = gr.Button(
"✨ Generate Images",
elem_classes="button-primary"
)
stop_button = gr.Button(
"🛑 Stop Generation",
elem_classes="button-secondary"
)
with gr.Row(elem_classes="output-images"):
output1 = gr.Image(label="Variation 1", elem_classes="output-image")
output2 = gr.Image(label="Variation 2", elem_classes="output-image")
output3 = gr.Image(label="Variation 3", elem_classes="output-image")
gr.Markdown(
"""
### Tips for better results:
- Be specific in your descriptions
- Include details about style, mood, and lighting
- Experiment with different models for varied results
""",
)
generate_button.click(
generate_images,
inputs=[text_input, model_selector],
outputs=[output1, output2, output3]
)
stop_button.click(
stop_generation,
inputs=[],
outputs=[output1, output2, output3]
)
interface.launch()