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()
|