File size: 1,971 Bytes
f21f9ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import gradio as gr
from huggingface_hub import snapshot_download
from diffusers import StableDiffusion
from gradio_tools import StableDiffusionTool

# Download the model files
snapshot_download("model-repository/stable-diffusion", "main", "model", "1.5")

# Load the Stable Diffusion model
model = StableDiffusion.from_pretrained("stable-diffusion")

# Define a function to generate images and captions
def generate_image_and_caption(prompt, guidance_scale=7.5):
    # Generate an image from the prompt
    image = model.generate_from_prompt(
        prompt, guidance_scale=guidance_scale, num_images=1, batch_size=1
    )
    
    # Improve the prompt and generate a caption
    improved_prompt = "A photo of " + prompt
    caption = model.caption_image(improved_prompt, image[0])
    
    return image[0], caption

# Create a StableDiffusionTool instance
stable_diffusion_tool = StableDiffusionTool(model)

# Create the Gradio interface
interface = gr.Interface(
    fn=generate_image_and_caption,
    inputs=[
        gr.inputs.Textbox(lines=5, label="Image Prompt"),
        gr.inputs.Slider(
            minimum=0, maximum=10, default=7.5, step=0.5, label="Guidance Scale"
        ),
    ],
    outputs=["image", "text"],
    allow_flagging=True,
    flagging_options=["Inappropriate"],
    title="Stable Diffusion Gradio App",
    description="Generate images and captions from text prompts using Stable Diffusion.",
    article="This Gradio app showcases the capabilities of Stable Diffusion, a state-of-the-art defusion model. You can generate images and their captions by providing text prompts and adjusting the guidance scale.",
    examples=[
        ["A red apple on a table", 7.5],
        ["A sunset over a beach", 5.0],
        ["A dog riding a skateboard", 8.0],
    ],
    show_input=True,
    enable_queue=True,
    queue_message="Generating image and caption. Please wait...",
    tools=[stable_diffusion_tool],
)

# Launch the app
interface.launch()