Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from tiny_image_gen.catalog import STYLE_PRESETS, default_prompt, style_choices | |
| from tiny_image_gen.service import TinyImageService | |
| service = TinyImageService() | |
| def update_style(style_name: str): | |
| return STYLE_PRESETS[style_name].hint | |
| def run_generation(prompt: str, style_name: str, negative_prompt: str, steps: int, guidance: float, seed: int): | |
| return service.generate( | |
| prompt=prompt, | |
| style_name=style_name, | |
| negative_prompt=negative_prompt, | |
| steps=steps, | |
| guidance=guidance, | |
| seed=seed, | |
| ) | |
| with gr.Blocks(title="Tiny Text To Image CPU") as demo: | |
| gr.Markdown( | |
| """ | |
| # Tiny Text To Image CPU | |
| Small text-to-image generation running on a free CPU Space. | |
| - Model: `segmind/tiny-sd` | |
| - Separate Space | |
| - CPU-friendly defaults | |
| - Single-image generation | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(): | |
| prompt = gr.Textbox( | |
| label="Prompt", | |
| value=default_prompt(), | |
| lines=6, | |
| ) | |
| style = gr.Dropdown( | |
| label="Style", | |
| choices=style_choices(), | |
| value="Cinematic", | |
| ) | |
| style_hint = gr.Textbox( | |
| label="Style Hint", | |
| value=STYLE_PRESETS["Cinematic"].hint, | |
| interactive=False, | |
| lines=3, | |
| ) | |
| negative_prompt = gr.Textbox( | |
| label="Negative Prompt", | |
| value="blurry, low quality, distorted, deformed, extra fingers, watermark, text", | |
| lines=3, | |
| ) | |
| steps = gr.Slider( | |
| label="Steps", | |
| minimum=4, | |
| maximum=20, | |
| value=10, | |
| step=1, | |
| ) | |
| guidance = gr.Slider( | |
| label="Guidance Scale", | |
| minimum=1.0, | |
| maximum=10.0, | |
| value=6.0, | |
| step=0.5, | |
| ) | |
| seed = gr.Number( | |
| label="Seed", | |
| value=42, | |
| precision=0, | |
| ) | |
| generate = gr.Button("Generate Image", variant="primary") | |
| with gr.Column(): | |
| image = gr.Image(label="Image", type="pil") | |
| status = gr.Textbox(label="Status", value=service.describe()) | |
| info = gr.Textbox( | |
| label="Info", | |
| value="This Space uses a compact diffusion model, so quality is lower than large GPU models but it fits free CPU hardware better.", | |
| lines=6, | |
| ) | |
| style.change( | |
| fn=update_style, | |
| inputs=style, | |
| outputs=style_hint, | |
| ) | |
| generate.click( | |
| fn=run_generation, | |
| inputs=[prompt, style, negative_prompt, steps, guidance, seed], | |
| outputs=[image, status, info], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |