File size: 3,375 Bytes
2abad25
189a4ea
777259c
71da98f
2abad25
189a4ea
0ba5e9f
 
189a4ea
 
d830543
71da98f
189a4ea
 
d830543
189a4ea
 
0ba5e9f
2abad25
777259c
71da98f
9c075ce
71da98f
bb286fb
2abad25
7148866
 
e043325
f8007c3
84cfbf6
ebf0660
71da98f
2abad25
 
1c9a107
189a4ea
 
 
2abad25
 
71da98f
 
189a4ea
bb286fb
2abad25
71da98f
 
189a4ea
bb286fb
2abad25
01a7c30
 
 
 
 
bb286fb
189a4ea
 
 
 
 
 
01a7c30
943cb1f
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
import gradio as gr
import random, os, shutil
from PIL import Image
import pandas as pd

def open_ims(adj, group, seed):
    if group != '':
        if adj != '':
            prompt=adj+'_'+group.replace(' ','_')
            if os.path.isdir(prompt) == False:
                shutil.unpack_archive('zipped_images/'+ prompt.replace(' ', '_') +'.zip', prompt, 'zip')
        else:
            prompt=group
            if os.path.isdir(prompt) == False:
                shutil.unpack_archive('zipped_images/'+ prompt.replace(' ', '_') +'.zip', prompt, 'zip')
        imnames= os.listdir(prompt+'/Seed_'+ str(seed)+'/')
        images = [(Image.open(prompt+'/Seed_'+ str(seed)+'/'+name)) for name in imnames]
        return images[:9]


vowels = ["a","e","i","o","u"]
prompts = pd.read_csv('promptsadjectives.csv')

seeds = [46267, 48040, 51237, 54325, 60884, 64830, 67031, 72935, 92118, 93109]

m_adjectives = prompts['Masc-adj'].tolist()[:10]
f_adjectives = prompts['Fem-adj'].tolist()[:10]
adjectives = sorted(m_adjectives+f_adjectives)
#adjectives = ['attractive','strong']
adjectives.insert(0, '')
professions = sorted([p.lower() for p in prompts['Occupation-Noun'].tolist()])

with gr.Blocks() as demo:
    gr.Markdown("# Stable Diffusion Explorer")
    gr.Markdown("## Choose from the prompts below to explore how the [Stable Diffusion v1.4 model] (https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) represents different professions and adjectives")
#    seed_choice = gr.State(0)
#    seed_choice = 93109
#    print("Seed choice is: " + str(seed_choice))
    with gr.Row():
        with gr.Column():
            adj1 = gr.Dropdown(adjectives, label = "Choose a first adjective (or leave this blank!)", interactive=True)
            choice1 = gr.Dropdown(professions, label = "Choose a first group", interactive=True)
            seed1= gr.Dropdown(seeds, label = "Choose a random seed to compare results", value = seeds[1], interactive=True)
            images1 = gr.Gallery(label="Images").style(grid=[3], height="auto")
        with gr.Column():
            adj2 = gr.Dropdown(adjectives, label = "Choose a second adjective (or leave this blank!)", interactive=True)
            choice2 = gr.Dropdown(professions, label = "Choose a second group", interactive=True)
            seed2= gr.Dropdown(seeds, label = "Choose a random seed to compare results", value= seeds[1], interactive=True)
            images2 = gr.Gallery(label="Images").style(grid=[3], height="auto")

    gr.Markdown("### [Research](http://gender-decoder.katmatfield.com/static/documents/Gaucher-Friesen-Kay-JPSP-Gendered-Wording-in-Job-ads.pdf) has shown that \
                    certain words are considered more masculine- or feminine-coded based on how appealing job descriptions containing these words \
                    seemed to male and female research participants and to what extent the participants felt that they 'belonged' in that occupation.")


    #demo.load(random_image, None, [images])
    choice1.change(open_ims, [adj1,choice1,seed1], [images1])
    choice2.change(open_ims, [adj2,choice2,seed2], [images2])
    adj1.change(open_ims, [adj1,choice1,seed1], [images1])
    adj2.change(open_ims, [adj2,choice2,seed2], [images2])
    seed1.change(open_ims, [adj1,choice1,seed1], [images1])
    seed2.change(open_ims, [adj2,choice2,seed2], [images2])

demo.launch()