File size: 1,752 Bytes
19a6fbb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import clip
import json
import pandas as pd
import streamlit as st
import torch
import time

from utils import get_local_files

def preference_selection():
    annotation_projects = get_local_files("annotations/", get_details=True)
    if not annotation_projects:
        st.warning("No annotated data found.")
        return

    annotation_projects_df = pd.DataFrame(annotation_projects)
    annotation_projects_df['file_created'] = annotation_projects_df['file_created'].dt.strftime("%Y-%m-%d %H:%M:%S")
    annotation_projects_df['display_text'] = annotation_projects_df.apply(lambda x: f"ID: {x['file_name']} | Time Created: ({x['file_created']})", axis=1)

    annotation_project = st.selectbox("Select Annotation Project", options=annotation_projects_df['display_text'].tolist())
    annotation_project = annotation_projects_df[annotation_projects_df['display_text'] == annotation_project].iloc[0]
    with open(f"annotations/{annotation_project['file_name']}/annotations.json", "r") as f:
        annotations_dict: dict = json.load(f)

    annotations_df = pd.DataFrame(annotations_dict.items(), columns=['image_path', 'annotation'])
    annotations_df['image_path'] = annotations_df['image_path'].apply(lambda x: x.split('/')[-1])
    cols = st.columns(5)
    for i, row in annotations_df.head(4).iterrows():
        with cols[i]:
            st.image(f"images/{row['image_path']}", caption=row['annotation'])
    if len(annotations_df) > 4:
        with cols[4]:
            st.info(f"and more {len(annotations_df) - 4} images...")

    save_preference = st.button("Save Preferences")
    if save_preference:
        st.session_state['selected_dataset'] = annotation_project['file_name']
        st.success("Preferences Saved Successfully.")