File size: 7,285 Bytes
3166b97
 
 
 
 
 
 
 
 
 
e13c42d
 
80b1ac5
 
27c65f9
 
e13c42d
 
 
 
 
 
27c65f9
 
e13c42d
 
 
 
 
 
 
 
 
 
76c8ebf
3166b97
 
 
e13c42d
6efe03f
 
4466abf
 
 
 
6efe03f
 
e13c42d
27c65f9
e13c42d
 
 
3166b97
 
 
 
 
 
76c8ebf
3166b97
 
 
 
 
 
 
 
 
76c8ebf
3166b97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e13c42d
76c8ebf
e13c42d
3166b97
 
 
 
 
 
 
 
 
76c8ebf
3166b97
e13c42d
 
3166b97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e13c42d
76c8ebf
e13c42d
 
3453933
3166b97
 
 
 
 
 
 
 
 
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb.

# %% auto 0
__all__ = ['block', 'make_clickable_model', 'make_clickable_user', 'get_submissions']

# %% app.ipynb 0
import gradio as gr
import pandas as pd
from huggingface_hub import list_models

from diffusers import StableDiffusionPipeline

#submissions_list = list_models(filter=["dreambooth-hackathon", category], full=True)
#spaces_pipeline_load = [submission.id for submission in submissions_list ]
#for ids in spaces_pipeline_load:
#    mydict[ids] = StableDiffusionPipeline.from_pretrained(ids) #('ashiqabdulkhader/shiba-dog')
    #f"pipeline{ids.split('//')[-1]}" = StableDiffusionPipeline.from_pretrained(ids) #('ashiqabdulkhader/shiba-dog')

#pipeline = StableDiffusionPipeline.from_pretrained("ashiqabdulkhader/shiba-dog") #('pharma/sugar-glider')
#image = pipeline().images[0]
#image
#https://huggingface.co/ashiqabdulkhader/shiba-dog
def filter_species(species):
    return gr.Dropdown.update(choices=species_map[species], value=species_map[species][1]), gr.update(visible=True)

    # %% app.ipynb 1
def make_clickable_demo(model_name, prompt): #link=None):
    #if link is None:
    #    link = "https://huggingface.co/" + model_name
    # Remove user from model name
    prompt = "a photo of " + ' '.join(model_name.split('/')[-1].split['-']) + str(prompt)
        
    return gr.Button.update()
    
def make_clickable_model(model_name,prompt, link=None):
    if link is None:
        link = "https://huggingface.co/" + model_name

    #adding functionality for demo
    user_model_nm = model_name.split('/')[-1]
    print(f"user and model name is - {user_model_nm}")
    if '-' in user_model_nm:
        model_nm = " ".join(user_model_nm.split('-'))
    else:
        model_nm = user_model_nm
    print(f"model name is - {model_nm}")
    prompt = "a photo of " + model_nm + str(prompt)
    pipeline = StableDiffusionPipeline.from_pretrained(model_name) #("ashiqabdulkhader/shiba-dog") #('pharma/sugar-glider')
    image_demo = pipeline(prompt).images[0]
    
    # Remove user from model name
    return image_out.Update(value=image_demo, label=model_name.split("/")[-1])  #f'<a target="_blank" href="{link}">{model_name.split("/")[-1]}</a>'

def make_clickable_user(user_id):
    link = "https://huggingface.co/" + user_id
    return f'<a  target="_blank" href="{link}">{user_id}</a>'

# %% app.ipynb 2
def get_submissions(category, prompt):
    submissions = list_models(filter=["dreambooth-hackathon", category], full=True)
    leaderboard_models = []

    for submission in submissions:
        # user, model, likes
        user_id = submission.id.split("/")[0]
        leaderboard_models.append(
            (
                make_clickable_user(user_id),
                make_clickable_model(submission.id, prompt),
                submission.likes,
            )
        )

    df = pd.DataFrame(data=leaderboard_models, columns=["User", "Model", "Likes"])
    df.sort_values(by=["Likes"], ascending=False, inplace=True)
    df.insert(0, "Rank", list(range(1, len(df) + 1)))
    return df

# %% app.ipynb 3
block = gr.Blocks()

with block:
    gr.Markdown(
        """# The DreamBooth Hackathon Leaderboard
    
    Welcome to the leaderboard for the DreamBooth Hackathon! This is a community event where particpants **personalise a Stable Diffusion model** by fine-tuning it with a powerful technique called [_DreamBooth_](https://arxiv.org/abs/2208.12242). This technique allows one to implant a subject (e.g. your pet or favourite dish) into the output domain of the model such that it can be synthesized with a _unique identifier_ in the prompt. 
    
    This competition is composed of 5 _themes_, where each theme will collect models belong to one of the categories shown in the tabs below. We'll be **giving out prizes to the top 3 most liked models per theme**, and you're encouraged to submit as many models as you want!
    
    For details on how to participate, check out the hackathon's guide [here](https://github.com/huggingface/diffusion-models-class/blob/main/hackathon/README.md).
    """
    )
    with gr.Row():
        prompt_in = gr.Textbox(label="Type in a Prompt. This will be suffixed to 'a photo of <model name>', so prompt accordingly -", value="")
        #button_in = gr.Button(label = "Generate Image using this model")
    with gr.Tabs():
        with gr.TabItem("Animal 🐨"):
            with gr.Row():
                animal_data = gr.components.Dataframe(
                    type="pandas", datatype=["number", "markdown", "markdown", "number"]
                )
            with gr.Row():
                data_run = gr.Button("Refresh")
                data_run.click(
                    get_submissions, inputs=[gr.Variable("animal"), prompt_in], outputs=animal_data
                )

                
        with gr.TabItem("Science 🔬"):
            with gr.Row():
                science_data = gr.components.Dataframe(
                    type="pandas", datatype=["number", "markdown", "markdown", "number"]
                )
            with gr.Row():
                data_run = gr.Button("Refresh")
                data_run.click(
                    get_submissions, inputs=gr.Variable("science"), outputs=science_data
                )
        with gr.TabItem("Food 🍔"):
            with gr.Row():
                food_data = gr.components.Dataframe(
                    type="pandas", datatype=["number", "markdown", "markdown", "number"]
                )
            with gr.Row():
                data_run = gr.Button("Refresh")
                data_run.click(
                    get_submissions, inputs=gr.Variable("food"), outputs=food_data
                )
        with gr.TabItem("Landscape 🏔"):
            with gr.Row():
                landscape_data = gr.components.Dataframe(
                    type="pandas", datatype=["number", "markdown", "markdown", "number"]
                )
            with gr.Row():
                data_run = gr.Button("Refresh")
                data_run.click(
                    get_submissions,
                    inputs=gr.Variable("landscape"),
                    outputs=landscape_data,
                )
        with gr.TabItem("Wilcard 🔥"):
            with gr.Row():
                wildcard_data = gr.components.Dataframe(
                    type="pandas", datatype=["number", "markdown", "markdown", "number"]
                )
            with gr.Row():
                data_run = gr.Button("Refresh")
                data_run.click(
                    get_submissions,
                    inputs=gr.Variable("wildcard"),
                    outputs=wildcard_data,
                )
    
    with gr.Row() : #as your_model_demo :
        image_out = gr.Image()
        
    #button_in.click(make_clickable_demo, prompt_in, your_model_demo)

    block.load(get_submissions, inputs=gr.Variable("animal"), outputs=animal_data)
    block.load(get_submissions, inputs=gr.Variable("science"), outputs=science_data)
    block.load(get_submissions, inputs=gr.Variable("food"), outputs=food_data)
    block.load(get_submissions, inputs=gr.Variable("landscape"), outputs=landscape_data)
    block.load(get_submissions, inputs=gr.Variable("wildcard"), outputs=wildcard_data)


block.launch()