File size: 3,052 Bytes
e33485b
e032f0c
e00cbb6
e032f0c
fc0f6ae
e032f0c
 
 
 
 
 
 
 
 
e00cbb6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ebee332
 
 
 
e00cbb6
 
 
84838d7
 
 
c3179cf
 
 
 
84838d7
 
 
 
 
 
 
ee6544b
84838d7
 
 
 
 
 
e032f0c
84838d7
ee6544b
84838d7
5104385
e00cbb6
 
 
 
 
84838d7
 
 
 
 
 
 
 
 
 
e032f0c
 
 
 
84838d7
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import gradio as gr
import os
from share_btn import community_icon_html, loading_icon_html, share_js

img_to_text = gr.Interface.load("spaces/pharma/CLIP-Interrogator")
stable_diffusion = gr.Blocks.load(name="spaces/stabilityai/stable-diffusion")

def get_images(prompt):
    gallery_dir = stable_diffusion(prompt, fn_index=2)
    return [os.path.join(gallery_dir, image) for image in os.listdir(gallery_dir)]

def get_prompts(uploaded_image):
    return img_to_text(uploaded_image)

css = '''
.animate-spin {
    animation: spin 1s linear infinite;
}
@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}
#share-btn-container {
    display: flex; padding-left: 0.5rem !important; padding-right: 0.5rem !important; background-color: #000000; justify-content: center; align-items: center; border-radius: 9999px !important; width: 13rem;
}
#share-btn {
    all: initial; color: #ffffff;font-weight: 600; cursor:pointer; font-family: 'IBM Plex Sans', sans-serif; margin-left: 0.5rem !important; padding-top: 0.25rem !important; padding-bottom: 0.25rem !important;
}
#share-btn * {
    all: unset;
}
#component-57, #component-58 {
    width: auto !important;
    min-height: 0px !important;
}
'''

with gr.Blocks(css=css) as demo:
    gr.Markdown(
        """
        ## Stable Diffusion Perception πŸŽ†πŸŒŒ
        Want to figure out what a good prompt might be to create new images like an existing one? 
        
        Use [CLIP Interrogator](https://huggingface.co/spaces/pharma/CLIP-Interrogator) to generate a prompt. 
        Afterward, you can use Stable Diffusion to generate images based on the prompt.
        """
    )

    with gr.Row():
      with gr.Column():
          input_img = gr.Image(type="filepath")
          with gr.Row():
            see_prompts = gr.Button("Check how your image prompts your model!")              

      with gr.Column():
        img2text_output = gr.Textbox(
                                label="Convert your image to text!", 
                                lines=4,
                                elem_id="translated"
                            )
        with gr.Row():
            diffuse_btn = gr.Button(value="Diffuse it!")
      with gr.Column():
        sd_output = gr.Gallery().style(grid=2, height="auto", elem_id="generated-gallery")
        with gr.Group(elem_id="share-btn-container"):
            community_icon = gr.HTML(community_icon_html)
            loading_icon = gr.HTML(loading_icon_html)
            share_button = gr.Button("Share to community", elem_id="share-btn")

    see_prompts.click(img_to_text, 
                            inputs = input_img, 
                            outputs = [
                                img2text_output
                            ])
    diffuse_btn.click(get_images, 
                          inputs = [
                              img2text_output
                              ], 
                          outputs = sd_output
                          )



demo.launch()