File size: 3,210 Bytes
5de9fd6
 
 
 
61272e2
 
 
 
 
 
d4c9123
61272e2
 
 
5de9fd6
 
61272e2
 
 
 
 
5de9fd6
11c0789
5de9fd6
61272e2
 
 
11c0789
61272e2
 
 
 
11c0789
 
 
 
 
61272e2
11c0789
 
 
 
 
61272e2
11c0789
 
 
 
 
61272e2
11c0789
5de9fd6
 
 
 
 
 
 
61272e2
d4c9123
61272e2
d4c9123
11c0789
d4c9123
11c0789
61272e2
d4c9123
5de9fd6
d4c9123
 
 
 
61272e2
d4c9123
8ec9729
d4c9123
 
 
 
 
 
 
 
 
 
 
8ec9729
d4c9123
8ec9729
d4c9123
5de9fd6
d4c9123
5de9fd6
11c0789
 
 
5de9fd6
 
 
 
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import gradio as gr
import pandas as pd
from PIL import Image
import os
import sys

# Determine the absolute path to preferences.csv
current_dir = os.path.dirname(os.path.abspath(__file__))
csv_path = os.path.join(current_dir, 'preferences.csv')

# Check if preferences.csv exists
if not os.path.isfile(csv_path):
    print(f"Error: 'preferences.csv' not found at {csv_path}")
    sys.exit(1)

# Load metadata
try:
    df = pd.read_csv(csv_path)
except Exception as e:
    print(f"Error reading 'preferences.csv': {e}")
    sys.exit(1)

# Function to display image pairs
def show_image_pair(pair_id):
    try:
        record = df[df['pair_id'] == pair_id].iloc[0]
    except IndexError:
        return None, None, "Invalid Pair ID.", "", 0.0, "", 0.0, "", 0.0
    
    img1_path = os.path.join(current_dir, record['image1'])
    img2_path = os.path.join(current_dir, record['image2'])
    
    # Check if images exist
    if not os.path.isfile(img1_path):
        return None, None, "Image 1 not found.", "", 0.0, "", 0.0, "", 0.0
    if not os.path.isfile(img2_path):
        return None, None, "Image 2 not found.", "", 0.0, "", 0.0, "", 0.0
    
    try:
        img1 = Image.open(img1_path)
    except Exception as e:
        img1 = None
        print(f"Error opening Image 1: {e}")
    
    try:
        img2 = Image.open(img2_path)
    except Exception as e:
        img2 = None
        print(f"Error opening Image 2: {e}")
    
    return img1, img2, record['prompt'], record['label1'], record['label1_score'], record['label2'], record['label2_score'], record['label3'], record['label3_score']

# Create dropdown options
pair_ids = df['pair_id'].tolist()

# Define Gradio Interface
with gr.Blocks() as demo:
    gr.Markdown("# MID-Space Dataset Viewer")
    
    # Pair Selection Row
    with gr.Row():
        with gr.Column(scale=1):
            pair_id_input = gr.Dropdown(label="Select Pair ID", choices=pair_ids, value=pair_ids[0])
        with gr.Column(scale=1):
            show_button = gr.Button("Show Image Pair")
    
    # Images Row
    with gr.Row():
        with gr.Column(scale=1):
            img1 = gr.Image(label="Image 1")
        with gr.Column(scale=1):
            img2 = gr.Image(label="Image 2")
    
    # Scores Row
    with gr.Row():
        # Left Scores
        with gr.Column(scale=1):
            label1 = gr.Textbox(label="Label 1", interactive=False)
            label1_score = gr.Number(label="Label 1 Score", interactive=False)
            label2 = gr.Textbox(label="Label 2", interactive=False)
            label2_score = gr.Number(label="Label 2 Score", interactive=False)
        
        # Right Scores
        with gr.Column(scale=1):
            label3 = gr.Textbox(label="Label 3", interactive=False)
            label3_score = gr.Number(label="Label 3 Score", interactive=False)
    
    # Prompt Row
    with gr.Row():
        prompt = gr.Textbox(label="Prompt", interactive=False)
    
    # Define Button Click Action
    show_button.click(
        show_image_pair, 
        inputs=[pair_id_input], 
        outputs=[img1, img2, prompt, label1, label1_score, label2, label2_score, label3, label3_score]
    )

if __name__ == "__main__":
    demo.launch()