Spaces:
Runtime error
Runtime error
import json | |
import gradio as gr | |
import os | |
from PIL import Image | |
import plotly.graph_objects as go | |
import plotly.express as px | |
clusters_12 = json.load(open("clusters/id_all_blip_clusters_12.json")) | |
clusters_24 = json.load(open("clusters/id_all_blip_clusters_24.json")) | |
clusters_48 = json.load(open("clusters/id_all_blip_clusters_48.json")) | |
clusters_by_size = { | |
12: clusters_12, | |
24: clusters_24, | |
48: clusters_48, | |
} | |
def show_cluster(cl_id, num_clusters): | |
cl_dct = clusters_by_size[num_clusters][cl_id] | |
images = [] | |
for i in range(6): | |
img_path = "/".join([st.replace("/", "") for st in cl_dct['img_path_list'][i].split("//")][3:]) | |
images.append((Image.open(os.path.join("identities-images", img_path)), "_".join([img_path.split("/")[0], img_path.split("/")[-1]]).replace('Photo_portrait_of_an_','').replace('Photo_portrait_of_a_','').replace('SD_v2_random_seeds_identity_','(SD v.2) ').replace('dataset-identities-dalle2_','(Dall-E 2) ').replace('SD_v1.4_random_seeds_identity_','(SD v.1.4) ').replace('_',' '))) | |
model_fig = go.Figure() | |
model_fig.add_trace(go.Bar(x=list(dict(cl_dct["labels_model"]).keys()), | |
y=list(dict(cl_dct["labels_model"]).values()), | |
marker_color=px.colors.qualitative.G10)) | |
gender_fig = go.Figure() | |
gender_fig.add_trace(go.Bar(x=list(dict(cl_dct["labels_gender"]).keys()), | |
y=list(dict(cl_dct["labels_gender"]).values()), | |
marker_color=px.colors.qualitative.G10)) | |
ethnicity_fig = go.Figure() | |
ethnicity_fig.add_trace(go.Bar(x=list(dict(cl_dct["labels_ethnicity"]).keys()), | |
y=list(dict(cl_dct["labels_ethnicity"]).values()), | |
marker_color=px.colors.qualitative.G10)) | |
return (len(cl_dct['img_path_list']), | |
gender_fig, | |
#dict(cl_dct["labels_model"]), | |
model_fig, | |
ethnicity_fig, | |
images) | |
with gr.Blocks() as demo: | |
gr.Markdown("# Cluster Explorer") | |
gr.HTML("""<span style="color:red">⚠️ <b>DISCLAIMER: the images displayed by this tool were generated by text-to-image models and may depict offensive stereotypes or contain explicit content.</b></span>""") | |
with gr.Row(): | |
num_clusters = gr.Radio([12, 24, 48], label="number of clusters") | |
cluster_id = gr.Number(precision=0, label="cluster id") | |
button = gr.Button(value="Go") | |
with gr.Column(): | |
a = gr.Text(label="Number of items in cluster") | |
gallery = gr.Gallery(label="Most representative images in cluster").style(grid=6) | |
with gr.Row(): | |
c = gr.Plot(label="Model makeup of cluster") | |
b = gr.Plot(label="Gender label makeup of cluster") | |
d = gr.Plot(label="Ethnicity label makeup of cluster") | |
button.click(fn=show_cluster, inputs=[cluster_id, num_clusters], outputs=[a,b,c,d, gallery]) | |
# demo = gr.Interface(fn=show_cluster, inputs=[gr.Slider(0, 50), gr.Radio([12, 24, 48])], outputs=["text", "text", "text", "text", gr.Gallery()]) | |
demo.launch(debug=True) | |