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