File size: 3,043 Bytes
2abad25
777259c
 
71da98f
2abad25
71da98f
0ba5e9f
 
 
 
 
 
71da98f
0ba5e9f
 
 
 
 
 
 
2abad25
777259c
71da98f
9c075ce
71da98f
bb286fb
2abad25
e043325
 
 
 
f8007c3
84cfbf6
ebf0660
71da98f
2abad25
 
01a7c30
bb286fb
c126fb9
7e69495
2abad25
 
71da98f
 
bb286fb
2abad25
71da98f
 
bb286fb
2abad25
01a7c30
 
 
 
 
bb286fb
71da98f
 
0ba5e9f
 
01a7c30
 
2abad25
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
from PIL import Image
import pandas as pd

def open_ims(adj, group):
    if group != '':
        if adj != '':
            if adj[0] in vowels:
                dirname='images/'+'Photo_portrait_of_an_'+ adj+'_'+ group.replace(' ','_')+'/Seed_'+ str(seed_choice)+'/'
            else:
                dirname='images/'+'Photo_portrait_of_a_'+ adj+ '_'+ group.replace(' ','_')+'/Seed_'+ str(seed_choice)+'/'
        else:
            if group[0] in vowels:
                dirname='images/'+'Photo_portrait_of_an_'+ group.replace(' ','_')+'/Seed_'+ str(seed_choice)+'/'
            else:
                dirname='images/'+'Photo_portrait_of_a_'+ group.replace(' ','_')+'/Seed_'+ str(seed_choice)+'/'
        imnames= os.listdir(dirname)
        images = [(Image.open(dirname+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()[:11]
f_adjectives = prompts['Fem-adj'].tolist()[:11]
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 model 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)
            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)
            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], [images1])
    choice2.change(open_ims, [adj2,choice2], [images2])
    adj1.change(open_ims, [adj1,choice1], [images1])
    adj2.change(open_ims, [adj2,choice2], [images2])


demo.launch()