Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from datasets import load_dataset | |
| import numpy as np | |
| st.set_page_config(page_title="High-Level dataset") | |
| FIELDS = ["scene", "action", "rationale", "object"] | |
| QS = { | |
| "scene": "Where is the picture taken?", | |
| "action": "What is the subject doing?", | |
| "rationale": "Why is the subject doing it?" | |
| } | |
| SPLITS = ["test", "train"] | |
| AVG_PURITY = 1.10 | |
| AVG_DIVERSITY = 0.872819 | |
| MIN_DIVERSITY = 0 | |
| MAX_DIVERSITY = 100 | |
| def load_data(split): | |
| dataset = load_dataset("michelecafagna26/hl") | |
| coco2id = {int(dataset[split][i]['file_name'].replace("COCO_train2014_", "").replace(".jpg", "")): i for i in | |
| range(len(dataset[split]))} | |
| return dataset, coco2id | |
| def write_obj(dataset, img_id, options, split, list_type="num", show_questions=False, | |
| show_conf=False): | |
| st.image(dataset[split][img_id]['image']) | |
| item_purity = np.mean([np.mean(dataset[split][img_id]['purity'][k]) for k in dataset[split][img_id]['purity']]) | |
| item_diversity = np.mean(list(dataset[split][img_id]['diversity'].values())) | |
| # normalize | |
| item_diversity = 1-(item_diversity-MIN_DIVERSITY)/(MAX_DIVERSITY-MIN_DIVERSITY) | |
| col1, col2 = st.columns(2) | |
| col1.metric(label="Diversity score", | |
| value=round(item_diversity, 2), | |
| delta=round(item_diversity - AVG_DIVERSITY, 2), | |
| help="Item's internal lexical diversity.\n Positive delta means higher then the average") | |
| col2.metric(label="Purity score", | |
| value=round(item_purity, 2), | |
| delta=round(item_purity - AVG_PURITY, 2), | |
| help="Item's internal semantic similarity.\n Positive delta means higher then the average") | |
| for field in options: | |
| st.markdown(f"## {field.capitalize()}") | |
| if show_questions and field != "object": | |
| st.markdown(f" Question: _{QS[field]}_") | |
| for n, annotation in enumerate(dataset[split][img_id][field]): | |
| col1, col2 = st.columns(2) | |
| if list_type == "num": | |
| col1.markdown(f"{n + 1}. {annotation}") | |
| else: | |
| col1.markdown(f"{list_type} {annotation}") | |
| if show_conf and field != "object": | |
| col2.metric(label="confidence score", | |
| value=dataset[split][img_id]['confidence'][field][n]) | |
| def main(): | |
| st.title('High-Level Dataset') | |
| show_questions = st.sidebar.checkbox('Questions') | |
| show_conf = st.sidebar.checkbox('Confidence scores') | |
| options = st.sidebar.multiselect( | |
| 'Choose the annotations', | |
| FIELDS, | |
| default=FIELDS) | |
| split = st.sidebar.selectbox( | |
| 'Split', | |
| SPLITS) | |
| dataset, coco2id = load_data(split) | |
| # sidebar | |
| choosen_image = st.selectbox( | |
| 'Select an image', | |
| list(coco2id.keys()), | |
| help="write a key like: 7603" | |
| ) | |
| write_obj(dataset, coco2id[choosen_image], options=options, split=split, list_type="num", | |
| show_questions=show_questions, show_conf=show_conf) | |
| if __name__ == "__main__": | |
| main() | |