Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torch | |
| import spaces # Import spaces for ZeroGPU compatibility on Hugging Face | |
| from models import infer, load_model | |
| # Initialize model on startup | |
| try: | |
| load_model() | |
| except Exception as e: | |
| print(f"Warning: Model failed to load on startup (might load on first request): {e}") | |
| # Define the inference function wrapper for Gradio | |
| # Decorate with @spaces.GPU to enable ZeroGPU usage on Hugging Face Spaces | |
| def process_image(prompt, negative_prompt, height, width, steps, guidance_scale, seed): | |
| try: | |
| image, used_seed = infer( | |
| prompt=prompt, | |
| negative_prompt=negative_prompt, | |
| height=int(height), | |
| width=int(width), | |
| steps=int(steps), | |
| guidance_scale=float(guidance_scale), | |
| seed=int(seed) | |
| ) | |
| return image, f"Seed used: {used_seed}" | |
| except Exception as e: | |
| return None, f"Error: {str(e)}" | |
| # CSS for styling | |
| css = """ | |
| .container { max_width: 1200px; margin: auto; } | |
| .header-link { font-weight: bold; color: #3b82f6; text-decoration: none; } | |
| .header-link:hover { text-decoration: underline; } | |
| """ | |
| # Create the Gradio Interface | |
| with gr.Blocks(css=css, theme=gr.themes.Soft()) as demo: | |
| # Header Section | |
| with gr.Row(): | |
| with gr.Column(): | |
| gr.Markdown( | |
| """ | |
| # 🎨 Kandinsky 5.0 T2I Lite | |
| ### Text-to-Image Generation using Kandinsky 5.0 Lite SFT Diffusers | |
| [Built with anycoder](https://huggingface.co/spaces/akhaliq/anycoder) | |
| """ | |
| ) | |
| with gr.Row(elem_classes="container"): | |
| # Left Column: Inputs | |
| with gr.Column(scale=1): | |
| prompt = gr.Textbox( | |
| label="Prompt", | |
| placeholder="Describe the image you want to generate...", | |
| lines=3, | |
| value="A fluffy, expressive cat wearing a bright red hat with a soft, slightly textured fabric. The hat should look cozy and well-fitted on the cat’s head. On the front of the hat, add clean, bold white text that reads “SWEET”, clearly visible and neatly centered." | |
| ) | |
| negative_prompt = gr.Textbox( | |
| label="Negative Prompt", | |
| placeholder="What to avoid (e.g., blurry, bad anatomy)...", | |
| lines=2, | |
| value="low quality, bad quality, sketches, lowres, blurry" | |
| ) | |
| with gr.Accordion("Advanced Settings", open=False): | |
| with gr.Row(): | |
| height = gr.Slider(label="Height", minimum=512, maximum=2048, step=64, value=1024) | |
| width = gr.Slider(label="Width", minimum=512, maximum=2048, step=64, value=1024) | |
| steps = gr.Slider(label="Inference Steps", minimum=10, maximum=100, step=1, value=50) | |
| guidance_scale = gr.Slider(label="Guidance Scale", minimum=1.0, maximum=20.0, step=0.1, value=3.5) | |
| seed = gr.Number(label="Seed", value=-1, precision=0, info="Set to -1 for random") | |
| run_btn = gr.Button("Generate Image", variant="primary", size="lg") | |
| # Right Column: Output | |
| with gr.Column(scale=1): | |
| output_image = gr.Image(label="Generated Image", type="pil") | |
| status_text = gr.Textbox(label="Status", interactive=False) | |
| # Event Handling | |
| run_btn.click( | |
| fn=process_image, | |
| inputs=[prompt, negative_prompt, height, width, steps, guidance_scale, seed], | |
| outputs=[output_image, status_text] | |
| ) | |
| # Examples | |
| gr.Examples( | |
| examples=[ | |
| [ | |
| "A fluffy, expressive cat wearing a bright red hat with a soft, slightly textured fabric. The hat should look cozy and well-fitted on the cat’s head. On the front of the hat, add clean, bold white text that reads “SWEET”, clearly visible and neatly centered.", | |
| "low quality, bad quality", | |
| 1024, 1024, 50, 3.5, -1 | |
| ], | |
| [ | |
| "A futuristic cityscape at sunset with flying cars and neon lights, cyberpunk style, highly detailed.", | |
| "blurry, low resolution, monochrome", | |
| 1024, 1024, 30, 4.0, -1 | |
| ], | |
| [ | |
| "A serene landscape painting of a mountain lake with reflection, oil painting style, textured brushstrokes.", | |
| "photorealistic, vector art, watermark", | |
| 1024, 1024, 40, 3.0, -1 | |
| ] | |
| ], | |
| inputs=[prompt, negative_prompt, height, width, steps, guidance_scale, seed], | |
| fn=process_image, | |
| outputs=[output_image, status_text], | |
| cache_examples=False | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |