import streamlit as st import pandas as pd import json import numpy as np # 读取 JSON 数据 with open('GenAI-Bench_tags.json', 'r') as file: data = json.load(file) with open('genai_image.json', 'r') as file: humanRatings = json.load(file) # Streamlit 页面标题 st.set_page_config(page_title="GenAI-Bench Dataset Viewer", page_icon=None, layout="wide", initial_sidebar_state="auto", menu_items=None) st.title('GenAI-Bench Dataset Viewer') # 多选框 basic_options = [] advanced_options = [] for i in data: data[i]['basic'].sort() data[i]['advanced'].sort() for basic in data[i]['basic']: if basic not in basic_options: basic_options.append(basic) for adv in data[i]['advanced']: if adv not in advanced_options: advanced_options.append(adv) data[i]['id'] = i # modles = ["DALLE_3","DeepFloyd_I_XL_v1","Midjourney_6","SDXL_2_1","SDXL_Base","SDXL_Turbo"] data[i]['DALLE_3'] = f"app/static/DALLE_3/{i}.jpeg" data[i]['DeepFloyd_I_XL_v1'] = f"app/static/DeepFloyd_I_XL_v1/{i}.jpeg" data[i]['Midjourney_6'] = f"app/static/Midjourney_6/{i}.jpeg" data[i]['SDXL_2_1'] = f"app/static/SDXL_2_1/{i}.jpeg" data[i]['SDXL_Base'] = f"app/static/SDXL_Base/{i}.jpeg" data[i]['SDXL_Turbo'] = f"app/static/SDXL_Turbo/{i}.jpeg" data[i]['DALLE_3_Human'] = round(np.mean(humanRatings[i]["models"]["DALLE_3"]), 1) data[i]['DeepFloyd_I_XL_v1_Human'] = round(np.mean(humanRatings[i]["models"]["DeepFloyd_I_XL_v1"]), 1) data[i]['Midjourney_6_Human'] = round(np.mean(humanRatings[i]["models"]["Midjourney_6"]), 1) data[i]['SDXL_2_1_Human'] = round(np.mean(humanRatings[i]["models"]["SDXL_2_1"]), 1) data[i]['SDXL_Base_Human'] = round(np.mean(humanRatings[i]["models"]["SDXL_Base"]), 1) data[i]['SDXL_Turbo_Human'] = round(np.mean(humanRatings[i]["models"]["SDXL_Turbo"]), 1) selected_basic = st.multiselect('Select Basic Skills:', basic_options) selected_advanced = st.multiselect('Select Advanced Skills:', advanced_options) # 筛选数据 filtered_data = [ data[item] for item in data if all(elem in data[item]['basic'] for elem in selected_basic) and all(advanced in data[item]['advanced'] for advanced in selected_advanced) ] # 显示筛选后的数据 if filtered_data: df = pd.DataFrame(filtered_data) df = df.reindex(columns=["id", "prompt", "basic", "advanced", "DALLE_3", "DALLE_3_Human", "DeepFloyd_I_XL_v1", "DeepFloyd_I_XL_v1_Human", "Midjourney_6", "Midjourney_6_Human", "SDXL_2_1", "SDXL_2_1_Human", "SDXL_Base", "SDXL_Base_Human", "SDXL_Turbo", "SDXL_Turbo_Human"]) st.dataframe(data=df, width = 4096, height = 800, column_config={ "name": "Data Explorer", "id": st.column_config.NumberColumn("ID", format="%d", width="small"), 'basic': st.column_config.ListColumn(label="Basic Skills", width="large", help=None), 'advanced': st.column_config.ListColumn(label="Advanced Skills", width="large", help=None), 'prompt': st.column_config.TextColumn(label="Prompt", width="large", help=None, disabled=None, required=None, default=None, max_chars=None, validate=None), "DALLE_3": st.column_config.ImageColumn(label="DALLE_3", width="small", help=None), "DALLE_3_Human": st.column_config.NumberColumn("Rating Human", format="%.1f", width="small", help="Rating Human for DALLE_3"), "DeepFloyd_I_XL_v1": st.column_config.ImageColumn(label="DeepFloyd", width="small", help="DeepFloyd_I_XL_v1"), "DeepFloyd_I_XL_v1_Human": st.column_config.NumberColumn("Rating Human", format="%.1f", width="small", help="Rating Human for DeepFloyd"), "Midjourney_6": st.column_config.ImageColumn(label="Midjourney", width="small", help="Midjourney_6"), "Midjourney_6_Human": st.column_config.NumberColumn("Rating Human", format="%.1f", width="small", help="Rating Human for Midjourney_6"), "SDXL_2_1": st.column_config.ImageColumn(label="SDXL_2_1", width="small", help=None), "SDXL_2_1_Human": st.column_config.NumberColumn("Rating Human", format="%.1f", width="small", help="Rating Human for SDXL_2_1"), "SDXL_Base": st.column_config.ImageColumn(label="SDXL_Base", width="small", help=None), "SDXL_Base_Human": st.column_config.NumberColumn("Rating Human", format="%.1f", width="small", help="Rating Human for SDXL_Base"), "SDXL_Turbo": st.column_config.ImageColumn(label="SDXL_Turbo", width="small", help=None), "SDXL_Turbo_Human": st.column_config.NumberColumn("Rating Human", format="%.1f", width="small", help="Rating Human for SDXL_Turbo"), }, hide_index=True, selection_mode="single-row") else: st.write("No data matches the selected filters.")