File size: 2,511 Bytes
61c7634
e15dae8
c9911aa
17bb1f6
 
fae45ed
61c7634
236866f
c34d9ea
4622c8d
 
8465f52
 
3ce1a28
34700d7
78f266b
34700d7
d30d4ce
684d9c0
921054e
ec11b9a
6f3fb83
62635cf
17bb1f6
5c5bd98
6f3fb83
34700d7
 
 
f4d85d5
 
6115563
31fec50
34700d7
 
925d019
 
62635cf
af84b0b
58bc1a3
1377bb8
f4d85d5
 
 
 
 
ed60eed
5c5bd98
8465f52
 
 
f4d85d5
 
 
 
2ce2e3c
f4d85d5
 
8465f52
f4d85d5
 
 
ec11b9a
f4d85d5
cf1f1df
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
from turtle import color, onclick
import streamlit as st
from PIL import Image, ImageOps
import glob
import json
import requests
import random
import io

random.seed(10)

if 'show' not in st.session_state:
    st.session_state.show = False

if 'example_idx' not in st.session_state:
    st.session_state.example_idx = 0

st.set_page_config(layout="wide")
st.markdown("**This is a demo of the *ImageCoDe* dataset. Sample an example on the left and compare all the images with index counter on the right. At the bottom there are buttons to show/hide the groundtruth!**")

col1, col2 = st.columns(2)

prefix = 'https://raw.githubusercontent.com/BennoKrojer/imagecode-val-set/main/image-sets-val/'
set2ids = json.load(open('set2ids.json', 'r'))
descriptions = json.load(open('valid_list.json', 'r'))

# example_idx = int(col1.number_input('Sample an example (description + corresponding images) from the validation set', value=0, min_value=0, max_value=len(descriptions)-1))
if col1.button('Sample an example (description + corresponding images) from the validation set'):
    st.session_state.example_idx = random.randint(0, len(descriptions)-1)
img_set, true_idx, descr = descriptions[st.session_state.example_idx]
true_idx = int(true_idx)
images = [prefix+'/'+img_set+'/'+i for i in set2ids[img_set]]
img_urls = images.copy()
index = int(col2.number_input('Image Index from 0 to 9', value=0, min_value=0, max_value=9))

if col1.button('Click to reveal/hide groundtruth image index (try to guess yourself first!)'):
    st.session_state.show = not st.session_state.show

col1.markdown(f'**Description for {img_set}**:')
col1.markdown(f'**{descr}**') 

big_img = images[index]
img = Image.open(io.BytesIO(requests.get(images[index], stream=True).content))
img_width, img_height = img.size
smaller = min(img_width, img_height)
images[index]= ImageOps.expand(img,border=smaller//18,fill='blue')

caps = list(range(10))
cap = str(index)

if st.session_state.show:
    caps[true_idx] = f'{true_idx} (TARGET IMAGE)'
    img = Image.open(io.BytesIO(requests.get(img_urls[index], stream=True).content))
    img_width, img_height = img.size
    smaller = min(img_width, img_height)
    images[true_idx] = ImageOps.expand(img,border=smaller//8,fill='green')
    if true_idx == index:
        cap = f'{true_idx} (TARGET IMAGE)'
else:
    caps[true_idx] = f'{true_idx}'
    if true_idx == index:
        cap = f'{true_idx}'

col1.image(big_img, use_column_width=True, caption=cap)
col2.image(images, width=175, caption=caps)