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